510b97488685c67ceafe81bf2b115c0812ecbbfa
[pub/Android/ownCloud.git] / actionbarsherlock / src / com / actionbarsherlock / internal / view / menu / ActionMenuItem.java
1 /*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 package com.actionbarsherlock.internal.view.menu;
18
19 import android.content.Context;
20 import android.content.Intent;
21 import android.graphics.drawable.Drawable;
22 import android.view.ContextMenu.ContextMenuInfo;
23 import android.view.View;
24
25 import com.actionbarsherlock.view.ActionProvider;
26 import com.actionbarsherlock.view.MenuItem;
27 import com.actionbarsherlock.view.SubMenu;
28
29 /**
30 * @hide
31 */
32 public class ActionMenuItem implements MenuItem {
33 private final int mId;
34 private final int mGroup;
35 //UNUSED private final int mCategoryOrder;
36 private final int mOrdering;
37
38 private CharSequence mTitle;
39 private CharSequence mTitleCondensed;
40 private Intent mIntent;
41 private char mShortcutNumericChar;
42 private char mShortcutAlphabeticChar;
43
44 private Drawable mIconDrawable;
45 //UNUSED private int mIconResId = NO_ICON;
46
47 private Context mContext;
48
49 private MenuItem.OnMenuItemClickListener mClickListener;
50
51 //UNUSED private static final int NO_ICON = 0;
52
53 private int mFlags = ENABLED;
54 private static final int CHECKABLE = 0x00000001;
55 private static final int CHECKED = 0x00000002;
56 private static final int EXCLUSIVE = 0x00000004;
57 private static final int HIDDEN = 0x00000008;
58 private static final int ENABLED = 0x00000010;
59
60 public ActionMenuItem(Context context, int group, int id, int categoryOrder, int ordering,
61 CharSequence title) {
62 mContext = context;
63 mId = id;
64 mGroup = group;
65 //UNUSED mCategoryOrder = categoryOrder;
66 mOrdering = ordering;
67 mTitle = title;
68 }
69
70 public char getAlphabeticShortcut() {
71 return mShortcutAlphabeticChar;
72 }
73
74 public int getGroupId() {
75 return mGroup;
76 }
77
78 public Drawable getIcon() {
79 return mIconDrawable;
80 }
81
82 public Intent getIntent() {
83 return mIntent;
84 }
85
86 public int getItemId() {
87 return mId;
88 }
89
90 public ContextMenuInfo getMenuInfo() {
91 return null;
92 }
93
94 public char getNumericShortcut() {
95 return mShortcutNumericChar;
96 }
97
98 public int getOrder() {
99 return mOrdering;
100 }
101
102 public SubMenu getSubMenu() {
103 return null;
104 }
105
106 public CharSequence getTitle() {
107 return mTitle;
108 }
109
110 public CharSequence getTitleCondensed() {
111 return mTitleCondensed;
112 }
113
114 public boolean hasSubMenu() {
115 return false;
116 }
117
118 public boolean isCheckable() {
119 return (mFlags & CHECKABLE) != 0;
120 }
121
122 public boolean isChecked() {
123 return (mFlags & CHECKED) != 0;
124 }
125
126 public boolean isEnabled() {
127 return (mFlags & ENABLED) != 0;
128 }
129
130 public boolean isVisible() {
131 return (mFlags & HIDDEN) == 0;
132 }
133
134 public MenuItem setAlphabeticShortcut(char alphaChar) {
135 mShortcutAlphabeticChar = alphaChar;
136 return this;
137 }
138
139 public MenuItem setCheckable(boolean checkable) {
140 mFlags = (mFlags & ~CHECKABLE) | (checkable ? CHECKABLE : 0);
141 return this;
142 }
143
144 public ActionMenuItem setExclusiveCheckable(boolean exclusive) {
145 mFlags = (mFlags & ~EXCLUSIVE) | (exclusive ? EXCLUSIVE : 0);
146 return this;
147 }
148
149 public MenuItem setChecked(boolean checked) {
150 mFlags = (mFlags & ~CHECKED) | (checked ? CHECKED : 0);
151 return this;
152 }
153
154 public MenuItem setEnabled(boolean enabled) {
155 mFlags = (mFlags & ~ENABLED) | (enabled ? ENABLED : 0);
156 return this;
157 }
158
159 public MenuItem setIcon(Drawable icon) {
160 mIconDrawable = icon;
161 //UNUSED mIconResId = NO_ICON;
162 return this;
163 }
164
165 public MenuItem setIcon(int iconRes) {
166 //UNUSED mIconResId = iconRes;
167 mIconDrawable = mContext.getResources().getDrawable(iconRes);
168 return this;
169 }
170
171 public MenuItem setIntent(Intent intent) {
172 mIntent = intent;
173 return this;
174 }
175
176 public MenuItem setNumericShortcut(char numericChar) {
177 mShortcutNumericChar = numericChar;
178 return this;
179 }
180
181 public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) {
182 mClickListener = menuItemClickListener;
183 return this;
184 }
185
186 public MenuItem setShortcut(char numericChar, char alphaChar) {
187 mShortcutNumericChar = numericChar;
188 mShortcutAlphabeticChar = alphaChar;
189 return this;
190 }
191
192 public MenuItem setTitle(CharSequence title) {
193 mTitle = title;
194 return this;
195 }
196
197 public MenuItem setTitle(int title) {
198 mTitle = mContext.getResources().getString(title);
199 return this;
200 }
201
202 public MenuItem setTitleCondensed(CharSequence title) {
203 mTitleCondensed = title;
204 return this;
205 }
206
207 public MenuItem setVisible(boolean visible) {
208 mFlags = (mFlags & HIDDEN) | (visible ? 0 : HIDDEN);
209 return this;
210 }
211
212 public boolean invoke() {
213 if (mClickListener != null && mClickListener.onMenuItemClick(this)) {
214 return true;
215 }
216
217 if (mIntent != null) {
218 mContext.startActivity(mIntent);
219 return true;
220 }
221
222 return false;
223 }
224
225 public void setShowAsAction(int show) {
226 // Do nothing. ActionMenuItems always show as action buttons.
227 }
228
229 public MenuItem setActionView(View actionView) {
230 throw new UnsupportedOperationException();
231 }
232
233 public View getActionView() {
234 return null;
235 }
236
237 @Override
238 public MenuItem setActionView(int resId) {
239 throw new UnsupportedOperationException();
240 }
241
242 @Override
243 public ActionProvider getActionProvider() {
244 return null;
245 }
246
247 @Override
248 public MenuItem setActionProvider(ActionProvider actionProvider) {
249 throw new UnsupportedOperationException();
250 }
251
252 @Override
253 public MenuItem setShowAsActionFlags(int actionEnum) {
254 setShowAsAction(actionEnum);
255 return this;
256 }
257
258 @Override
259 public boolean expandActionView() {
260 return false;
261 }
262
263 @Override
264 public boolean collapseActionView() {
265 return false;
266 }
267
268 @Override
269 public boolean isActionViewExpanded() {
270 return false;
271 }
272
273 @Override
274 public MenuItem setOnActionExpandListener(OnActionExpandListener listener) {
275 // No need to save the listener; ActionMenuItem does not support collapsing items.
276 return this;
277 }
278 }