1 /* 2 * Copyright 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.example.android.actionbarcompat; 18 19 import android.content.Intent; 20 import android.graphics.drawable.Drawable; 21 import android.view.ActionProvider; 22 import android.view.ContextMenu; 23 import android.view.MenuItem; 24 import android.view.SubMenu; 25 import android.view.View; 26 27 /** 28 * A <em>really</em> dumb implementation of the {@link android.view.MenuItem} interface, that's only 29 * useful for our actionbar-compat purposes. See 30 * <code>com.android.internal.view.menu.MenuItemImpl</code> in AOSP for a more complete 31 * implementation. 32 */ 33 public class SimpleMenuItem implements MenuItem { 34 35 private SimpleMenu mMenu; 36 37 private final int mId; 38 private final int mOrder; 39 private CharSequence mTitle; 40 private CharSequence mTitleCondensed; 41 private Drawable mIconDrawable; 42 private int mIconResId = 0; 43 private boolean mEnabled = true; 44 45 public SimpleMenuItem(SimpleMenu menu, int id, int order, CharSequence title) { 46 mMenu = menu; 47 mId = id; 48 mOrder = order; 49 mTitle = title; 50 } 51 52 public int getItemId() { 53 return mId; 54 } 55 56 public int getOrder() { 57 return mOrder; 58 } 59 60 public MenuItem setTitle(CharSequence title) { 61 mTitle = title; 62 return this; 63 } 64 65 public MenuItem setTitle(int titleRes) { 66 return setTitle(mMenu.getContext().getString(titleRes)); 67 } 68 69 public CharSequence getTitle() { 70 return mTitle; 71 } 72 73 public MenuItem setTitleCondensed(CharSequence title) { 74 mTitleCondensed = title; 75 return this; 76 } 77 78 public CharSequence getTitleCondensed() { 79 return mTitleCondensed != null ? mTitleCondensed : mTitle; 80 } 81 82 public MenuItem setIcon(Drawable icon) { 83 mIconResId = 0; 84 mIconDrawable = icon; 85 return this; 86 } 87 88 public MenuItem setIcon(int iconResId) { 89 mIconDrawable = null; 90 mIconResId = iconResId; 91 return this; 92 } 93 94 public Drawable getIcon() { 95 if (mIconDrawable != null) { 96 return mIconDrawable; 97 } 98 99 if (mIconResId != 0) { 100 return mMenu.getResources().getDrawable(mIconResId); 101 } 102 103 return null; 104 } 105 106 public MenuItem setEnabled(boolean enabled) { 107 mEnabled = enabled; 108 return this; 109 } 110 111 public boolean isEnabled() { 112 return mEnabled; 113 } 114 115 // No-op operations. We use no-ops to allow inflation from menu XML. 116 117 public int getGroupId() { 118 // Noop 119 return 0; 120 } 121 122 public View getActionView() { 123 // Noop 124 return null; 125 } 126 127 public MenuItem setActionProvider(ActionProvider actionProvider) { 128 // Noop 129 return this; 130 } 131 132 public ActionProvider getActionProvider() { 133 // Noop 134 return null; 135 } 136 137 public boolean expandActionView() { 138 // Noop 139 return false; 140 } 141 142 public boolean collapseActionView() { 143 // Noop 144 return false; 145 } 146 147 public boolean isActionViewExpanded() { 148 // Noop 149 return false; 150 } 151 152 @Override 153 public MenuItem setOnActionExpandListener(OnActionExpandListener onActionExpandListener) { 154 // Noop 155 return this; 156 } 157 158 public MenuItem setIntent(Intent intent) { 159 // Noop 160 return this; 161 } 162 163 public Intent getIntent() { 164 // Noop 165 return null; 166 } 167 168 public MenuItem setShortcut(char c, char c1) { 169 // Noop 170 return this; 171 } 172 173 public MenuItem setNumericShortcut(char c) { 174 // Noop 175 return this; 176 } 177 178 public char getNumericShortcut() { 179 // Noop 180 return 0; 181 } 182 183 public MenuItem setAlphabeticShortcut(char c) { 184 // Noop 185 return this; 186 } 187 188 public char getAlphabeticShortcut() { 189 // Noop 190 return 0; 191 } 192 193 public MenuItem setCheckable(boolean b) { 194 // Noop 195 return this; 196 } 197 198 public boolean isCheckable() { 199 // Noop 200 return false; 201 } 202 203 public MenuItem setChecked(boolean b) { 204 // Noop 205 return this; 206 } 207 208 public boolean isChecked() { 209 // Noop 210 return false; 211 } 212 213 public MenuItem setVisible(boolean b) { 214 // Noop 215 return this; 216 } 217 218 public boolean isVisible() { 219 // Noop 220 return true; 221 } 222 223 public boolean hasSubMenu() { 224 // Noop 225 return false; 226 } 227 228 public SubMenu getSubMenu() { 229 // Noop 230 return null; 231 } 232 233 public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener onMenuItemClickListener) { 234 // Noop 235 return this; 236 } 237 238 public ContextMenu.ContextMenuInfo getMenuInfo() { 239 // Noop 240 return null; 241 } 242 243 public void setShowAsAction(int i) { 244 // Noop 245 } 246 247 public MenuItem setShowAsActionFlags(int i) { 248 // Noop 249 return null; 250 } 251 252 public MenuItem setActionView(View view) { 253 // Noop 254 return this; 255 } 256 257 public MenuItem setActionView(int i) { 258 // Noop 259 return this; 260 } 261 } 262