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