• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.xtremelabs.robolectric.tester.android.view;
2 
3 import android.content.ComponentName;
4 import android.content.Context;
5 import android.content.Intent;
6 import android.view.KeyEvent;
7 import android.view.Menu;
8 import android.view.MenuItem;
9 import android.view.SubMenu;
10 
11 import java.util.ArrayList;
12 import java.util.List;
13 
14 public class TestMenu implements Menu {
15     private List<MenuItem> menuItems = new ArrayList<MenuItem>();
16     private Context context;
17 
TestMenu()18     public TestMenu() {
19         this(null);
20     }
21 
TestMenu(Context context)22     public TestMenu(Context context) {
23         this.context = context;
24     }
25 
26     @Override
add(CharSequence title)27     public MenuItem add(CharSequence title) {
28         return add(0, 0, 0, title);
29     }
30 
31     @Override
add(int titleRes)32     public MenuItem add(int titleRes) {
33         return add(0, 0, 0, titleRes);
34     }
35 
36     @Override
add(int groupId, int itemId, int order, CharSequence title)37     public MenuItem add(int groupId, int itemId, int order, CharSequence title) {
38         TestMenuItem menuItem = new TestMenuItem();
39         menuItems.add(menuItem);
40         menuItem.setItemId(itemId);
41         menuItem.setTitle(title);
42         return menuItem;
43     }
44 
45     @Override
add(int groupId, int itemId, int order, int titleRes)46     public MenuItem add(int groupId, int itemId, int order, int titleRes) {
47         return add(groupId, itemId, order, context.getResources().getString(titleRes));
48     }
49 
50     @Override
addSubMenu(CharSequence title)51     public SubMenu addSubMenu(CharSequence title) {
52         TestSubMenu tsm = new TestSubMenu();
53         TestMenuItem menuItem = new TestMenuItem();
54         menuItems.add(menuItem);
55         menuItem.setTitle(title);
56         menuItem.setSubMenu(tsm);
57         return tsm;
58     }
59 
60     @Override
addSubMenu(int titleRes)61     public SubMenu addSubMenu(int titleRes) {
62         TestSubMenu tsm = new TestSubMenu();
63         TestMenuItem menuItem = new TestMenuItem();
64         menuItems.add(menuItem);
65         menuItem.setTitle(titleRes);
66         menuItem.setSubMenu(tsm);
67         return tsm;
68     }
69 
70     @Override
addSubMenu(int groupId, int itemId, int order, CharSequence title)71     public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) {
72         TestSubMenu tsm = new TestSubMenu();
73         TestMenuItem menuItem = new TestMenuItem();
74         menuItems.add(menuItem);
75         menuItem.setItemId(itemId);
76         menuItem.setTitle(title);
77         menuItem.setSubMenu(tsm);
78         return tsm;
79     }
80 
81     @Override
addSubMenu(int groupId, int itemId, int order, int titleRes)82     public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) {
83         TestSubMenu tsm = new TestSubMenu();
84         TestMenuItem menuItem = new TestMenuItem();
85         menuItems.add(menuItem);
86         menuItem.setItemId(itemId);
87         menuItem.setTitle(titleRes);
88         menuItem.setSubMenu(tsm);
89         return tsm;
90     }
91 
92     @Override
addIntentOptions(int groupId, int itemId, int order, ComponentName caller, Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems)93     public int addIntentOptions(int groupId, int itemId, int order, ComponentName caller, Intent[] specifics,
94                                 Intent intent, int flags, MenuItem[] outSpecificItems) {
95         return 0;
96     }
97 
98     @Override
removeItem(int id)99     public void removeItem(int id) {
100         MenuItem menuItem = findItem(id);
101         menuItems.remove(menuItem);
102     }
103 
104     @Override
removeGroup(int groupId)105     public void removeGroup(int groupId) {
106     }
107 
108     @Override
clear()109     public void clear() {
110         menuItems.clear();
111     }
112 
113     @Override
setGroupCheckable(int group, boolean checkable, boolean exclusive)114     public void setGroupCheckable(int group, boolean checkable, boolean exclusive) {
115     }
116 
117     @Override
setGroupVisible(int group, boolean visible)118     public void setGroupVisible(int group, boolean visible) {
119     }
120 
121     @Override
setGroupEnabled(int group, boolean enabled)122     public void setGroupEnabled(int group, boolean enabled) {
123     }
124 
125     @Override
hasVisibleItems()126     public boolean hasVisibleItems() {
127         return false;
128     }
129 
130     @Override
findItem(int id)131     public MenuItem findItem(int id) {
132         for (MenuItem item : menuItems) {
133             if (item.getItemId() == id) {
134                 return item;
135             }
136         }
137         return null;
138     }
139 
140     @Override
size()141     public int size() {
142         return menuItems.size();
143     }
144 
145     @Override
getItem(int index)146     public MenuItem getItem(int index) {
147         return menuItems.get(index);
148     }
149 
150     @Override
close()151     public void close() {
152     }
153 
154     @Override
performShortcut(int keyCode, KeyEvent event, int flags)155     public boolean performShortcut(int keyCode, KeyEvent event, int flags) {
156         return false;
157     }
158 
159     @Override
isShortcutKey(int keyCode, KeyEvent event)160     public boolean isShortcutKey(int keyCode, KeyEvent event) {
161         return false;
162     }
163 
164     @Override
performIdentifierAction(int id, int flags)165     public boolean performIdentifierAction(int id, int flags) {
166         return false;
167     }
168 
169     @Override
setQwertyMode(boolean isQwerty)170     public void setQwertyMode(boolean isQwerty) {
171     }
172 
findMenuItem(CharSequence title)173     public TestMenuItem findMenuItem(CharSequence title) {
174         for (int i = 0; i < size(); i++) {
175             TestMenuItem menuItem = (TestMenuItem) getItem(i);
176             if (menuItem.getTitle().equals(title)) {
177                 return menuItem;
178             }
179         }
180         return null;
181     }
182 }
183