1 package com.actionbarsherlock.internal.view.menu;
3 import android.content.Intent;
4 import android.graphics.drawable.Drawable;
5 import android.view.View;
6 import android.view.ContextMenu.ContextMenuInfo;
7 import com.actionbarsherlock.internal.view.ActionProviderWrapper;
8 import com.actionbarsherlock.view.ActionProvider;
9 import com.actionbarsherlock.view.MenuItem;
10 import com.actionbarsherlock.view.SubMenu;
12 public class MenuItemWrapper implements MenuItem, android.view.MenuItem.OnMenuItemClickListener {
13 private final android.view.MenuItem mNativeItem;
14 private SubMenu mSubMenu = null;
15 private OnMenuItemClickListener mMenuItemClickListener = null;
16 private OnActionExpandListener mActionExpandListener = null;
17 private android.view.MenuItem.OnActionExpandListener mNativeActionExpandListener = null;
20 public MenuItemWrapper(android.view.MenuItem nativeItem) {
21 if (nativeItem == null) {
22 throw new IllegalStateException("Wrapped menu item cannot be null.");
24 mNativeItem = nativeItem;
29 public int getItemId() {
30 return mNativeItem.getItemId();
34 public int getGroupId() {
35 return mNativeItem.getGroupId();
39 public int getOrder() {
40 return mNativeItem.getOrder();
44 public MenuItem setTitle(CharSequence title) {
45 mNativeItem.setTitle(title);
50 public MenuItem setTitle(int title) {
51 mNativeItem.setTitle(title);
56 public CharSequence getTitle() {
57 return mNativeItem.getTitle();
61 public MenuItem setTitleCondensed(CharSequence title) {
62 mNativeItem.setTitleCondensed(title);
67 public CharSequence getTitleCondensed() {
68 return mNativeItem.getTitleCondensed();
72 public MenuItem setIcon(Drawable icon) {
73 mNativeItem.setIcon(icon);
78 public MenuItem setIcon(int iconRes) {
79 mNativeItem.setIcon(iconRes);
84 public Drawable getIcon() {
85 return mNativeItem.getIcon();
89 public MenuItem setIntent(Intent intent) {
90 mNativeItem.setIntent(intent);
95 public Intent getIntent() {
96 return mNativeItem.getIntent();
100 public MenuItem setShortcut(char numericChar, char alphaChar) {
101 mNativeItem.setShortcut(numericChar, alphaChar);
106 public MenuItem setNumericShortcut(char numericChar) {
107 mNativeItem.setNumericShortcut(numericChar);
112 public char getNumericShortcut() {
113 return mNativeItem.getNumericShortcut();
117 public MenuItem setAlphabeticShortcut(char alphaChar) {
118 mNativeItem.setAlphabeticShortcut(alphaChar);
123 public char getAlphabeticShortcut() {
124 return mNativeItem.getAlphabeticShortcut();
128 public MenuItem setCheckable(boolean checkable) {
129 mNativeItem.setCheckable(checkable);
134 public boolean isCheckable() {
135 return mNativeItem.isCheckable();
139 public MenuItem setChecked(boolean checked) {
140 mNativeItem.setChecked(checked);
145 public boolean isChecked() {
146 return mNativeItem.isChecked();
150 public MenuItem setVisible(boolean visible) {
151 mNativeItem.setVisible(visible);
156 public boolean isVisible() {
157 return mNativeItem.isVisible();
161 public MenuItem setEnabled(boolean enabled) {
162 mNativeItem.setEnabled(enabled);
167 public boolean isEnabled() {
168 return mNativeItem.isEnabled();
172 public boolean hasSubMenu() {
173 return mNativeItem.hasSubMenu();
177 public SubMenu getSubMenu() {
178 if (hasSubMenu() && (mSubMenu == null)) {
179 mSubMenu = new SubMenuWrapper(mNativeItem.getSubMenu());
185 public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) {
186 mMenuItemClickListener = menuItemClickListener;
187 //Register ourselves as the listener to proxy
188 mNativeItem.setOnMenuItemClickListener(this);
193 public boolean onMenuItemClick(android.view.MenuItem item) {
194 if (mMenuItemClickListener != null) {
195 return mMenuItemClickListener.onMenuItemClick(this);
201 public ContextMenuInfo getMenuInfo() {
202 return mNativeItem.getMenuInfo();
206 public void setShowAsAction(int actionEnum) {
207 mNativeItem.setShowAsAction(actionEnum);
211 public MenuItem setShowAsActionFlags(int actionEnum) {
212 mNativeItem.setShowAsActionFlags(actionEnum);
217 public MenuItem setActionView(View view) {
218 mNativeItem.setActionView(view);
223 public MenuItem setActionView(int resId) {
224 mNativeItem.setActionView(resId);
229 public View getActionView() {
230 return mNativeItem.getActionView();
234 public MenuItem setActionProvider(ActionProvider actionProvider) {
235 mNativeItem.setActionProvider(new ActionProviderWrapper(actionProvider));
240 public ActionProvider getActionProvider() {
241 android.view.ActionProvider nativeProvider = mNativeItem.getActionProvider();
242 if (nativeProvider != null && nativeProvider instanceof ActionProviderWrapper) {
243 return ((ActionProviderWrapper)nativeProvider).unwrap();
249 public boolean expandActionView() {
250 return mNativeItem.expandActionView();
254 public boolean collapseActionView() {
255 return mNativeItem.collapseActionView();
259 public boolean isActionViewExpanded() {
260 return mNativeItem.isActionViewExpanded();
264 public MenuItem setOnActionExpandListener(OnActionExpandListener listener) {
265 mActionExpandListener = listener;
267 if (mNativeActionExpandListener == null) {
268 mNativeActionExpandListener = new android.view.MenuItem.OnActionExpandListener() {
270 public boolean onMenuItemActionExpand(android.view.MenuItem menuItem) {
271 if (mActionExpandListener != null) {
272 return mActionExpandListener.onMenuItemActionExpand(MenuItemWrapper.this);
278 public boolean onMenuItemActionCollapse(android.view.MenuItem menuItem) {
279 if (mActionExpandListener != null) {
280 return mActionExpandListener.onMenuItemActionCollapse(MenuItemWrapper.this);
286 //Register our inner-class as the listener to proxy method calls
287 mNativeItem.setOnActionExpandListener(mNativeActionExpandListener);