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