• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.fakes;
2 
3 import android.content.Context;
4 import android.content.Intent;
5 import android.graphics.drawable.Drawable;
6 import android.view.ActionProvider;
7 import android.view.ContextMenu;
8 import android.view.LayoutInflater;
9 import android.view.MenuItem;
10 import android.view.SubMenu;
11 import android.view.View;
12 import org.robolectric.RuntimeEnvironment;
13 
14 /**
15  * Robolectric implementation of {@link android.view.MenuItem}.
16  */
17 public class RoboMenuItem implements MenuItem {
18   private int itemId;
19   private int groupId;
20   private CharSequence title;
21   private boolean enabled = true;
22   private boolean checked = false;
23   private boolean checkable = false;
24   private boolean visible = true;
25   private boolean expanded = false;
26   private OnMenuItemClickListener menuItemClickListener;
27   public Drawable icon;
28   private Intent intent;
29   private SubMenu subMenu;
30   private View actionView;
31   private OnActionExpandListener actionExpandListener;
32   private int order;
33   private Context context;
34 
RoboMenuItem()35   public RoboMenuItem() {
36     this(RuntimeEnvironment.getApplication());
37   }
38 
RoboMenuItem(Context context)39   public RoboMenuItem(Context context) {
40     this.context = context;
41   }
42 
RoboMenuItem(int itemId)43   public RoboMenuItem(int itemId) {
44     this.itemId = itemId;
45   }
46 
setItemId(int itemId)47   public void setItemId(int itemId) {
48     this.itemId = itemId;
49   }
50 
setGroupId(int groupId)51   public void setGroupId(int groupId) {
52     this.groupId = groupId;
53   }
54 
55   @Override
getItemId()56   public int getItemId() {
57     return itemId;
58   }
59 
60   @Override
getGroupId()61   public int getGroupId() {
62     return groupId;
63   }
64 
65   @Override
getOrder()66   public int getOrder() {
67     return order;
68   }
69 
setOrder(int order)70   public void setOrder(int order) {
71     this.order = order;
72   }
73 
74   @Override
setTitle(CharSequence title)75   public MenuItem setTitle(CharSequence title) {
76     this.title = title;
77     return this;
78   }
79 
80   @Override
setTitle(int title)81   public MenuItem setTitle(int title) {
82     return this;
83   }
84 
85   @Override
getTitle()86   public CharSequence getTitle() {
87     return title;
88   }
89 
90   @Override
setTitleCondensed(CharSequence title)91   public MenuItem setTitleCondensed(CharSequence title) {
92     return this;
93   }
94 
95   @Override
getTitleCondensed()96   public CharSequence getTitleCondensed() {
97     return null;
98   }
99 
100   @Override
setIcon(Drawable icon)101   public MenuItem setIcon(Drawable icon) {
102     this.icon = icon;
103     return this;
104   }
105 
106   @Override
setIcon(int iconRes)107   public MenuItem setIcon(int iconRes) {
108     this.icon = iconRes == 0 ? null : context.getResources().getDrawable(iconRes);
109     return this;
110   }
111 
112   @Override
getIcon()113   public Drawable getIcon() {
114     return this.icon;
115   }
116 
117   @Override
setIntent(Intent intent)118   public MenuItem setIntent(Intent intent) {
119     this.intent = intent;
120     return this;
121   }
122 
123   @Override
getIntent()124   public Intent getIntent() {
125     return this.intent;
126   }
127 
128   @Override
setShortcut(char numericChar, char alphaChar)129   public MenuItem setShortcut(char numericChar, char alphaChar) {
130     return this;
131   }
132 
133   @Override
setNumericShortcut(char numericChar)134   public MenuItem setNumericShortcut(char numericChar) {
135     return this;
136   }
137 
138   @Override
getNumericShortcut()139   public char getNumericShortcut() {
140     return 0;
141   }
142 
143   @Override
setAlphabeticShortcut(char alphaChar)144   public MenuItem setAlphabeticShortcut(char alphaChar) {
145     return this;
146   }
147 
148   @Override
getAlphabeticShortcut()149   public char getAlphabeticShortcut() {
150     return 0;
151   }
152 
153   @Override
setCheckable(boolean checkable)154   public MenuItem setCheckable(boolean checkable) {
155     this.checkable = checkable;
156     return this;
157   }
158 
159   @Override
isCheckable()160   public boolean isCheckable() {
161     return checkable;
162   }
163 
164   @Override
setChecked(boolean checked)165   public MenuItem setChecked(boolean checked) {
166     this.checked = checked;
167     return this;
168   }
169 
170   @Override
isChecked()171   public boolean isChecked() {
172     return checked;
173   }
174 
175   @Override
setVisible(boolean visible)176   public MenuItem setVisible(boolean visible) {
177     this.visible = visible;
178     return this;
179   }
180 
181   @Override
isVisible()182   public boolean isVisible() {
183     return visible;
184   }
185 
186   @Override
setEnabled(boolean enabled)187   public MenuItem setEnabled(boolean enabled) {
188     this.enabled = enabled;
189     return this;
190   }
191 
192   @Override
isEnabled()193   public boolean isEnabled() {
194     return enabled;
195   }
196 
197   @Override
hasSubMenu()198   public boolean hasSubMenu() {
199     return subMenu != null;
200   }
201 
202   @Override
getSubMenu()203   public SubMenu getSubMenu() {
204     return subMenu;
205   }
206 
setSubMenu(SubMenu subMenu)207   public void setSubMenu(SubMenu subMenu) {
208     this.subMenu = subMenu;
209   }
210 
211   @Override
setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener)212   public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) {
213     this.menuItemClickListener = menuItemClickListener;
214     return this;
215   }
216 
217   @Override
getMenuInfo()218   public ContextMenu.ContextMenuInfo getMenuInfo() {
219     return null;
220   }
221 
click()222   public void click() {
223     if (enabled && menuItemClickListener != null) {
224       menuItemClickListener.onMenuItemClick(this);
225     } else if (enabled && intent != null) {
226       context.startActivity(intent);
227     }
228   }
229 
230   @Override
setShowAsAction(int actionEnum)231   public void setShowAsAction(int actionEnum) {
232   }
233 
234   @Override
setShowAsActionFlags(int actionEnum)235   public MenuItem setShowAsActionFlags(int actionEnum) {
236     return this;
237   }
238 
239   @Override
setActionView(View view)240   public MenuItem setActionView(View view) {
241     actionView = view;
242     return this;
243   }
244 
245   @Override
setActionView(int resId)246   public MenuItem setActionView(int resId) {
247     actionView = LayoutInflater.from(context).inflate(resId, null);
248     return this;
249   }
250 
251   @Override
getActionView()252   public View getActionView() {
253     return actionView;
254   }
255 
256   @Override
setActionProvider(ActionProvider actionProvider)257   public MenuItem setActionProvider(ActionProvider actionProvider) {
258     return this;
259   }
260 
261   @Override
getActionProvider()262   public ActionProvider getActionProvider() {
263     return null;
264   }
265 
266   @Override
expandActionView()267   public boolean expandActionView() {
268     if (actionView != null) {
269       if (actionExpandListener != null) {
270         actionExpandListener.onMenuItemActionExpand(this);
271       }
272 
273       expanded = true;
274       return true;
275     }
276 
277     return false;
278   }
279 
280   @Override
collapseActionView()281   public boolean collapseActionView() {
282     if (actionView != null) {
283       if (actionExpandListener != null) {
284         actionExpandListener.onMenuItemActionCollapse(this);
285       }
286 
287       expanded = false;
288       return true;
289     }
290 
291     return false;
292   }
293 
294   @Override
isActionViewExpanded()295   public boolean isActionViewExpanded() {
296     return expanded;
297   }
298 
299   @Override
setOnActionExpandListener(OnActionExpandListener listener)300   public MenuItem setOnActionExpandListener(OnActionExpandListener listener) {
301     actionExpandListener = listener;
302     return this;
303   }
304 }
305 
306