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