1bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang/* 259a110ba7df2699b50328520a2b400bc74965915Justin Klaassen * Copyright (C) 2016 The Android Open Source Project 3bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * 4bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 5bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * you may not use this file except in compliance with the License. 6bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * You may obtain a copy of the License at 7bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * 8bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * http://www.apache.org/licenses/LICENSE-2.0 9bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * 10bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * Unless required by applicable law or agreed to in writing, software 11bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 12bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * See the License for the specific language governing permissions and 14bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * limitations under the License. 15bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang */ 1659a110ba7df2699b50328520a2b400bc74965915Justin Klaassen 17bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhangpackage com.android.deskclock.actionbarmenu; 18bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang 19bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhangimport android.view.Menu; 20bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhangimport android.view.MenuItem; 21bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang 22bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang/** 23bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * Interface for handling a single menu item in action bar. 24bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang */ 25bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhangpublic interface MenuItemController { 26bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang 27bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang /** 2859a110ba7df2699b50328520a2b400bc74965915Justin Klaassen * Returns the menu item resource id that the controller manages. 29bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang */ 30bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang int getId(); 31bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang 32bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang /** 3359a110ba7df2699b50328520a2b400bc74965915Justin Klaassen * Create the menu item. 3489b52a96f4aef42bf423a7f18b0c124945ec0ec3Fan Zhang */ 3559a110ba7df2699b50328520a2b400bc74965915Justin Klaassen void onCreateOptionsItem(Menu menu); 3689b52a96f4aef42bf423a7f18b0c124945ec0ec3Fan Zhang 3789b52a96f4aef42bf423a7f18b0c124945ec0ec3Fan Zhang /** 3859a110ba7df2699b50328520a2b400bc74965915Justin Klaassen * Called immediately before the {@link MenuItem} is shown. 39bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * 4059a110ba7df2699b50328520a2b400bc74965915Justin Klaassen * @param item the {@link MenuItem} created by the controller 41bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang */ 4259a110ba7df2699b50328520a2b400bc74965915Justin Klaassen void onPrepareOptionsItem(MenuItem item); 43bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang 44bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang /** 45bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * Attempts to handle the click action. 46bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang * 4759a110ba7df2699b50328520a2b400bc74965915Justin Klaassen * @param item the {@link MenuItem} that was selected 4859a110ba7df2699b50328520a2b400bc74965915Justin Klaassen * @return {@code true} if the action is handled by this controller 49bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang */ 5059a110ba7df2699b50328520a2b400bc74965915Justin Klaassen boolean onOptionsItemSelected(MenuItem item); 51bb823cda3261951f0e461aa9e348e23f5e84ca8bFan Zhang} 52