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