TestMenu.java revision 99fafb79bf98b7aa1946bbda1f0a225cefa2d35d
1package com.xtremelabs.robolectric.tester.android.view; 2 3import android.content.ComponentName; 4import android.content.Context; 5import android.content.Intent; 6import android.view.KeyEvent; 7import android.view.Menu; 8import android.view.MenuItem; 9import android.view.SubMenu; 10 11import java.util.ArrayList; 12import java.util.List; 13 14public class TestMenu implements Menu { 15 private List<MenuItem> menuItems = new ArrayList<MenuItem>(); 16 private Context context; 17 18 public TestMenu() { 19 this(null); 20 } 21 22 public TestMenu(Context context) { 23 this.context = context; 24 } 25 26 @Override 27 public MenuItem add(CharSequence title) { 28 return add(0, 0, 0, title); 29 } 30 31 @Override 32 public MenuItem add(int titleRes) { 33 return add(0, 0, 0, titleRes); 34 } 35 36 @Override 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 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 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 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 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 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 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 99 public void removeItem(int id) { 100 MenuItem menuItem = findItem(id); 101 menuItems.remove(menuItem); 102 } 103 104 @Override 105 public void removeGroup(int groupId) { 106 } 107 108 @Override 109 public void clear() { 110 menuItems.clear(); 111 } 112 113 @Override 114 public void setGroupCheckable(int group, boolean checkable, boolean exclusive) { 115 } 116 117 @Override 118 public void setGroupVisible(int group, boolean visible) { 119 } 120 121 @Override 122 public void setGroupEnabled(int group, boolean enabled) { 123 } 124 125 @Override 126 public boolean hasVisibleItems() { 127 return false; 128 } 129 130 @Override 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 141 public int size() { 142 return menuItems.size(); 143 } 144 145 @Override 146 public MenuItem getItem(int index) { 147 return menuItems.get(index); 148 } 149 150 @Override 151 public void close() { 152 } 153 154 @Override 155 public boolean performShortcut(int keyCode, KeyEvent event, int flags) { 156 return false; 157 } 158 159 @Override 160 public boolean isShortcutKey(int keyCode, KeyEvent event) { 161 return false; 162 } 163 164 @Override 165 public boolean performIdentifierAction(int id, int flags) { 166 return false; 167 } 168 169 @Override 170 public void setQwertyMode(boolean isQwerty) { 171 } 172 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