Source code
package android.support.v7.internal.view.menu;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
import android.support.v4.internal.view.SupportMenuItem;
import android.support.v4.view.MenuItemCompat;
import android.view.ActionProvider;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.MenuItem.OnActionExpandListener;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.SubMenu;
import android.view.View;
public class ActionMenuItem implements SupportMenuItem {
private static final int CHECKABLE = 1;
private static final int CHECKED = 2;
private static final int ENABLED = 16;
private static final int EXCLUSIVE = 4;
private static final int HIDDEN = 8;
private static final int NO_ICON = 0;
private final int mCategoryOrder;
private OnMenuItemClickListener mClickListener;
private Context mContext;
private int mFlags = 16;
private final int mGroup;
private Drawable mIconDrawable;
private int mIconResId = 0;
private final int mId;
private Intent mIntent;
private final int mOrdering;
private char mShortcutAlphabeticChar;
private char mShortcutNumericChar;
private CharSequence mTitle;
private CharSequence mTitleCondensed;
public ActionMenuItem(Context context, int group, int id, int categoryOrder, int ordering, CharSequence title) {
this.mContext = context;
this.mId = id;
this.mGroup = group;
this.mCategoryOrder = categoryOrder;
this.mOrdering = ordering;
this.mTitle = title;
}
public char getAlphabeticShortcut() {
return this.mShortcutAlphabeticChar;
}
public int getGroupId() {
return this.mGroup;
}
public Drawable getIcon() {
return this.mIconDrawable;
}
public Intent getIntent() {
return this.mIntent;
}
public int getItemId() {
return this.mId;
}
public ContextMenuInfo getMenuInfo() {
return null;
}
public char getNumericShortcut() {
return this.mShortcutNumericChar;
}
public int getOrder() {
return this.mOrdering;
}
public SubMenu getSubMenu() {
return null;
}
public CharSequence getTitle() {
return this.mTitle;
}
public CharSequence getTitleCondensed() {
return this.mTitleCondensed != null ? this.mTitleCondensed : this.mTitle;
}
public boolean hasSubMenu() {
return false;
}
public boolean isCheckable() {
return (this.mFlags & 1) != 0;
}
public boolean isChecked() {
return (this.mFlags & 2) != 0;
}
public boolean isEnabled() {
return (this.mFlags & 16) != 0;
}
public boolean isVisible() {
return (this.mFlags & 8) == 0;
}
public MenuItem setAlphabeticShortcut(char alphaChar) {
this.mShortcutAlphabeticChar = alphaChar;
return this;
}
public MenuItem setCheckable(boolean checkable) {
this.mFlags = (checkable ? 1 : 0) | (this.mFlags & -2);
return this;
}
public ActionMenuItem setExclusiveCheckable(boolean exclusive) {
this.mFlags = (exclusive ? 4 : 0) | (this.mFlags & -5);
return this;
}
public MenuItem setChecked(boolean checked) {
this.mFlags = (checked ? 2 : 0) | (this.mFlags & -3);
return this;
}
public MenuItem setEnabled(boolean enabled) {
this.mFlags = (enabled ? 16 : 0) | (this.mFlags & -17);
return this;
}
public MenuItem setIcon(Drawable icon) {
this.mIconDrawable = icon;
this.mIconResId = 0;
return this;
}
public MenuItem setIcon(int iconRes) {
this.mIconResId = iconRes;
this.mIconDrawable = ContextCompat.getDrawable(this.mContext, iconRes);
return this;
}
public MenuItem setIntent(Intent intent) {
this.mIntent = intent;
return this;
}
public MenuItem setNumericShortcut(char numericChar) {
this.mShortcutNumericChar = numericChar;
return this;
}
public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) {
this.mClickListener = menuItemClickListener;
return this;
}
public MenuItem setShortcut(char numericChar, char alphaChar) {
this.mShortcutNumericChar = numericChar;
this.mShortcutAlphabeticChar = alphaChar;
return this;
}
public MenuItem setTitle(CharSequence title) {
this.mTitle = title;
return this;
}
public MenuItem setTitle(int title) {
this.mTitle = this.mContext.getResources().getString(title);
return this;
}
public MenuItem setTitleCondensed(CharSequence title) {
this.mTitleCondensed = title;
return this;
}
public MenuItem setVisible(boolean visible) {
this.mFlags = (visible ? 0 : 8) | (this.mFlags & 8);
return this;
}
public boolean invoke() {
if (this.mClickListener != null && this.mClickListener.onMenuItemClick(this)) {
return true;
}
if (this.mIntent == null) {
return false;
}
this.mContext.startActivity(this.mIntent);
return true;
}
public void setShowAsAction(int show) {
}
public SupportMenuItem setActionView(View actionView) {
throw new UnsupportedOperationException();
}
public View getActionView() {
return null;
}
public MenuItem setActionProvider(ActionProvider actionProvider) {
throw new UnsupportedOperationException();
}
public ActionProvider getActionProvider() {
throw new UnsupportedOperationException();
}
public SupportMenuItem setActionView(int resId) {
throw new UnsupportedOperationException();
}
public android.support.v4.view.ActionProvider getSupportActionProvider() {
return null;
}
public SupportMenuItem setSupportActionProvider(android.support.v4.view.ActionProvider actionProvider) {
throw new UnsupportedOperationException();
}
public SupportMenuItem setShowAsActionFlags(int actionEnum) {
setShowAsAction(actionEnum);
return this;
}
public boolean expandActionView() {
return false;
}
public boolean collapseActionView() {
return false;
}
public boolean isActionViewExpanded() {
return false;
}
public MenuItem setOnActionExpandListener(OnActionExpandListener listener) {
throw new UnsupportedOperationException();
}
public SupportMenuItem setSupportOnActionExpandListener(MenuItemCompat.OnActionExpandListener listener) {
return this;
}
}