ActionMenuItemView.java revision 96675b1df3969f2d313b68f60ed9fa36805db8ce
196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell/* 296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * Copyright (C) 2010 The Android Open Source Project 396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * 496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * you may not use this file except in compliance with the License. 696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * You may obtain a copy of the License at 796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * 896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * http://www.apache.org/licenses/LICENSE-2.0 996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * 1096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * Unless required by applicable law or agreed to in writing, software 1196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * distributed under the License is distributed on an "AS IS" BASIS, 1296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * See the License for the specific language governing permissions and 1496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * limitations under the License. 1596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell */ 1696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 1796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powellpackage com.android.internal.view.menu; 1896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 1996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powellimport android.content.Context; 2096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powellimport android.graphics.drawable.Drawable; 2196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powellimport android.util.AttributeSet; 2296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powellimport android.view.SoundEffectConstants; 2396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powellimport android.view.View; 2496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powellimport android.widget.ImageButton; 2596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 2696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell/** 2796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell * @hide 2896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell */ 2996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powellpublic class ActionMenuItemView extends ImageButton implements MenuView.ItemView { 3096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell private static final String TAG = "ActionMenuItemView"; 3196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 3296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell private MenuItemImpl mItemData; 3396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell private CharSequence mTitle; 3496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell private MenuBuilder.ItemInvoker mItemInvoker; 3596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 3696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public ActionMenuItemView(Context context) { 3796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell this(context, null); 3896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 3996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 4096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public ActionMenuItemView(Context context, AttributeSet attrs) { 4196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell this(context, attrs, com.android.internal.R.attr.actionButtonStyle); 4296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 4396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 4496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public ActionMenuItemView(Context context, AttributeSet attrs, int defStyle) { 4596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell super(context, attrs, defStyle); 4696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 4796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 4896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public MenuItemImpl getItemData() { 4996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell return mItemData; 5096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 5196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 5296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public void initialize(MenuItemImpl itemData, int menuType) { 5396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell mItemData = itemData; 5496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 5596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell setClickable(true); 5696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell setFocusable(true); 5796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell setTitle(itemData.getTitle()); 5896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell setIcon(itemData.getIcon()); 5996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell setId(itemData.getItemId()); 6096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 6196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell setVisibility(itemData.isVisible() ? View.VISIBLE : View.GONE); 6296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell setEnabled(itemData.isEnabled()); 6396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 6496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 6596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell @Override 6696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public boolean performClick() { 6796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell // Let the view's listener have top priority 6896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell if (super.performClick()) { 6996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell return true; 7096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 7196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 7296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell if (mItemInvoker != null && mItemInvoker.invokeItem(mItemData)) { 7396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell playSoundEffect(SoundEffectConstants.CLICK); 7496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell return true; 7596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } else { 7696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell return false; 7796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 7896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 7996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 8096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public void setItemInvoker(MenuBuilder.ItemInvoker invoker) { 8196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell mItemInvoker = invoker; 8296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 8396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 8496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public boolean prefersCondensedTitle() { 8596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell return false; 8696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 8796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 8896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public void setCheckable(boolean checkable) { 8996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell // TODO Support checkable action items 9096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 9196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 9296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public void setChecked(boolean checked) { 9396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell // TODO Support checkable action items 9496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 9596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 9696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public void setIcon(Drawable icon) { 9796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell setImageDrawable(icon); 9896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 9996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 10096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public void setShortcut(boolean showShortcut, char shortcutKey) { 10196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell // Action buttons don't show text for shortcut keys. 10296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 10396675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 10496675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public void setTitle(CharSequence title) { 10596675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell mTitle = title; 10696675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 10796675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 10896675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell public boolean showsIcon() { 10996675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell return true; 11096675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell } 11196675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell 11296675b1df3969f2d313b68f60ed9fa36805db8ceAdam Powell} 113