MenuItemWrapperICS.java revision da10fdd1400ecfd8d7f2e55651dd528d0614dfc5
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 19da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownimport android.support.v7.view.ActionProvider; 20da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownimport android.support.v7.view.MenuItem; 21da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownimport android.support.v7.view.SubMenu; 22e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.view.View; 23e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 24e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesclass MenuItemWrapperICS extends MenuItemWrapperHC { 25e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 26e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes MenuItemWrapperICS(android.view.MenuItem object) { 27e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes super(object); 28e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 29e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 30e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 31e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public MenuItem setActionProvider(ActionProvider actionProvider) { 32e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes mWrappedObject.setActionProvider(new ActionProviderWrapper(actionProvider)); 33e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return this; 34e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 35e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 36e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 37e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public ActionProvider getActionProvider() { 38e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return ((ActionProviderWrapper) mWrappedObject.getActionProvider()).getWrappedObject(); 39e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 40e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 41e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 42e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean expandActionView() { 43e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.expandActionView(); 44e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 45e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 46e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 47e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean collapseActionView() { 48e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.collapseActionView(); 49e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 50e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 51e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 52e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean isActionViewExpanded() { 53e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.isActionViewExpanded(); 54e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 55e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 56e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 57e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public MenuItem setOnActionExpandListener(MenuItem.OnActionExpandListener listener) { 58e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes mWrappedObject.setOnActionExpandListener(new OnActionExpandListenerWrapper(listener)); 59e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return this; 60e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 61e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 62e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 63e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes MenuItem createMenuItemWrapper(android.view.MenuItem menuItem) { 64e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return new MenuItemWrapperICS(menuItem); 65e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 66e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 67e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 68e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes SubMenu createSubMenuWrapper(android.view.SubMenu subMenu) { 69e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return new SubMenuWrapperICS(subMenu); 70e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 71e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 72e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes private class OnActionExpandListenerWrapper extends BaseWrapper<MenuItem.OnActionExpandListener> 73e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes implements android.view.MenuItem.OnActionExpandListener { 74e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 75e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes OnActionExpandListenerWrapper(MenuItem.OnActionExpandListener object) { 76e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes super(object); 77e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 78e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 79e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 80e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean onMenuItemActionExpand(android.view.MenuItem item) { 81e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.onMenuItemActionExpand(getMenuItemWrapper(item)); 82e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 83e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 84e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 85e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean onMenuItemActionCollapse(android.view.MenuItem item) { 86e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.onMenuItemActionCollapse(getMenuItemWrapper(item)); 87e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 88e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 89e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 90e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes private class ActionProviderWrapper extends android.view.ActionProvider { 91e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 92e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes private final ActionProvider mWrappedObject; 93e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 94e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public ActionProviderWrapper(ActionProvider object) { 95e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes super(null); 96e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes mWrappedObject = object; 97e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 98e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 99e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 100e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public View onCreateActionView() { 101e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.onCreateActionView(); 102e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 103e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 104e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 105e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean onPerformDefaultAction() { 106e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.onPerformDefaultAction(); 107e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 108e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 109e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 110e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean hasSubMenu() { 111e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.hasSubMenu(); 112e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 113e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 114e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 115e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public void onPrepareSubMenu(android.view.SubMenu subMenu) { 116e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes mWrappedObject.onPrepareSubMenu(getSubMenuWrapper(subMenu)); 117e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 118e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 119e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes ActionProvider getWrappedObject() { 120e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject; 121e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 122e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 123e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 124e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes} 125