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