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