ActionMenuItem.java revision 33b974393b6fadcefc896ec4a0f9b66724f61e9f
133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell/* 233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * Copyright (C) 2010 The Android Open Source Project 333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * 433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * you may not use this file except in compliance with the License. 633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * You may obtain a copy of the License at 733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * 833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * http://www.apache.org/licenses/LICENSE-2.0 933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * 1033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * Unless required by applicable law or agreed to in writing, software 1133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * distributed under the License is distributed on an "AS IS" BASIS, 1233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * See the License for the specific language governing permissions and 1433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * limitations under the License. 1533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell */ 1633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 1733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellpackage com.android.internal.view.menu; 1833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 1933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.content.Context; 2033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.content.Intent; 2133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.graphics.drawable.Drawable; 2233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.MenuItem; 2333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.SubMenu; 2433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.ContextMenu.ContextMenuInfo; 2533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 2633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell/** 2733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * @hide 2833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell */ 2933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellpublic class ActionMenuItem implements MenuItem { 3033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private final int mId; 3133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private final int mGroup; 3233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private final int mCategoryOrder; 3333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private final int mOrdering; 3433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 3533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private CharSequence mTitle; 3633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private CharSequence mTitleCondensed; 3733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private Intent mIntent; 3833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private char mShortcutNumericChar; 3933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private char mShortcutAlphabeticChar; 4033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 4133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private Drawable mIconDrawable; 4233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private int mIconResId = NO_ICON; 4333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 4433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private Context mContext; 4533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 4633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private MenuItem.OnMenuItemClickListener mClickListener; 4733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 4833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private static final int NO_ICON = 0; 4933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 5033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private int mFlags = ENABLED; 5133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private static final int CHECKABLE = 0x00000001; 5233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private static final int CHECKED = 0x00000002; 5333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private static final int EXCLUSIVE = 0x00000004; 5433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private static final int HIDDEN = 0x00000008; 5533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private static final int ENABLED = 0x00000010; 5633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 5733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public ActionMenuItem(Context context, int group, int id, int categoryOrder, int ordering, 5833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell CharSequence title) { 5933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mContext = context; 6033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mId = id; 6133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mGroup = group; 6233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mCategoryOrder = categoryOrder; 6333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mOrdering = ordering; 6433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mTitle = title; 6533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 6633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 6733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public char getAlphabeticShortcut() { 6833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mShortcutAlphabeticChar; 6933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 7033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 7133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public int getGroupId() { 7233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mGroup; 7333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 7433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 7533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public Drawable getIcon() { 7633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mIconDrawable; 7733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 7833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 7933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public Intent getIntent() { 8033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mIntent; 8133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 8233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 8333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public int getItemId() { 8433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mId; 8533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 8633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 8733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public ContextMenuInfo getMenuInfo() { 8833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return null; 8933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 9033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 9133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public char getNumericShortcut() { 9233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mShortcutNumericChar; 9333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 9433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 9533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public int getOrder() { 9633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mOrdering; 9733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 9833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 9933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public SubMenu getSubMenu() { 10033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return null; 10133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 10233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 10333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public CharSequence getTitle() { 10433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mTitle; 10533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 10633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 10733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public CharSequence getTitleCondensed() { 10833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mTitleCondensed; 10933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 11033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 11133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean hasSubMenu() { 11233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return false; 11333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 11433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 11533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean isCheckable() { 11633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return (mFlags & CHECKABLE) != 0; 11733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 11833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 11933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean isChecked() { 12033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return (mFlags & CHECKED) != 0; 12133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 12233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 12333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean isEnabled() { 12433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return (mFlags & ENABLED) != 0; 12533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 12633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 12733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean isVisible() { 12833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return (mFlags & HIDDEN) == 0; 12933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 13033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 13133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setAlphabeticShortcut(char alphaChar) { 13233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mShortcutAlphabeticChar = alphaChar; 13333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 13433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 13533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 13633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setCheckable(boolean checkable) { 13733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mFlags = (mFlags & ~CHECKABLE) | (checkable ? CHECKABLE : 0); 13833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 13933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 14033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 14133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public ActionMenuItem setExclusiveCheckable(boolean exclusive) { 14233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mFlags = (mFlags & ~EXCLUSIVE) | (exclusive ? EXCLUSIVE : 0); 14333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 14433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 14533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 14633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setChecked(boolean checked) { 14733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mFlags = (mFlags & ~CHECKED) | (checked ? CHECKED : 0); 14833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 14933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 15033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 15133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setEnabled(boolean enabled) { 15233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mFlags = (mFlags & ~ENABLED) | (enabled ? ENABLED : 0); 15333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 15433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 15533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 15633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setIcon(Drawable icon) { 15733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mIconDrawable = icon; 15833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mIconResId = NO_ICON; 15933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 16033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 16133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 16233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setIcon(int iconRes) { 16333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mIconResId = iconRes; 16433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mIconDrawable = mContext.getResources().getDrawable(iconRes); 16533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 16633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 16733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 16833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setIntent(Intent intent) { 16933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mIntent = intent; 17033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 17133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 17233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 17333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setNumericShortcut(char numericChar) { 17433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mShortcutNumericChar = numericChar; 17533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 17633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 17733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 17833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) { 17933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mClickListener = menuItemClickListener; 18033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 18133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 18233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 18333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setShortcut(char numericChar, char alphaChar) { 18433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mShortcutNumericChar = numericChar; 18533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mShortcutAlphabeticChar = alphaChar; 18633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 18733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 18833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 18933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setTitle(CharSequence title) { 19033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mTitle = title; 19133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 19233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 19333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 19433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setTitle(int title) { 19533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mTitle = mContext.getResources().getString(title); 19633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 19733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 19833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 19933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setTitleCondensed(CharSequence title) { 20033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mTitleCondensed = title; 20133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 20233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 20333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 20433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem setVisible(boolean visible) { 20533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mFlags = (mFlags & HIDDEN) | (visible ? 0 : HIDDEN); 20633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return this; 20733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 20833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 20933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean invoke() { 21033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (mClickListener != null && mClickListener.onMenuItemClick(this)) { 21133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return true; 21233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 21333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 21433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (mIntent != null) { 21533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mContext.startActivity(mIntent); 21633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return true; 21733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 21833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 21933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return false; 22033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 22133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell} 222