127aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn/* 227aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * Copyright (C) 2011 The Android Open Source Project 327aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * 427aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 527aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * you may not use this file except in compliance with the License. 627aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * You may obtain a copy of the License at 727aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * 827aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 927aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * 1027aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * Unless required by applicable law or agreed to in writing, software 1127aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 1227aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1327aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * See the License for the specific language governing permissions and 1427aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * limitations under the License. 1527aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn */ 1627aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn 1727aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackbornpackage android.support.v4.view; 1827aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn 1927aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackbornimport android.view.MenuItem; 2027aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn 2127aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn/** 220574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link android.view.Menu} 230574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion. 2427aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn */ 2527aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackbornpublic class MenuCompat { 261935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov 2727aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn /** 2827aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * Interface for the full API. 2927aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn */ 3027aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn interface MenuVersionImpl { 3127aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn public boolean setShowAsAction(MenuItem item, int actionEnum); 3227aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn } 3327aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn 3427aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn /** 3527aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * Interface implementation that doesn't use anything about v4 APIs. 3627aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn */ 3727aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn static class BaseMenuVersionImpl implements MenuVersionImpl { 3827aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn @Override 3927aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn public boolean setShowAsAction(MenuItem item, int actionEnum) { 4027aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn return false; 4127aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn } 4227aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn } 4327aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn 4427aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn /** 4527aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * Interface implementation for devices with at least v11 APIs. 4627aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn */ 4727aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn static class HoneycombMenuVersionImpl implements MenuVersionImpl { 4827aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn @Override 4927aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn public boolean setShowAsAction(MenuItem item, int actionEnum) { 501935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov MenuItemCompatHoneycomb.setShowAsAction(item, actionEnum); 5127aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn return true; 5227aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn } 5327aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn } 5427aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn 5527aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn /** 5627aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * Select the correct implementation to use for the current platform. 5727aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn */ 5827aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn static final MenuVersionImpl IMPL; 5927aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn static { 6027aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn if (android.os.Build.VERSION.SDK_INT >= 11) { 6127aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn IMPL = new HoneycombMenuVersionImpl(); 6227aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn } else { 6327aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn IMPL = new BaseMenuVersionImpl(); 6427aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn } 6527aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn } 6627aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn 6727aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn // ------------------------------------------------------------------- 6827aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn 6927aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn /** 7027aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * Call {@link MenuItem#setShowAsAction(int) MenuItem.setShowAsAction()}. 710574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If running on a pre-{@link android.os.Build.VERSION_CODES#HONEYCOMB} device, 7227aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn * does nothing and returns false. Otherwise returns true. 731935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * 740574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @deprecated Use {@link MenuItemCompat#setShowAsAction(MenuItem, int) 750574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * MenuItemCompat.setShowAsAction(MenuItem, int)} 760574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov 7727aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn */ 7827aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn public static boolean setShowAsAction(MenuItem item, int actionEnum) { 7927aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn return IMPL.setShowAsAction(item, actionEnum); 8027aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn } 8127aea04b07c1fafa0f815aa4f80374a9e051b41cDianne Hackborn} 82