create changelog entry
[debian/openrocket] / android-libraries / ActionBarSherlock / src / com / actionbarsherlock / internal / view / menu / MenuItemWrapper.java
1 package com.actionbarsherlock.internal.view.menu;
2
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;
11
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;
18
19
20     public MenuItemWrapper(android.view.MenuItem nativeItem) {
21         if (nativeItem == null) {
22             throw new IllegalStateException("Wrapped menu item cannot be null.");
23         }
24         mNativeItem = nativeItem;
25     }
26
27
28     @Override
29     public int getItemId() {
30         return mNativeItem.getItemId();
31     }
32
33     @Override
34     public int getGroupId() {
35         return mNativeItem.getGroupId();
36     }
37
38     @Override
39     public int getOrder() {
40         return mNativeItem.getOrder();
41     }
42
43     @Override
44     public MenuItem setTitle(CharSequence title) {
45         mNativeItem.setTitle(title);
46         return this;
47     }
48
49     @Override
50     public MenuItem setTitle(int title) {
51         mNativeItem.setTitle(title);
52         return this;
53     }
54
55     @Override
56     public CharSequence getTitle() {
57         return mNativeItem.getTitle();
58     }
59
60     @Override
61     public MenuItem setTitleCondensed(CharSequence title) {
62         mNativeItem.setTitleCondensed(title);
63         return this;
64     }
65
66     @Override
67     public CharSequence getTitleCondensed() {
68         return mNativeItem.getTitleCondensed();
69     }
70
71     @Override
72     public MenuItem setIcon(Drawable icon) {
73         mNativeItem.setIcon(icon);
74         return this;
75     }
76
77     @Override
78     public MenuItem setIcon(int iconRes) {
79         mNativeItem.setIcon(iconRes);
80         return this;
81     }
82
83     @Override
84     public Drawable getIcon() {
85         return mNativeItem.getIcon();
86     }
87
88     @Override
89     public MenuItem setIntent(Intent intent) {
90         mNativeItem.setIntent(intent);
91         return this;
92     }
93
94     @Override
95     public Intent getIntent() {
96         return mNativeItem.getIntent();
97     }
98
99     @Override
100     public MenuItem setShortcut(char numericChar, char alphaChar) {
101         mNativeItem.setShortcut(numericChar, alphaChar);
102         return this;
103     }
104
105     @Override
106     public MenuItem setNumericShortcut(char numericChar) {
107         mNativeItem.setNumericShortcut(numericChar);
108         return this;
109     }
110
111     @Override
112     public char getNumericShortcut() {
113         return mNativeItem.getNumericShortcut();
114     }
115
116     @Override
117     public MenuItem setAlphabeticShortcut(char alphaChar) {
118         mNativeItem.setAlphabeticShortcut(alphaChar);
119         return this;
120     }
121
122     @Override
123     public char getAlphabeticShortcut() {
124         return mNativeItem.getAlphabeticShortcut();
125     }
126
127     @Override
128     public MenuItem setCheckable(boolean checkable) {
129         mNativeItem.setCheckable(checkable);
130         return this;
131     }
132
133     @Override
134     public boolean isCheckable() {
135         return mNativeItem.isCheckable();
136     }
137
138     @Override
139     public MenuItem setChecked(boolean checked) {
140         mNativeItem.setChecked(checked);
141         return this;
142     }
143
144     @Override
145     public boolean isChecked() {
146         return mNativeItem.isChecked();
147     }
148
149     @Override
150     public MenuItem setVisible(boolean visible) {
151         mNativeItem.setVisible(visible);
152         return this;
153     }
154
155     @Override
156     public boolean isVisible() {
157         return mNativeItem.isVisible();
158     }
159
160     @Override
161     public MenuItem setEnabled(boolean enabled) {
162         mNativeItem.setEnabled(enabled);
163         return this;
164     }
165
166     @Override
167     public boolean isEnabled() {
168         return mNativeItem.isEnabled();
169     }
170
171     @Override
172     public boolean hasSubMenu() {
173         return mNativeItem.hasSubMenu();
174     }
175
176     @Override
177     public SubMenu getSubMenu() {
178         if (hasSubMenu() && (mSubMenu == null)) {
179             mSubMenu = new SubMenuWrapper(mNativeItem.getSubMenu());
180         }
181         return mSubMenu;
182     }
183
184     @Override
185     public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) {
186         mMenuItemClickListener = menuItemClickListener;
187         //Register ourselves as the listener to proxy
188         mNativeItem.setOnMenuItemClickListener(this);
189         return this;
190     }
191
192     @Override
193     public boolean onMenuItemClick(android.view.MenuItem item) {
194         if (mMenuItemClickListener != null) {
195             return mMenuItemClickListener.onMenuItemClick(this);
196         }
197         return false;
198     }
199
200     @Override
201     public ContextMenuInfo getMenuInfo() {
202         return mNativeItem.getMenuInfo();
203     }
204
205     @Override
206     public void setShowAsAction(int actionEnum) {
207         mNativeItem.setShowAsAction(actionEnum);
208     }
209
210     @Override
211     public MenuItem setShowAsActionFlags(int actionEnum) {
212         mNativeItem.setShowAsActionFlags(actionEnum);
213         return this;
214     }
215
216     @Override
217     public MenuItem setActionView(View view) {
218         mNativeItem.setActionView(view);
219         return this;
220     }
221
222     @Override
223     public MenuItem setActionView(int resId) {
224         mNativeItem.setActionView(resId);
225         return this;
226     }
227
228     @Override
229     public View getActionView() {
230         return mNativeItem.getActionView();
231     }
232
233     @Override
234     public MenuItem setActionProvider(ActionProvider actionProvider) {
235         mNativeItem.setActionProvider(new ActionProviderWrapper(actionProvider));
236         return this;
237     }
238
239     @Override
240     public ActionProvider getActionProvider() {
241         android.view.ActionProvider nativeProvider = mNativeItem.getActionProvider();
242         if (nativeProvider != null && nativeProvider instanceof ActionProviderWrapper) {
243             return ((ActionProviderWrapper)nativeProvider).unwrap();
244         }
245         return null;
246     }
247
248     @Override
249     public boolean expandActionView() {
250         return mNativeItem.expandActionView();
251     }
252
253     @Override
254     public boolean collapseActionView() {
255         return mNativeItem.collapseActionView();
256     }
257
258     @Override
259     public boolean isActionViewExpanded() {
260         return mNativeItem.isActionViewExpanded();
261     }
262
263     @Override
264     public MenuItem setOnActionExpandListener(OnActionExpandListener listener) {
265         mActionExpandListener = listener;
266
267         if (mNativeActionExpandListener == null) {
268             mNativeActionExpandListener = new android.view.MenuItem.OnActionExpandListener() {
269                 @Override
270                 public boolean onMenuItemActionExpand(android.view.MenuItem menuItem) {
271                     if (mActionExpandListener != null) {
272                         return mActionExpandListener.onMenuItemActionExpand(MenuItemWrapper.this);
273                     }
274                     return false;
275                 }
276
277                 @Override
278                 public boolean onMenuItemActionCollapse(android.view.MenuItem menuItem) {
279                     if (mActionExpandListener != null) {
280                         return mActionExpandListener.onMenuItemActionCollapse(MenuItemWrapper.this);
281                     }
282                     return false;
283                 }
284             };
285
286             //Register our inner-class as the listener to proxy method calls
287             mNativeItem.setOnActionExpandListener(mNativeActionExpandListener);
288         }
289
290         return this;
291     }
292 }