136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley/* 236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * Copyright (C) 2017 The Android Open Source Project 336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * 436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * Licensed under the Apache License, Version 2.0 (the "License"); 536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * you may not use this file except in compliance with the License. 636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * You may obtain a copy of the License at 736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * 836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * http://www.apache.org/licenses/LICENSE-2.0 936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * 1036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * Unless required by applicable law or agreed to in writing, software 1136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * distributed under the License is distributed on an "AS IS" BASIS, 1236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * See the License for the specific language governing permissions and 1436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * limitations under the License. 1536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley */ 1636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 1736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleypackage android.support.wear.widget.drawer; 1836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 1936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.annotation.TargetApi; 2036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.content.ComponentName; 2136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.content.Context; 2236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.content.Intent; 2336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.graphics.drawable.Drawable; 2436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.os.Build; 2536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.support.annotation.Nullable; 2636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.ActionProvider; 2736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.ContextMenu; 2836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.KeyEvent; 2936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.Menu; 3036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.MenuItem; 3136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.SubMenu; 3236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.View; 3336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 3436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport java.util.ArrayList; 3536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport java.util.List; 3636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 3736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley@TargetApi(Build.VERSION_CODES.M) 3836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley/* package */ class WearableActionDrawerMenu implements Menu { 3936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 4036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final Context mContext; 4136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final List<WearableActionDrawerMenuItem> mItems = new ArrayList<>(); 4236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final WearableActionDrawerMenuListener mListener; 4336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final WearableActionDrawerMenuItem.MenuItemChangedListener mItemChangedListener = 4436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley new WearableActionDrawerMenuItem.MenuItemChangedListener() { 4536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 4636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void itemChanged(WearableActionDrawerMenuItem item) { 4736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley for (int i = 0; i < mItems.size(); i++) { 4836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if (mItems.get(i) == item) { 4936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener.menuItemChanged(i); 5036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 5136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 5236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 5336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley }; 5436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 5536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley WearableActionDrawerMenu(Context context, WearableActionDrawerMenuListener listener) { 5636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mContext = context; 5736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener = listener; 5836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 5936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 6036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 6136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem add(CharSequence title) { 6236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return add(0, 0, 0, title); 6336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 6436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 6536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 6636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem add(int titleRes) { 6736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return add(0, 0, 0, titleRes); 6836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 6936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 7036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 7136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem add(int groupId, int itemId, int order, int titleRes) { 7236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return add(groupId, itemId, order, mContext.getResources().getString(titleRes)); 7336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 7436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 7536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 7636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem add(int groupId, int itemId, int order, CharSequence title) { 7736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley WearableActionDrawerMenuItem item = 7836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley new WearableActionDrawerMenuItem(mContext, itemId, title, mItemChangedListener); 7936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItems.add(item); 8036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener.menuItemAdded(mItems.size() - 1); 8136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return item; 8236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 8336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 8436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 8536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void clear() { 8636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItems.clear(); 8736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener.menuChanged(); 8836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 8936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 9036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 9136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void removeItem(int id) { 9236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int index = findItemIndex(id); 9336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if ((index < 0) || (index >= mItems.size())) { 9436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return; 9536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 9636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItems.remove(index); 9736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener.menuItemRemoved(index); 9836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 9936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 10036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 10136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem findItem(int id) { 10236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int index = findItemIndex(id); 10336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if ((index < 0) || (index >= mItems.size())) { 10436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 10536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 10636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mItems.get(index); 10736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 10836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 10936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 11036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int size() { 11136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mItems.size(); 11236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 11336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 11436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 11536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Nullable 11636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem getItem(int index) { 11736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if ((index < 0) || (index >= mItems.size())) { 11836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 11936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 12036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mItems.get(index); 12136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 12236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 12336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private int findItemIndex(int id) { 12436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley final List<WearableActionDrawerMenuItem> items = mItems; 12536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley final int itemCount = items.size(); 12636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley for (int i = 0; i < itemCount; i++) { 12736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if (items.get(i).getItemId() == id) { 12836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return i; 12936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 13036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 13136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 13236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return -1; 13336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 13436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 13536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 13636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void close() { 13736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("close is not implemented"); 13836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 13936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 14036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 14136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu addSubMenu(CharSequence title) { 14236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addSubMenu is not implemented"); 14336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 14436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 14536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 14636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu addSubMenu(int titleRes) { 14736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addSubMenu is not implemented"); 14836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 14936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 15036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 15136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) { 15236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addSubMenu is not implemented"); 15336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 15436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 15536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 15636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) { 15736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addSubMenu is not implemented"); 15836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 15936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 16036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 16136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int addIntentOptions( 16236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int groupId, 16336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int itemId, 16436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int order, 16536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley ComponentName caller, 16636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley Intent[] specifics, 16736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley Intent intent, 16836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int flags, 16936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley MenuItem[] outSpecificItems) { 17036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addIntentOptions is not implemented"); 17136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 17236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 17336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 17436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void removeGroup(int groupId) { 17536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 17636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 17736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 17836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setGroupCheckable(int group, boolean checkable, boolean exclusive) { 17936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setGroupCheckable is not implemented"); 18036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 18136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 18236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 18336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setGroupVisible(int group, boolean visible) { 18436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setGroupVisible is not implemented"); 18536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 18636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 18736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 18836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setGroupEnabled(int group, boolean enabled) { 18936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setGroupEnabled is not implemented"); 19036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 19136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 19236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 19336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean hasVisibleItems() { 19436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 19536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 19636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 19736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 19836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean performShortcut(int keyCode, KeyEvent event, int flags) { 19936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("performShortcut is not implemented"); 20036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 20136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 20236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 20336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isShortcutKey(int keyCode, KeyEvent event) { 20436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 20536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 20636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 20736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 20836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean performIdentifierAction(int id, int flags) { 20936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("performIdentifierAction is not implemented"); 21036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 21136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 21236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 21336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setQwertyMode(boolean isQwerty) { 21436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 21536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 21636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley /* package */ interface WearableActionDrawerMenuListener { 21736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 21836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void menuItemChanged(int position); 21936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void menuItemAdded(int position); 22136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void menuItemRemoved(int position); 22336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void menuChanged(); 22536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 22636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public static final class WearableActionDrawerMenuItem implements MenuItem { 22836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final int mId; 23036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 23136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final Context mContext; 23236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final MenuItemChangedListener mItemChangedListener; 23336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private CharSequence mTitle; 23436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private Drawable mIconDrawable; 23536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private MenuItem.OnMenuItemClickListener mClickListener; 23636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 23736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley WearableActionDrawerMenuItem( 23836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley Context context, int id, CharSequence title, MenuItemChangedListener listener) { 23936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mContext = context; 24036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mId = id; 24136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mTitle = title; 24236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItemChangedListener = listener; 24336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 24436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 24536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 24636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int getItemId() { 24736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mId; 24836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 24936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 25036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 25136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setTitle(CharSequence title) { 25236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mTitle = title; 25336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if (mItemChangedListener != null) { 25436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItemChangedListener.itemChanged(this); 25536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 25636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 25736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 25836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 25936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 26036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setTitle(int title) { 26136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return setTitle(mContext.getResources().getString(title)); 26236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 26336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 26436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 26536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public CharSequence getTitle() { 26636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mTitle; 26736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 26836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 26936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 27036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setIcon(Drawable icon) { 27136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mIconDrawable = icon; 27236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if (mItemChangedListener != null) { 27336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItemChangedListener.itemChanged(this); 27436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 27536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 27636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 27736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 27836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 27936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setIcon(int iconRes) { 28036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return setIcon(mContext.getResources().getDrawable(iconRes)); 28136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 28236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 28336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 28436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public Drawable getIcon() { 28536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mIconDrawable; 28636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 28736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 28836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 28936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) { 29036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mClickListener = menuItemClickListener; 29136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 29236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 29336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 29436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 29536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int getGroupId() { 29636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return 0; 29736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 29836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 29936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 30036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int getOrder() { 30136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return 0; 30236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 30336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 30436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 30536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setTitleCondensed(CharSequence title) { 30636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 30736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 30836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 30936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 31036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public CharSequence getTitleCondensed() { 31136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 31236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 31336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 31436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 31536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setIntent(Intent intent) { 31636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setIntent is not implemented"); 31736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 31836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 31936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 32036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public Intent getIntent() { 32136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 32236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 32336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 32436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 32536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setShortcut(char numericChar, char alphaChar) { 32636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setShortcut is not implemented"); 32736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 32836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 32936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 33036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setNumericShortcut(char numericChar) { 33136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 33236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 33336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 33436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 33536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public char getNumericShortcut() { 33636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return 0; 33736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 33836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 33936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 34036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setAlphabeticShortcut(char alphaChar) { 34136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 34236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 34336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 34436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 34536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public char getAlphabeticShortcut() { 34636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return 0; 34736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 34836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 34936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 35036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setCheckable(boolean checkable) { 35136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 35236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 35336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 35436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 35536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isCheckable() { 35636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 35736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 35836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 35936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 36036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setChecked(boolean checked) { 36136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 36236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 36336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 36436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 36536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isChecked() { 36636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 36736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 36836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 36936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 37036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setVisible(boolean visible) { 37136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 37236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 37336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 37436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 37536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isVisible() { 37636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 37736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 37836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 37936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 38036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setEnabled(boolean enabled) { 38136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 38236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 38336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 38436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 38536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isEnabled() { 38636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 38736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 38836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 38936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 39036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean hasSubMenu() { 39136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 39236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 39336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 39436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 39536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu getSubMenu() { 39636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 39736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 39836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 39936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 40036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public ContextMenu.ContextMenuInfo getMenuInfo() { 40136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 40236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 40336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 40436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 40536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setShowAsAction(int actionEnum) { 40636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setShowAsAction is not implemented"); 40736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 40836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 40936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 41036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setShowAsActionFlags(int actionEnum) { 41136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setShowAsActionFlags is not implemented"); 41236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 41336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 41436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 41536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setActionView(View view) { 41636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setActionView is not implemented"); 41736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 41836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 41936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 42036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setActionView(int resId) { 42136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setActionView is not implemented"); 42236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 42336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 42436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 42536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public View getActionView() { 42636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 42736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 42836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 42936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 43036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setActionProvider(ActionProvider actionProvider) { 43136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setActionProvider is not implemented"); 43236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 43336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 43436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 43536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public ActionProvider getActionProvider() { 43636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 43736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 43836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 43936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 44036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean expandActionView() { 44136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("expandActionView is not implemented"); 44236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 44336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 44436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 44536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean collapseActionView() { 44636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("collapseActionView is not implemented"); 44736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 44836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 44936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 45036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isActionViewExpanded() { 45136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("isActionViewExpanded is not implemented"); 45236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 45336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 45436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 45536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setOnActionExpandListener(OnActionExpandListener listener) { 45636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setOnActionExpandListener is not implemented"); 45736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 45836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 45936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley /** 46036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * Invokes the item by calling the listener if set. 46136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * 46236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * @return true if the invocation was handled, false otherwise 46336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley */ 46436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley /* package */ boolean invoke() { 46536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mClickListener != null && mClickListener.onMenuItemClick(this); 46636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 46736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 46836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 46936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private interface MenuItemChangedListener { 47036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 47136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void itemChanged(WearableActionDrawerMenuItem item); 47236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 47336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 47436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley} 475