1 package com
.actionbarsherlock
.internal
.view
.menu
;
3 import android
.content
.Intent
;
4 import android
.graphics
.drawable
.Drawable
;
5 import android
.view
.ContextMenu
.ContextMenuInfo
;
6 import android
.view
.View
;
7 import com
.actionbarsherlock
.internal
.view
.ActionProviderWrapper
;
8 import com
.actionbarsherlock
.internal
.widget
.CollapsibleActionViewWrapper
;
9 import com
.actionbarsherlock
.view
.ActionProvider
;
10 import com
.actionbarsherlock
.view
.CollapsibleActionView
;
11 import com
.actionbarsherlock
.view
.MenuItem
;
12 import com
.actionbarsherlock
.view
.SubMenu
;
14 public class MenuItemWrapper
implements MenuItem
, android
.view
.MenuItem
.OnMenuItemClickListener
{
15 private final android
.view
.MenuItem mNativeItem
;
16 private SubMenu mSubMenu
= null
;
17 private OnMenuItemClickListener mMenuItemClickListener
= null
;
18 private OnActionExpandListener mActionExpandListener
= null
;
19 private android
.view
.MenuItem
.OnActionExpandListener mNativeActionExpandListener
= null
;
22 public MenuItemWrapper(android
.view
.MenuItem nativeItem
) {
23 if (nativeItem
== null
) {
24 throw new IllegalStateException("Wrapped menu item cannot be null.");
26 mNativeItem
= nativeItem
;
31 public int getItemId() {
32 return mNativeItem
.getItemId();
36 public int getGroupId() {
37 return mNativeItem
.getGroupId();
41 public int getOrder() {
42 return mNativeItem
.getOrder();
46 public MenuItem
setTitle(CharSequence title
) {
47 mNativeItem
.setTitle(title
);
52 public MenuItem
setTitle(int title
) {
53 mNativeItem
.setTitle(title
);
58 public CharSequence
getTitle() {
59 return mNativeItem
.getTitle();
63 public MenuItem
setTitleCondensed(CharSequence title
) {
64 mNativeItem
.setTitleCondensed(title
);
69 public CharSequence
getTitleCondensed() {
70 return mNativeItem
.getTitleCondensed();
74 public MenuItem
setIcon(Drawable icon
) {
75 mNativeItem
.setIcon(icon
);
80 public MenuItem
setIcon(int iconRes
) {
81 mNativeItem
.setIcon(iconRes
);
86 public Drawable
getIcon() {
87 return mNativeItem
.getIcon();
91 public MenuItem
setIntent(Intent intent
) {
92 mNativeItem
.setIntent(intent
);
97 public Intent
getIntent() {
98 return mNativeItem
.getIntent();
102 public MenuItem
setShortcut(char numericChar
, char alphaChar
) {
103 mNativeItem
.setShortcut(numericChar
, alphaChar
);
108 public MenuItem
setNumericShortcut(char numericChar
) {
109 mNativeItem
.setNumericShortcut(numericChar
);
114 public char getNumericShortcut() {
115 return mNativeItem
.getNumericShortcut();
119 public MenuItem
setAlphabeticShortcut(char alphaChar
) {
120 mNativeItem
.setAlphabeticShortcut(alphaChar
);
125 public char getAlphabeticShortcut() {
126 return mNativeItem
.getAlphabeticShortcut();
130 public MenuItem
setCheckable(boolean checkable
) {
131 mNativeItem
.setCheckable(checkable
);
136 public boolean isCheckable() {
137 return mNativeItem
.isCheckable();
141 public MenuItem
setChecked(boolean checked
) {
142 mNativeItem
.setChecked(checked
);
147 public boolean isChecked() {
148 return mNativeItem
.isChecked();
152 public MenuItem
setVisible(boolean visible
) {
153 mNativeItem
.setVisible(visible
);
158 public boolean isVisible() {
159 return mNativeItem
.isVisible();
163 public MenuItem
setEnabled(boolean enabled
) {
164 mNativeItem
.setEnabled(enabled
);
169 public boolean isEnabled() {
170 return mNativeItem
.isEnabled();
174 public boolean hasSubMenu() {
175 return mNativeItem
.hasSubMenu();
179 public SubMenu
getSubMenu() {
180 if (hasSubMenu() && (mSubMenu
== null
)) {
181 mSubMenu
= new SubMenuWrapper(mNativeItem
.getSubMenu());
187 public MenuItem
setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener
) {
188 mMenuItemClickListener
= menuItemClickListener
;
189 //Register ourselves as the listener to proxy
190 mNativeItem
.setOnMenuItemClickListener(this);
195 public boolean onMenuItemClick(android
.view
.MenuItem item
) {
196 if (mMenuItemClickListener
!= null
) {
197 return mMenuItemClickListener
.onMenuItemClick(this);
203 public ContextMenuInfo
getMenuInfo() {
204 return mNativeItem
.getMenuInfo();
208 public void setShowAsAction(int actionEnum
) {
209 mNativeItem
.setShowAsAction(actionEnum
);
213 public MenuItem
setShowAsActionFlags(int actionEnum
) {
214 mNativeItem
.setShowAsActionFlags(actionEnum
);
219 public MenuItem
setActionView(View view
) {
220 if (view
!= null
&& view
instanceof CollapsibleActionView
) {
221 view
= new CollapsibleActionViewWrapper(view
);
223 mNativeItem
.setActionView(view
);
228 public MenuItem
setActionView(int resId
) {
229 //Allow the native menu to inflate the resource
230 mNativeItem
.setActionView(resId
);
232 //Get newly created view
233 View view
= mNativeItem
.getActionView();
234 if (view
instanceof CollapsibleActionView
) {
235 //Wrap it and re-set it
236 mNativeItem
.setActionView(new CollapsibleActionViewWrapper(view
));
243 public View
getActionView() {
244 View actionView
= mNativeItem
.getActionView();
245 if (actionView
instanceof CollapsibleActionViewWrapper
) {
246 return ((CollapsibleActionViewWrapper
)actionView
).unwrap();
252 public MenuItem
setActionProvider(ActionProvider actionProvider
) {
253 mNativeItem
.setActionProvider(new ActionProviderWrapper(actionProvider
));
258 public ActionProvider
getActionProvider() {
259 android
.view
.ActionProvider nativeProvider
= mNativeItem
.getActionProvider();
260 if (nativeProvider
!= null
&& nativeProvider
instanceof ActionProviderWrapper
) {
261 return ((ActionProviderWrapper
)nativeProvider
).unwrap();
267 public boolean expandActionView() {
268 return mNativeItem
.expandActionView();
272 public boolean collapseActionView() {
273 return mNativeItem
.collapseActionView();
277 public boolean isActionViewExpanded() {
278 return mNativeItem
.isActionViewExpanded();
282 public MenuItem
setOnActionExpandListener(OnActionExpandListener listener
) {
283 mActionExpandListener
= listener
;
285 if (mNativeActionExpandListener
== null
) {
286 mNativeActionExpandListener
= new android
.view
.MenuItem
.OnActionExpandListener() {
288 public boolean onMenuItemActionExpand(android
.view
.MenuItem menuItem
) {
289 if (mActionExpandListener
!= null
) {
290 return mActionExpandListener
.onMenuItemActionExpand(MenuItemWrapper
.this);
296 public boolean onMenuItemActionCollapse(android
.view
.MenuItem menuItem
) {
297 if (mActionExpandListener
!= null
) {
298 return mActionExpandListener
.onMenuItemActionCollapse(MenuItemWrapper
.this);
304 //Register our inner-class as the listener to proxy method calls
305 mNativeItem
.setOnActionExpandListener(mNativeActionExpandListener
);