1e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes/*
2e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * Copyright (C) 2012 The Android Open Source Project
3e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *
4e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * Licensed under the Apache License, Version 2.0 (the "License");
5e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * you may not use this file except in compliance with the License.
6e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * You may obtain a copy of the License at
7e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *
8e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *      http://www.apache.org/licenses/LICENSE-2.0
9e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *
10e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * Unless required by applicable law or agreed to in writing, software
11e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * distributed under the License is distributed on an "AS IS" BASIS,
12e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * See the License for the specific language governing permissions and
14e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * limitations under the License.
15e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes */
16e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
17da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownpackage android.support.v7.internal.view.menu;
18e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
19e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.content.ComponentName;
20d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banesimport android.content.Context;
21e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.content.Intent;
2230837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.support.v4.internal.view.SupportMenu;
2330837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.support.v4.internal.view.SupportMenuItem;
24e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.view.KeyEvent;
25d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banesimport android.view.Menu;
2630837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.MenuItem;
2730837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.SubMenu;
28e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
29d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes/**
30d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes * Wraps a support {@link SupportMenu} as a framework {@link android.view.Menu}
31d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes * @hide
32d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes */
33d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banesclass MenuWrapperICS extends BaseMenuWrapper<SupportMenu> implements Menu {
34e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
35d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes    MenuWrapperICS(Context context, SupportMenu object) {
36d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes        super(context, object);
37e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
38e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
39e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
40e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(CharSequence title) {
41e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(title));
42e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
43e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
44e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
45e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(int titleRes) {
46e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(titleRes));
47e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
48e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
49e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
50e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(int groupId, int itemId, int order, CharSequence title) {
51e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(groupId, itemId, order, title));
52e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
53e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
54e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
55e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(int groupId, int itemId, int order, int titleRes) {
56e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(groupId, itemId, order, titleRes));
57e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
58e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
59e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
60e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(CharSequence title) {
61e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(mWrappedObject.addSubMenu(title));
62e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
63e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
64e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
65e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(int titleRes) {
66e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(mWrappedObject.addSubMenu(titleRes));
67e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
68e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
69e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
70e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) {
71e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(mWrappedObject.addSubMenu(groupId, itemId, order, title));
72e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
73e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
74e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
75e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) {
76e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(
77e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes                mWrappedObject.addSubMenu(groupId, itemId, order, titleRes));
78e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
79e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
80e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
81e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public int addIntentOptions(int groupId, int itemId, int order, ComponentName caller,
82e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) {
83e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        android.view.MenuItem[] items = null;
84e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        if (outSpecificItems != null) {
85e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            items = new android.view.MenuItem[outSpecificItems.length];
86e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
87e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
88e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        int result = mWrappedObject
89e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes                .addIntentOptions(groupId, itemId, order, caller, specifics, intent, flags, items);
90e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
91e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        if (items != null) {
92e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            for (int i = 0, z = items.length; i < z; i++) {
93e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes                outSpecificItems[i] = getMenuItemWrapper(items[i]);
94e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            }
95e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
96e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
97e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return result;
98e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
99e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
100e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
101e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void removeItem(int id) {
102e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        internalRemoveItem(id);
103e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.removeItem(id);
104e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
105e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
106e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
107e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void removeGroup(int groupId) {
108e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        internalRemoveGroup(groupId);
109e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.removeGroup(groupId);
110e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
111e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
112e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
113e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void clear() {
114e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        internalClear();
115e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.clear();
116e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
117e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
118e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
119e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setGroupCheckable(int group, boolean checkable, boolean exclusive) {
120e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setGroupCheckable(group, checkable, exclusive);
121e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
122e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
123e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
124e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setGroupVisible(int group, boolean visible) {
125e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setGroupVisible(group, visible);
126e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
127e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
128e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
129e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setGroupEnabled(int group, boolean enabled) {
130e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setGroupEnabled(group, enabled);
131e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
132e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
133e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
134e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean hasVisibleItems() {
135e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.hasVisibleItems();
136e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
137e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
138e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
139e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem findItem(int id) {
140e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.findItem(id));
141e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
142e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
143e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
144e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public int size() {
145e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.size();
146e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
147e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
148e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
149e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem getItem(int index) {
150e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.getItem(index));
151e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
152e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
153e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
154e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void close() {
155e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.close();
156e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
157e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
158e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
159e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean performShortcut(int keyCode, KeyEvent event, int flags) {
160e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.performShortcut(keyCode, event, flags);
161e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
162e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
163e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
164e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean isShortcutKey(int keyCode, KeyEvent event) {
165e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.isShortcutKey(keyCode, event);
166e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
167e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
168e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
169e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean performIdentifierAction(int id, int flags) {
170e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.performIdentifierAction(id, flags);
171e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
172e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
173e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
174e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setQwertyMode(boolean isQwerty) {
175e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setQwertyMode(isQwerty);
176e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
177e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes}
178