MenuWrapperICS.java revision e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7
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
17e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banespackage android.support.appcompat.view.menu;
18e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
19e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.content.ComponentName;
20e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.content.Intent;
21e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.support.appcompat.view.Menu;
22e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.support.appcompat.view.MenuItem;
23e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.support.appcompat.view.SubMenu;
24e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.view.KeyEvent;
25e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
26e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesclass MenuWrapperHC extends BaseMenuWrapper<android.view.Menu> implements Menu {
27e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
28e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    MenuWrapperHC(android.view.Menu object) {
29e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        super(object);
30e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
31e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
32e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
33e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(CharSequence title) {
34e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(title));
35e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
36e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
37e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
38e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(int titleRes) {
39e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(titleRes));
40e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
41e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
42e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
43e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(int groupId, int itemId, int order, CharSequence title) {
44e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(groupId, itemId, order, title));
45e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
46e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
47e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
48e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(int groupId, int itemId, int order, int titleRes) {
49e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(groupId, itemId, order, titleRes));
50e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
51e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
52e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
53e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(CharSequence title) {
54e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(mWrappedObject.addSubMenu(title));
55e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
56e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
57e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
58e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(int titleRes) {
59e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(mWrappedObject.addSubMenu(titleRes));
60e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
61e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
62e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
63e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) {
64e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(mWrappedObject.addSubMenu(groupId, itemId, order, title));
65e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
66e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
67e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
68e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) {
69e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(
70e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes                mWrappedObject.addSubMenu(groupId, itemId, order, titleRes));
71e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
72e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
73e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
74e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public int addIntentOptions(int groupId, int itemId, int order, ComponentName caller,
75e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) {
76e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        android.view.MenuItem[] items = null;
77e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        if (outSpecificItems != null) {
78e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            items = new android.view.MenuItem[outSpecificItems.length];
79e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
80e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
81e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        int result = mWrappedObject
82e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes                .addIntentOptions(groupId, itemId, order, caller, specifics, intent, flags, items);
83e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
84e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        if (items != null) {
85e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            for (int i = 0, z = items.length; i < z; i++) {
86e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes                outSpecificItems[i] = getMenuItemWrapper(items[i]);
87e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            }
88e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
89e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
90e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return result;
91e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
92e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
93e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
94e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void removeItem(int id) {
95e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        internalRemoveItem(id);
96e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.removeItem(id);
97e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
98e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
99e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
100e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void removeGroup(int groupId) {
101e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        internalRemoveGroup(groupId);
102e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.removeGroup(groupId);
103e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
104e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
105e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
106e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void clear() {
107e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        internalClear();
108e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.clear();
109e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
110e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
111e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
112e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setGroupCheckable(int group, boolean checkable, boolean exclusive) {
113e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setGroupCheckable(group, checkable, exclusive);
114e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
115e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
116e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
117e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setGroupVisible(int group, boolean visible) {
118e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setGroupVisible(group, visible);
119e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
120e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
121e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
122e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setGroupEnabled(int group, boolean enabled) {
123e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setGroupEnabled(group, enabled);
124e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
125e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
126e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
127e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean hasVisibleItems() {
128e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.hasVisibleItems();
129e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
130e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
131e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
132e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem findItem(int id) {
133e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.findItem(id));
134e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
135e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
136e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
137e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public int size() {
138e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.size();
139e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
140e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
141e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
142e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem getItem(int index) {
143e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.getItem(index));
144e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
145e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
146e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
147e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void close() {
148e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.close();
149e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
150e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
151e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
152e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean performShortcut(int keyCode, KeyEvent event, int flags) {
153e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.performShortcut(keyCode, event, flags);
154e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
155e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
156e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
157e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean isShortcutKey(int keyCode, KeyEvent event) {
158e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.isShortcutKey(keyCode, event);
159e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
160e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
161e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
162e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean performIdentifierAction(int id, int flags) {
163e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.performIdentifierAction(id, flags);
164e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
165e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
166e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
167e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setQwertyMode(boolean isQwerty) {
168e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setQwertyMode(isQwerty);
169e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
170e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
171e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
172e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    MenuItem createMenuItemWrapper(android.view.MenuItem menuItem) {
173e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return new MenuItemWrapperHC(menuItem);
174e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
175e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
176e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
177e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    SubMenu createSubMenuWrapper(android.view.SubMenu subMenu) {
178e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return new SubMenuWrapperHC(subMenu);
179e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
180e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
181e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes}
182