MenuItemWrapperICS.java revision 89208232f3b5d1451408d787872504a190bc7ee0
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 1989208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.content.Intent; 2089208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.graphics.drawable.Drawable; 21d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banesimport android.support.v4.internal.view.SupportMenuItem; 22d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banesimport android.support.v4.view.ActionProvider; 2389208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.support.v4.view.MenuItemCompat; 2489208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.view.ContextMenu; 2530837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.MenuItem; 2689208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.view.SubMenu; 27d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banesimport android.view.View; 28e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 2989208232f3b5d1451408d787872504a190bc7ee0Chris Banesclass MenuItemWrapperICS extends BaseMenuWrapper<android.view.MenuItem> implements SupportMenuItem { 30a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes private final boolean mEmulateProviderVisibilityOverride; 31a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes // Tracks the last requested visibility 32a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes private boolean mLastRequestVisible; 33a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes 34a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes MenuItemWrapperICS(android.view.MenuItem object, boolean emulateProviderVisibilityOverride) { 35e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes super(object); 36a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes mLastRequestVisible = object.isVisible(); 37a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes mEmulateProviderVisibilityOverride = emulateProviderVisibilityOverride; 38a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 39a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes 40a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes MenuItemWrapperICS(android.view.MenuItem object) { 41a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes this(object, true); 42a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 43a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes 44a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes @Override 4589208232f3b5d1451408d787872504a190bc7ee0Chris Banes public int getItemId() { 4689208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getItemId(); 4789208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 4889208232f3b5d1451408d787872504a190bc7ee0Chris Banes 4989208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 5089208232f3b5d1451408d787872504a190bc7ee0Chris Banes public int getGroupId() { 5189208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getGroupId(); 5289208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 5389208232f3b5d1451408d787872504a190bc7ee0Chris Banes 5489208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 5589208232f3b5d1451408d787872504a190bc7ee0Chris Banes public int getOrder() { 5689208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getOrder(); 5789208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 5889208232f3b5d1451408d787872504a190bc7ee0Chris Banes 5989208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 6089208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setTitle(CharSequence title) { 6189208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setTitle(title); 6289208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 6389208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 6489208232f3b5d1451408d787872504a190bc7ee0Chris Banes 6589208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 6689208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setTitle(int title) { 6789208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setTitle(title); 6889208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 6989208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 7089208232f3b5d1451408d787872504a190bc7ee0Chris Banes 7189208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 7289208232f3b5d1451408d787872504a190bc7ee0Chris Banes public CharSequence getTitle() { 7389208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getTitle(); 7489208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 7589208232f3b5d1451408d787872504a190bc7ee0Chris Banes 7689208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 7789208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setTitleCondensed(CharSequence title) { 7889208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setTitleCondensed(title); 7989208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 8089208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 8189208232f3b5d1451408d787872504a190bc7ee0Chris Banes 8289208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 8389208232f3b5d1451408d787872504a190bc7ee0Chris Banes public CharSequence getTitleCondensed() { 8489208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getTitleCondensed(); 8589208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 8689208232f3b5d1451408d787872504a190bc7ee0Chris Banes 8789208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 8889208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setIcon(Drawable icon) { 8989208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setIcon(icon); 9089208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 9189208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 9289208232f3b5d1451408d787872504a190bc7ee0Chris Banes 9389208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 9489208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setIcon(int iconRes) { 9589208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setIcon(iconRes); 9689208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 9789208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 9889208232f3b5d1451408d787872504a190bc7ee0Chris Banes 9989208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 10089208232f3b5d1451408d787872504a190bc7ee0Chris Banes public Drawable getIcon() { 10189208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getIcon(); 10289208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 10389208232f3b5d1451408d787872504a190bc7ee0Chris Banes 10489208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 10589208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setIntent(Intent intent) { 10689208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setIntent(intent); 10789208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 10889208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 10989208232f3b5d1451408d787872504a190bc7ee0Chris Banes 11089208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 11189208232f3b5d1451408d787872504a190bc7ee0Chris Banes public Intent getIntent() { 11289208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getIntent(); 11389208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 11489208232f3b5d1451408d787872504a190bc7ee0Chris Banes 11589208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 11689208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setShortcut(char numericChar, char alphaChar) { 11789208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setShortcut(numericChar, alphaChar); 11889208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 11989208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 12089208232f3b5d1451408d787872504a190bc7ee0Chris Banes 12189208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 12289208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setNumericShortcut(char numericChar) { 12389208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setNumericShortcut(numericChar); 12489208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 12589208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 12689208232f3b5d1451408d787872504a190bc7ee0Chris Banes 12789208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 12889208232f3b5d1451408d787872504a190bc7ee0Chris Banes public char getNumericShortcut() { 12989208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getNumericShortcut(); 13089208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 13189208232f3b5d1451408d787872504a190bc7ee0Chris Banes 13289208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 13389208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setAlphabeticShortcut(char alphaChar) { 13489208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setAlphabeticShortcut(alphaChar); 13589208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 13689208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 13789208232f3b5d1451408d787872504a190bc7ee0Chris Banes 13889208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 13989208232f3b5d1451408d787872504a190bc7ee0Chris Banes public char getAlphabeticShortcut() { 14089208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getAlphabeticShortcut(); 14189208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 14289208232f3b5d1451408d787872504a190bc7ee0Chris Banes 14389208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 14489208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setCheckable(boolean checkable) { 14589208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setCheckable(checkable); 14689208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 14789208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 14889208232f3b5d1451408d787872504a190bc7ee0Chris Banes 14989208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 15089208232f3b5d1451408d787872504a190bc7ee0Chris Banes public boolean isCheckable() { 15189208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.isCheckable(); 15289208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 15389208232f3b5d1451408d787872504a190bc7ee0Chris Banes 15489208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 15589208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setChecked(boolean checked) { 15689208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setChecked(checked); 15789208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 15889208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 15989208232f3b5d1451408d787872504a190bc7ee0Chris Banes 16089208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 16189208232f3b5d1451408d787872504a190bc7ee0Chris Banes public boolean isChecked() { 16289208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.isChecked(); 16389208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 16489208232f3b5d1451408d787872504a190bc7ee0Chris Banes 16589208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 166a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes public MenuItem setVisible(boolean visible) { 167a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes if (mEmulateProviderVisibilityOverride) { 168a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes mLastRequestVisible = visible; 169a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes // If we need to be visible, we need to check whether the ActionProvider overrides it 170a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes if (checkActionProviderOverrideVisibility()) { 171a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes return this; 172a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 173a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 174a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes return wrappedSetVisible(visible); 175e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 176e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 177e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 17889208232f3b5d1451408d787872504a190bc7ee0Chris Banes public boolean isVisible() { 17989208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.isVisible(); 18089208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 18189208232f3b5d1451408d787872504a190bc7ee0Chris Banes 18289208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 18389208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setEnabled(boolean enabled) { 18489208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setEnabled(enabled); 18589208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 18689208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 18789208232f3b5d1451408d787872504a190bc7ee0Chris Banes 18889208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 18989208232f3b5d1451408d787872504a190bc7ee0Chris Banes public boolean isEnabled() { 19089208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.isEnabled(); 19189208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 19289208232f3b5d1451408d787872504a190bc7ee0Chris Banes 19389208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 19489208232f3b5d1451408d787872504a190bc7ee0Chris Banes public boolean hasSubMenu() { 19589208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.hasSubMenu(); 19689208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 19789208232f3b5d1451408d787872504a190bc7ee0Chris Banes 19889208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 19989208232f3b5d1451408d787872504a190bc7ee0Chris Banes public SubMenu getSubMenu() { 20089208232f3b5d1451408d787872504a190bc7ee0Chris Banes return getSubMenuWrapper(mWrappedObject.getSubMenu()); 20189208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 20289208232f3b5d1451408d787872504a190bc7ee0Chris Banes 20389208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 20489208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) { 20589208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setOnMenuItemClickListener(menuItemClickListener != null ? 20689208232f3b5d1451408d787872504a190bc7ee0Chris Banes new OnMenuItemClickListenerWrapper(menuItemClickListener) : null); 20789208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 20889208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 20989208232f3b5d1451408d787872504a190bc7ee0Chris Banes 21089208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 21189208232f3b5d1451408d787872504a190bc7ee0Chris Banes public ContextMenu.ContextMenuInfo getMenuInfo() { 21289208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getMenuInfo(); 21389208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 21489208232f3b5d1451408d787872504a190bc7ee0Chris Banes 21589208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 21689208232f3b5d1451408d787872504a190bc7ee0Chris Banes public void setShowAsAction(int actionEnum) { 21789208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setShowAsAction(actionEnum); 21889208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 21989208232f3b5d1451408d787872504a190bc7ee0Chris Banes 22089208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 22189208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setShowAsActionFlags(int actionEnum) { 22289208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setShowAsActionFlags(actionEnum); 22389208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 22489208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 22589208232f3b5d1451408d787872504a190bc7ee0Chris Banes 22689208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 22789208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setActionView(View view) { 22889208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setActionView(view); 22989208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 23089208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 23189208232f3b5d1451408d787872504a190bc7ee0Chris Banes 23289208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 23389208232f3b5d1451408d787872504a190bc7ee0Chris Banes public MenuItem setActionView(int resId) { 23489208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setActionView(resId); 23589208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 23689208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 23789208232f3b5d1451408d787872504a190bc7ee0Chris Banes 23889208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 23989208232f3b5d1451408d787872504a190bc7ee0Chris Banes public View getActionView() { 24089208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.getActionView(); 24189208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 24289208232f3b5d1451408d787872504a190bc7ee0Chris Banes 24389208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 24430837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell public MenuItem setActionProvider(android.view.ActionProvider provider) { 24530837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell mWrappedObject.setActionProvider(provider); 246a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes if (provider != null && mEmulateProviderVisibilityOverride) { 247a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes checkActionProviderOverrideVisibility(); 248a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 24930837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell return this; 25030837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell } 25130837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell 25230837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell @Override 25330837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell public android.view.ActionProvider getActionProvider() { 25430837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell return mWrappedObject.getActionProvider(); 25530837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell } 25630837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell 25730837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell @Override 258e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean expandActionView() { 259e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.expandActionView(); 260e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 261e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 262e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 263e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean collapseActionView() { 264e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.collapseActionView(); 265e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 266e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 267e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 268e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean isActionViewExpanded() { 269e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.isActionViewExpanded(); 270e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 271e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 272e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 273e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public MenuItem setOnActionExpandListener(MenuItem.OnActionExpandListener listener) { 27489208232f3b5d1451408d787872504a190bc7ee0Chris Banes mWrappedObject.setOnActionExpandListener(listener); 27589208232f3b5d1451408d787872504a190bc7ee0Chris Banes return this; 27689208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 27789208232f3b5d1451408d787872504a190bc7ee0Chris Banes 27889208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 27989208232f3b5d1451408d787872504a190bc7ee0Chris Banes public SupportMenuItem setSupportOnActionExpandListener( 28089208232f3b5d1451408d787872504a190bc7ee0Chris Banes MenuItemCompat.OnActionExpandListener listener) { 2816e6abe6eb358db4c3932752249c8ac61dd3dab21Jeff Brown mWrappedObject.setOnActionExpandListener(listener != null ? 2826e6abe6eb358db4c3932752249c8ac61dd3dab21Jeff Brown new OnActionExpandListenerWrapper(listener) : null); 28389208232f3b5d1451408d787872504a190bc7ee0Chris Banes return null; 284e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 285e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 286d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes @Override 287d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes public SupportMenuItem setSupportActionProvider(ActionProvider actionProvider) { 288d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes mWrappedObject.setActionProvider(actionProvider != null ? 289d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes createActionProviderWrapper(actionProvider) : null); 290d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes return this; 291d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes } 292d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes 293d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes @Override 294d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes public ActionProvider getSupportActionProvider() { 295d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes ActionProviderWrapper providerWrapper = 296a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes (ActionProviderWrapper) mWrappedObject.getActionProvider(); 297a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes return providerWrapper != null ? providerWrapper.mInner : null; 298d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes } 299d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes 300d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes ActionProviderWrapper createActionProviderWrapper(ActionProvider provider) { 301d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes return new ActionProviderWrapper(provider); 302d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes } 303d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes 304a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes /** 305a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes * @return true if the ActionProvider has overriden the visibility 306a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes */ 307a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes final boolean checkActionProviderOverrideVisibility() { 308a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes if (mLastRequestVisible) { 309a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes ActionProvider provider = getSupportActionProvider(); 310a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes if (provider != null && provider.overridesItemVisibility() && !provider.isVisible()) { 311a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes wrappedSetVisible(false); 312a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes return true; 313a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 314a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 315a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes return false; 316a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 317a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes 318a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes final MenuItem wrappedSetVisible(boolean visible) { 319a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes return mWrappedObject.setVisible(visible); 320a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 321a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes 32289208232f3b5d1451408d787872504a190bc7ee0Chris Banes private class OnMenuItemClickListenerWrapper extends BaseWrapper<OnMenuItemClickListener> 32389208232f3b5d1451408d787872504a190bc7ee0Chris Banes implements android.view.MenuItem.OnMenuItemClickListener { 32489208232f3b5d1451408d787872504a190bc7ee0Chris Banes 32589208232f3b5d1451408d787872504a190bc7ee0Chris Banes OnMenuItemClickListenerWrapper(OnMenuItemClickListener object) { 32689208232f3b5d1451408d787872504a190bc7ee0Chris Banes super(object); 32789208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 32889208232f3b5d1451408d787872504a190bc7ee0Chris Banes 32989208232f3b5d1451408d787872504a190bc7ee0Chris Banes @Override 33089208232f3b5d1451408d787872504a190bc7ee0Chris Banes public boolean onMenuItemClick(android.view.MenuItem item) { 33189208232f3b5d1451408d787872504a190bc7ee0Chris Banes return mWrappedObject.onMenuItemClick(getMenuItemWrapper(item)); 33289208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 33389208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 33489208232f3b5d1451408d787872504a190bc7ee0Chris Banes 33589208232f3b5d1451408d787872504a190bc7ee0Chris Banes private class OnActionExpandListenerWrapper extends BaseWrapper<MenuItemCompat.OnActionExpandListener> 336e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes implements android.view.MenuItem.OnActionExpandListener { 337e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 33889208232f3b5d1451408d787872504a190bc7ee0Chris Banes OnActionExpandListenerWrapper(MenuItemCompat.OnActionExpandListener object) { 339e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes super(object); 340e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 341e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 342e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 343e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean onMenuItemActionExpand(android.view.MenuItem item) { 344e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.onMenuItemActionExpand(getMenuItemWrapper(item)); 345e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 346e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes 347e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes @Override 348e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes public boolean onMenuItemActionCollapse(android.view.MenuItem item) { 349e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes return mWrappedObject.onMenuItemActionCollapse(getMenuItemWrapper(item)); 350e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 351e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes } 352d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes 353d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes class ActionProviderWrapper extends android.view.ActionProvider { 354d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes final ActionProvider mInner; 355d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes 356d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes public ActionProviderWrapper(ActionProvider inner) { 357d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes super(inner.getContext()); 358d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes mInner = inner; 359a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes 360a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes if (mEmulateProviderVisibilityOverride) { 361a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes mInner.setVisibilityListener(new ActionProvider.VisibilityListener() { 362a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes @Override 363a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes public void onActionProviderVisibilityChanged(boolean isVisible) { 364a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes if (mInner.overridesItemVisibility() && mLastRequestVisible) { 365a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes wrappedSetVisible(isVisible); 366a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 367a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 368a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes }); 369a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 370d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes } 371d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes 372d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes @Override 373d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes public View onCreateActionView() { 374a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes if (mEmulateProviderVisibilityOverride) { 375a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes // This is a convenient place to hook in and check if we need to override the 376a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes // visibility after being created. 377a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes checkActionProviderOverrideVisibility(); 378a6fc0bcd9e65ed20193976cd02500152bb39a163Chris Banes } 379d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes return mInner.onCreateActionView(); 380d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes } 381d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes 382d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes @Override 383d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes public boolean onPerformDefaultAction() { 384d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes return mInner.onPerformDefaultAction(); 385d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes } 386d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes 387d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes @Override 388d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes public boolean hasSubMenu() { 389d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes return mInner.hasSubMenu(); 390d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes } 391d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes 392d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes @Override 393d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes public void onPrepareSubMenu(android.view.SubMenu subMenu) { 394d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes mInner.onPrepareSubMenu(getSubMenuWrapper(subMenu)); 395d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes } 396d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes } 397e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes} 398