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