19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
197b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbyeimport android.annotation.DrawableRes;
207b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbyeimport android.annotation.LayoutRes;
216eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikovimport android.annotation.Nullable;
227b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbyeimport android.annotation.StringRes;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.app.Activity;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent;
256eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikovimport android.content.res.ColorStateList;
266eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikovimport android.graphics.PorterDuff;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.drawable.Drawable;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ContextMenu.ContextMenuInfo;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View.OnCreateContextMenuListener;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Interface for direct access to a previously created menu item.
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * An Item is returned by calling one of the {@link android.view.Menu#add}
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * methods.
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For a feature set of specific menu types, see {@link Menu}.
38558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez *
39558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <div class="special reference">
40558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <h3>Developer Guides</h3>
41558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <p>For information about creating menus, read the
42558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <a href="{@docRoot}guide/topics/ui/menus.html">Menus</a> developer guide.</p>
43558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * </div>
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface MenuItem {
4689e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell    /*
4789e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     * These should be kept in sync with attrs.xml enum constants for showAsAction
4889e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     */
4989e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell    /** Never show this item as a button in an Action Bar. */
5089e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell    public static final int SHOW_AS_ACTION_NEVER = 0;
5189e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell    /** Show this item as a button in an Action Bar if the system decides there is room for it. */
5289e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell    public static final int SHOW_AS_ACTION_IF_ROOM = 1;
5389e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell    /**
5489e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     * Always show this item as a button in an Action Bar.
5589e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     * Use sparingly! If too many items are set to always show in the Action Bar it can
5689e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     * crowd the Action Bar and degrade the user experience on devices with smaller screens.
5789e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     * A good rule of thumb is to have no more than 2 items set to always show at a time.
5889e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     */
5989e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell    public static final int SHOW_AS_ACTION_ALWAYS = 2;
60d8404b23739b135060ab9a04317a9f8b990cf8caAdam Powell
61d8404b23739b135060ab9a04317a9f8b990cf8caAdam Powell    /**
62d8404b23739b135060ab9a04317a9f8b990cf8caAdam Powell     * When this item is in the action bar, always show it with a text label even if
63d8404b23739b135060ab9a04317a9f8b990cf8caAdam Powell     * it also has an icon specified.
64d8404b23739b135060ab9a04317a9f8b990cf8caAdam Powell     */
65d8404b23739b135060ab9a04317a9f8b990cf8caAdam Powell    public static final int SHOW_AS_ACTION_WITH_TEXT = 4;
668d02deabac62c4a68a335a7b3141795466362b89Adam Powell
678d02deabac62c4a68a335a7b3141795466362b89Adam Powell    /**
688d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * This item's action view collapses to a normal menu item.
698d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * When expanded, the action view temporarily takes over
708d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * a larger segment of its container.
718d02deabac62c4a68a335a7b3141795466362b89Adam Powell     */
728d02deabac62c4a68a335a7b3141795466362b89Adam Powell    public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8;
73484c2e2fbec02209337bb86fc99b8b253bc06f99Siyamed Sinir
74484c2e2fbec02209337bb86fc99b8b253bc06f99Siyamed Sinir    /**
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Interface definition for a callback to be invoked when a menu item is
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * clicked.
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Activity#onContextItemSelected(MenuItem)
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Activity#onOptionsItemSelected(MenuItem)
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public interface OnMenuItemClickListener {
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Called when a menu item has been invoked.  This is the first code
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * that is executed; if it returns true, no other callbacks will be
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * executed.
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param item The menu item that was invoked.
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return Return true to consume this click and prevent others from
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *         executing.
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public boolean onMenuItemClick(MenuItem item);
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
968d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * Interface definition for a callback to be invoked when a menu item
978d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * marked with {@link MenuItem#SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW} is
988d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * expanded or collapsed.
998d02deabac62c4a68a335a7b3141795466362b89Adam Powell     *
1008d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @see MenuItem#expandActionView()
1018d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @see MenuItem#collapseActionView()
1028d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @see MenuItem#setShowAsActionFlags(int)
1038d02deabac62c4a68a335a7b3141795466362b89Adam Powell     */
1048d02deabac62c4a68a335a7b3141795466362b89Adam Powell    public interface OnActionExpandListener {
1058d02deabac62c4a68a335a7b3141795466362b89Adam Powell        /**
1068d02deabac62c4a68a335a7b3141795466362b89Adam Powell         * Called when a menu item with {@link MenuItem#SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}
1078d02deabac62c4a68a335a7b3141795466362b89Adam Powell         * is expanded.
1088d02deabac62c4a68a335a7b3141795466362b89Adam Powell         * @param item Item that was expanded
1098d02deabac62c4a68a335a7b3141795466362b89Adam Powell         * @return true if the item should expand, false if expansion should be suppressed.
1108d02deabac62c4a68a335a7b3141795466362b89Adam Powell         */
1118d02deabac62c4a68a335a7b3141795466362b89Adam Powell        public boolean onMenuItemActionExpand(MenuItem item);
1128d02deabac62c4a68a335a7b3141795466362b89Adam Powell
1138d02deabac62c4a68a335a7b3141795466362b89Adam Powell        /**
1148d02deabac62c4a68a335a7b3141795466362b89Adam Powell         * Called when a menu item with {@link MenuItem#SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}
1158d02deabac62c4a68a335a7b3141795466362b89Adam Powell         * is collapsed.
1168d02deabac62c4a68a335a7b3141795466362b89Adam Powell         * @param item Item that was collapsed
1178d02deabac62c4a68a335a7b3141795466362b89Adam Powell         * @return true if the item should collapse, false if collapsing should be suppressed.
1188d02deabac62c4a68a335a7b3141795466362b89Adam Powell         */
1198d02deabac62c4a68a335a7b3141795466362b89Adam Powell        public boolean onMenuItemActionCollapse(MenuItem item);
1208d02deabac62c4a68a335a7b3141795466362b89Adam Powell    }
1218d02deabac62c4a68a335a7b3141795466362b89Adam Powell
1228d02deabac62c4a68a335a7b3141795466362b89Adam Powell    /**
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the identifier for this menu item.  The identifier can not
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be changed after the menu is created.
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The menu item's identifier.
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getItemId();
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the group identifier that this menu item is part of. The group
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * identifier can not be changed after the menu is created.
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The menu item's group identifier.
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getGroupId();
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the category and order within the category of this item. This
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * item will be shown before all items (within its category) that have
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * order greater than this value.
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * An order integer contains the item's category (the upper bits of the
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * integer; set by or/add the category with the order within the
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * category) and the ordering of the item within that category (the
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * lower bits). Example categories are {@link Menu#CATEGORY_SYSTEM},
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Menu#CATEGORY_SECONDARY}, {@link Menu#CATEGORY_ALTERNATIVE},
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Menu#CATEGORY_CONTAINER}. See {@link Menu} for a full list.
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The order of this item.
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getOrder();
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the title associated with this item.
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param title The new text to be displayed.
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setTitle(CharSequence title);
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the title associated with this item.
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Some menu types do not sufficient space to show the full title, and
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * instead a condensed title is preferred. See {@link Menu} for more
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * information.
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param title The resource id of the new text to be displayed.
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #setTitleCondensed(CharSequence)
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1747b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye    public MenuItem setTitle(@StringRes int title);
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve the current title of the item.
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The title.
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public CharSequence getTitle();
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the condensed title associated with this item. The condensed
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * title is used in situations where the normal title may be too long to
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be displayed.
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param title The new text to be displayed as the condensed title.
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setTitleCondensed(CharSequence title);
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve the current condensed title of the item. If a condensed
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * title was never set, it will return the normal title.
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The condensed title, if it exists.
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         Otherwise the normal title.
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public CharSequence getTitleCondensed();
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the icon associated with this item. This icon will not always be
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * shown, so the title should be sufficient in describing this item. See
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Menu} for the menu types that support icons.
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param icon The new icon (as a Drawable) to be displayed.
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setIcon(Drawable icon);
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the icon associated with this item. This icon will not always be
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * shown, so the title should be sufficient in describing this item. See
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Menu} for the menu types that support icons.
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method will set the resource ID of the icon which will be used to
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * lazily get the Drawable when this item is being shown.
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param iconRes The new icon (as a resource ID) to be displayed.
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2237b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye    public MenuItem setIcon(@DrawableRes int iconRes);
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the icon for this item as a Drawable (getting it from resources if it hasn't been
2276eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * loaded before). Note that if you call {@link #setIconTintList(ColorStateList)} or
2286eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * {@link #setIconTintMode(PorterDuff.Mode)} on this item, and you use a custom menu presenter
2296eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * in your application, you have to apply the tinting explicitly on the {@link Drawable}
2306eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * returned by this method.
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The icon as a Drawable.
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Drawable getIcon();
2356eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov
2366eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    /**
2376eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * Applies a tint to this item's icon. Does not modify the
2386eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * current tint mode, which is {@link PorterDuff.Mode#SRC_IN} by default.
2396eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * <p>
2406eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * Subsequent calls to {@link #setIcon(Drawable)} or {@link #setIcon(int)} will
2416eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * automatically mutate the icon and apply the specified tint and
2426eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * tint mode using
2436eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * {@link Drawable#setTintList(ColorStateList)}.
2446eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     *
2456eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @param tint the tint to apply, may be {@code null} to clear tint
2466eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     *
2476eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @attr ref android.R.styleable#MenuItem_iconTint
2486eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @see #getIconTintList()
2496eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @see Drawable#setTintList(ColorStateList)
2506eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     */
2516eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    public default MenuItem setIconTintList(@Nullable ColorStateList tint) { return this; }
2526eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov
2536eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    /**
2546eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @return the tint applied to this item's icon
2556eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @attr ref android.R.styleable#MenuItem_iconTint
2566eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @see #setIconTintList(ColorStateList)
2576eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     */
2586eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    @Nullable
2596eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    public default ColorStateList getIconTintList() { return null; }
2606eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov
2616eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    /**
2626eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * Specifies the blending mode used to apply the tint specified by
2636eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * {@link #setIconTintList(ColorStateList)} to this item's icon. The default mode is
2646eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * {@link PorterDuff.Mode#SRC_IN}.
2656eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     *
2666eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @param tintMode the blending mode used to apply the tint, may be
2676eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     *                 {@code null} to clear tint
2686eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @attr ref android.R.styleable#MenuItem_iconTintMode
2696eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @see #setIconTintList(ColorStateList)
2706eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @see Drawable#setTintMode(PorterDuff.Mode)
2716eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     */
2726eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    public default MenuItem setIconTintMode(@Nullable PorterDuff.Mode tintMode) { return this; }
2736eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov
2746eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    /**
2756eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * Returns the blending mode used to apply the tint to this item's icon, if specified.
2766eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     *
2776eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @return the blending mode used to apply the tint to this item's icon
2786eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @attr ref android.R.styleable#MenuItem_iconTintMode
2796eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     * @see #setIconTintMode(PorterDuff.Mode)
2806eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov     */
2816eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    @Nullable
2826eea0d2a4ce20c9709d2cc9c24c823f7ef795c0aKirill Grouchnikov    public default PorterDuff.Mode getIconTintMode() { return null; }
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the Intent associated with this item.  By default there is no
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intent associated with a menu item.  If you set one, and nothing
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * else handles the item, then the default behavior will be to call
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.content.Context#startActivity} with the given Intent.
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note that setIntent() can not be used with the versions of
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Menu#add} that take a Runnable, because {@link Runnable#run}
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * does not return a value so there is no way to tell if it handled the
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * item.  In this case it is assumed that the Runnable always handles
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the item, and the intent will never be started.
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getIntent
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param intent The Intent to associated with the item.  This Intent
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               object is <em>not</em> copied, so be careful not to
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *               modify it later.
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setIntent(Intent intent);
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the Intent associated with this item.  This returns a
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * reference to the Intent which you can change as desired to modify
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * what the Item is holding.
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #setIntent
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Returns the last value supplied to {@link #setIntent}, or
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         null.
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Intent getIntent();
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change both the numeric and alphabetic shortcut associated with this
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * item. Note that the shortcut will be triggered when the key that
318e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * generates the given character is pressed along with the corresponding
319e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * modifier key. The default modifier is  {@link KeyEvent#META_CTRL_ON} in
320e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * case nothing is specified. Also note that case is not significant and
321e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * that alphabetic shortcut characters will be handled in lower case.
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * See {@link Menu} for the menu types that support shortcuts.
324e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param numericChar The numeric shortcut key. This is the shortcut when
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        using a numeric (e.g., 12-key) keyboard.
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param alphaChar The alphabetic shortcut key. This is the shortcut when
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        using a keyboard with alphabetic keys.
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setShortcut(char numericChar, char alphaChar);
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
334e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * Change both the numeric and alphabetic shortcut associated with this
335e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * item. Note that the shortcut will be triggered when the key that
336e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * generates the given character is pressed along with the corresponding
337e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * modifier key. Also note that case is not significant and that alphabetic
338e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * shortcut characters will be handled in lower case.
339e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * <p>
340e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * See {@link Menu} for the menu types that support shortcuts.
341e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *
342e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @param numericChar The numeric shortcut key. This is the shortcut when
343e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        using a numeric (e.g., 12-key) keyboard.
344e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @param numericModifiers The numeric modifier associated with the shortcut. It should
345e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        be a combination of {@link KeyEvent#META_META_ON}, {@link KeyEvent#META_CTRL_ON},
346e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        {@link KeyEvent#META_ALT_ON}, {@link KeyEvent#META_SHIFT_ON},
347e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        {@link KeyEvent#META_SYM_ON}, {@link KeyEvent#META_FUNCTION_ON}.
348e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @param alphaChar The alphabetic shortcut key. This is the shortcut when
349e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        using a keyboard with alphabetic keys.
350e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @param alphaModifiers The alphabetic modifier associated with the shortcut. It should
351e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        be a combination of {@link KeyEvent#META_META_ON}, {@link KeyEvent#META_CTRL_ON},
352e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        {@link KeyEvent#META_ALT_ON}, {@link KeyEvent#META_SHIFT_ON},
353e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        {@link KeyEvent#META_SYM_ON}, {@link KeyEvent#META_FUNCTION_ON}.
354e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @return This Item so additional setters can be called.
355e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     */
356e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    default public MenuItem setShortcut(char numericChar, char alphaChar, int numericModifiers,
357e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal            int alphaModifiers) {
358e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        if ((alphaModifiers & Menu.SUPPORTED_MODIFIERS_MASK) == KeyEvent.META_CTRL_ON
359e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal                && (numericModifiers & Menu.SUPPORTED_MODIFIERS_MASK) == KeyEvent.META_CTRL_ON) {
360e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal            return setShortcut(numericChar, alphaChar);
361e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        } else {
362e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal            return this;
363e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        }
364e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    }
365e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal
366e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    /**
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the numeric shortcut associated with this item.
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * See {@link Menu} for the menu types that support shortcuts.
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param numericChar The numeric shortcut key.  This is the shortcut when
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                 using a 12-key (numeric) keyboard.
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setNumericShortcut(char numericChar);
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
378e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * Change the numeric shortcut and modifiers associated with this item.
379e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * <p>
380e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * See {@link Menu} for the menu types that support shortcuts.
381e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *
382e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @param numericChar The numeric shortcut key.  This is the shortcut when
383e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *                 using a 12-key (numeric) keyboard.
384e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @param numericModifiers The modifier associated with the shortcut. It should
385e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        be a combination of {@link KeyEvent#META_META_ON}, {@link KeyEvent#META_CTRL_ON},
386e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        {@link KeyEvent#META_ALT_ON}, {@link KeyEvent#META_SHIFT_ON},
387e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        {@link KeyEvent#META_SYM_ON}, {@link KeyEvent#META_FUNCTION_ON}.
388e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @return This Item so additional setters can be called.
389e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     */
390e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    default public MenuItem setNumericShortcut(char numericChar, int numericModifiers) {
391e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        if ((numericModifiers & Menu.SUPPORTED_MODIFIERS_MASK) == KeyEvent.META_CTRL_ON) {
392e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal            return setNumericShortcut(numericChar);
393e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        } else {
394e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal            return this;
395e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        }
396e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    }
397e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal
398e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    /**
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the char for this menu item's numeric (12-key) shortcut.
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Numeric character to use as a shortcut.
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public char getNumericShortcut();
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
406e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * Return the modifiers for this menu item's numeric (12-key) shortcut.
407e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * The modifier is a combination of {@link KeyEvent#META_META_ON},
408e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * {@link KeyEvent#META_CTRL_ON}, {@link KeyEvent#META_ALT_ON},
409e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * {@link KeyEvent#META_SHIFT_ON}, {@link KeyEvent#META_SYM_ON},
410e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * {@link KeyEvent#META_FUNCTION_ON}.
411e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * For example, {@link KeyEvent#META_FUNCTION_ON}|{@link KeyEvent#META_CTRL_ON}
412e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *
413e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @return Modifier associated with the numeric shortcut.
414e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     */
415e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    default public int getNumericModifiers() {
416e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        return KeyEvent.META_CTRL_ON;
417e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    }
418e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal
419e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    /**
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the alphabetic shortcut associated with this item. The shortcut
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will be triggered when the key that generates the given character is
422e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * pressed along with the corresponding modifier key. The default modifier
423e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * is {@link KeyEvent#META_CTRL_ON} in case nothing is specified. Case is
424e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * not significant and shortcut characters will be displayed in lower case.
425e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * Note that menu items with the characters '\b' or '\n' as shortcuts will
426e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * get triggered by the Delete key or Carriage Return key, respectively.
427e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * <p>
428e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * See {@link Menu} for the menu types that support shortcuts.
429e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *
430e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @param alphaChar The alphabetic shortcut key. This is the shortcut when
431e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        using a keyboard with alphabetic keys.
432e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @return This Item so additional setters can be called.
433e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     */
434e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    public MenuItem setAlphabeticShortcut(char alphaChar);
435e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal
436e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    /**
437e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * Change the alphabetic shortcut associated with this item. The shortcut
438e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * will be triggered when the key that generates the given character is
439e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * pressed along with the modifier keys. Case is not significant and shortcut
4407b69e056fde74413e2a028b504d9f526ae04ca8aMichael Wright     * characters will be displayed in lower case. Note that menu items with
4417b69e056fde74413e2a028b504d9f526ae04ca8aMichael Wright     * the characters '\b' or '\n' as shortcuts will get triggered by the
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Delete key or Carriage Return key, respectively.
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * See {@link Menu} for the menu types that support shortcuts.
445e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param alphaChar The alphabetic shortcut key. This is the shortcut when
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        using a keyboard with alphabetic keys.
448e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @param alphaModifiers The modifier associated with the shortcut. It should
449e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        be a combination of {@link KeyEvent#META_META_ON}, {@link KeyEvent#META_CTRL_ON},
450e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        {@link KeyEvent#META_ALT_ON}, {@link KeyEvent#META_SHIFT_ON},
451e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *        {@link KeyEvent#META_SYM_ON}, {@link KeyEvent#META_FUNCTION_ON}.
4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
454e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    default public MenuItem setAlphabeticShortcut(char alphaChar, int alphaModifiers) {
455e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        if ((alphaModifiers & Menu.SUPPORTED_MODIFIERS_MASK) == KeyEvent.META_CTRL_ON) {
456e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal            return setAlphabeticShortcut(alphaChar);
457e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        } else {
458e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal            return this;
459e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        }
460e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    }
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the char for this menu item's alphabetic shortcut.
4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Alphabetic character to use as a shortcut.
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public char getAlphabeticShortcut();
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
470e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * Return the modifier for this menu item's alphabetic shortcut.
471e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * The modifier is a combination of {@link KeyEvent#META_META_ON},
472e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * {@link KeyEvent#META_CTRL_ON}, {@link KeyEvent#META_ALT_ON},
473e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * {@link KeyEvent#META_SHIFT_ON}, {@link KeyEvent#META_SYM_ON},
474e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * {@link KeyEvent#META_FUNCTION_ON}.
475e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * For example, {@link KeyEvent#META_FUNCTION_ON}|{@link KeyEvent#META_CTRL_ON}
476e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *
477e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     * @return Modifier associated with the keyboard shortcut.
478e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     */
479e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    default public int getAlphabeticModifiers() {
480e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal        return KeyEvent.META_CTRL_ON;
481e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    }
482e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal
483e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal    /**
4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Control whether this item can display a check mark. Setting this does
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not actually display a check mark (see {@link #setChecked} for that);
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * rather, it ensures there is room in the item in which to display a
4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * check mark.
4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * See {@link Menu} for the menu types that support check marks.
490e631e32a1a771a36267af3f8af8b64e9365bc19ePeeyush Agarwal     *
4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param checkable Set to true to allow a check mark, false to
4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            disallow. The default is false.
4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #setChecked
4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #isCheckable
4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Menu#setGroupCheckable
4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setCheckable(boolean checkable);
4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return whether the item can currently display a check mark.
5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If a check mark can be displayed, returns true.
5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #setCheckable
5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isCheckable();
5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Control whether this item is shown with a check mark.  Note that you
5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * must first have enabled checking with {@link #setCheckable} or else
5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the check mark will not appear.  If this item is a member of a group that contains
5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * mutually-exclusive items (set via {@link Menu#setGroupCheckable(int, boolean, boolean)},
5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the other items in the group will be unchecked.
5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * See {@link Menu} for the menu types that support check marks.
5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #setCheckable
5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #isChecked
5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Menu#setGroupCheckable
5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param checked Set to true to display a check mark, false to hide
5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                it.  The default value is false.
5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setChecked(boolean checked);
5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return whether the item is currently displaying a check mark.
5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If a check mark is displayed, returns true.
5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #setChecked
5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isChecked();
5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the visibility of the menu item. Even if a menu item is not visible,
5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * it may still be invoked via its shortcut (to completely disable an item,
5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * set it to invisible and {@link #setEnabled(boolean) disabled}).
5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param visible If true then the item will be visible; if false it is
5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        hidden.
5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setVisible(boolean visible);
5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the visibility of the menu item.
5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If true the item is visible; else it is hidden.
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isVisible();
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets whether the menu item is enabled. Disabling a menu item will not
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * allow it to be invoked via its shortcut. The menu item will still be
5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * visible.
5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param enabled If true then the item will be invokable; if false it is
5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        won't be invokable.
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setEnabled(boolean enabled);
5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the enabled state of the menu item.
5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If true the item is enabled and hence invokable; else it is not.
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isEnabled();
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Check whether this item has an associated sub-menu.  I.e. it is a
5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sub-menu of another menu.
5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return If true this item has a menu; else it is a
5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         normal item.
5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean hasSubMenu();
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the sub-menu to be invoked when this item is selected, if it has
5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * one. See {@link #hasSubMenu()}.
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The associated menu if there is one, else null
5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public SubMenu getSubMenu();
5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set a custom listener for invocation of this menu item. In most
5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * situations, it is more efficient and easier to use
5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Activity#onOptionsItemSelected(MenuItem)} or
5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link Activity#onContextItemSelected(MenuItem)}.
5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param menuItemClickListener The object to receive invokations.
5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return This Item so additional setters can be called.
5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Activity#onOptionsItemSelected(MenuItem)
5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see Activity#onContextItemSelected(MenuItem)
5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MenuItem setOnMenuItemClickListener(MenuItem.OnMenuItemClickListener menuItemClickListener);
6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the extra information linked to this menu item.  This extra
6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * information is set by the View that added this menu item to the
6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * menu.
6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see OnCreateContextMenuListener
6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return The extra information linked to the View that added this
6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         menu item to the menu. This can be null.
6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ContextMenuInfo getMenuInfo();
61289e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell
61389e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell    /**
61489e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     * Sets how this item should display in the presence of an Action Bar.
615759dc706ba61dda6b9eef80ecae2d590383229aeAdam Powell     * The parameter actionEnum is a flag set. One of {@link #SHOW_AS_ACTION_ALWAYS},
616759dc706ba61dda6b9eef80ecae2d590383229aeAdam Powell     * {@link #SHOW_AS_ACTION_IF_ROOM}, or {@link #SHOW_AS_ACTION_NEVER} should
617759dc706ba61dda6b9eef80ecae2d590383229aeAdam Powell     * be used, and you may optionally OR the value with {@link #SHOW_AS_ACTION_WITH_TEXT}.
618759dc706ba61dda6b9eef80ecae2d590383229aeAdam Powell     * SHOW_AS_ACTION_WITH_TEXT requests that when the item is shown as an action,
619759dc706ba61dda6b9eef80ecae2d590383229aeAdam Powell     * it should be shown with a text label.
62089e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     *
62189e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     * @param actionEnum How the item should display. One of
622ec66a3a9e06ae91e0b49a5e858e46fe0c91606f1Adam Powell     * {@link #SHOW_AS_ACTION_ALWAYS}, {@link #SHOW_AS_ACTION_IF_ROOM}, or
623ec66a3a9e06ae91e0b49a5e858e46fe0c91606f1Adam Powell     * {@link #SHOW_AS_ACTION_NEVER}. SHOW_AS_ACTION_NEVER is the default.
62489e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     *
62589e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     * @see android.app.ActionBar
626cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * @see #setActionView(View)
62789e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell     */
62889e0645b4157961e8c465eb9c819f965fdb453d8Adam Powell    public void setShowAsAction(int actionEnum);
629cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell
630cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell    /**
6318d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * Sets how this item should display in the presence of an Action Bar.
6328d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * The parameter actionEnum is a flag set. One of {@link #SHOW_AS_ACTION_ALWAYS},
6338d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * {@link #SHOW_AS_ACTION_IF_ROOM}, or {@link #SHOW_AS_ACTION_NEVER} should
6348d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * be used, and you may optionally OR the value with {@link #SHOW_AS_ACTION_WITH_TEXT}.
6358d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * SHOW_AS_ACTION_WITH_TEXT requests that when the item is shown as an action,
6368d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * it should be shown with a text label.
6378d02deabac62c4a68a335a7b3141795466362b89Adam Powell     *
6388d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * <p>Note: This method differs from {@link #setShowAsAction(int)} only in that it
6398d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * returns the current MenuItem instance for call chaining.
6408d02deabac62c4a68a335a7b3141795466362b89Adam Powell     *
6418d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @param actionEnum How the item should display. One of
6428d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * {@link #SHOW_AS_ACTION_ALWAYS}, {@link #SHOW_AS_ACTION_IF_ROOM}, or
6438d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * {@link #SHOW_AS_ACTION_NEVER}. SHOW_AS_ACTION_NEVER is the default.
6448d02deabac62c4a68a335a7b3141795466362b89Adam Powell     *
6458d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @see android.app.ActionBar
6468d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @see #setActionView(View)
6478d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @return This MenuItem instance for call chaining.
6488d02deabac62c4a68a335a7b3141795466362b89Adam Powell     */
6498d02deabac62c4a68a335a7b3141795466362b89Adam Powell    public MenuItem setShowAsActionFlags(int actionEnum);
6508d02deabac62c4a68a335a7b3141795466362b89Adam Powell
6518d02deabac62c4a68a335a7b3141795466362b89Adam Powell    /**
652cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * Set an action view for this menu item. An action view will be displayed in place
653cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * of an automatically generated menu item element in the UI when this item is shown
654cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * as an action within a parent.
65551ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * <p>
65651ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *   <strong>Note:</strong> Setting an action view overrides the action provider
65751ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *           set via {@link #setActionProvider(ActionProvider)}.
65851ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * </p>
659cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     *
660cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * @param view View to use for presenting this item to the user.
661cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * @return This Item so additional setters can be called.
662cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     *
663cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * @see #setShowAsAction(int)
664cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     */
665cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell    public MenuItem setActionView(View view);
666cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell
667cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell    /**
6683f476b34049d062942eafcf48396f593e00bd324Adam Powell     * Set an action view for this menu item. An action view will be displayed in place
6693f476b34049d062942eafcf48396f593e00bd324Adam Powell     * of an automatically generated menu item element in the UI when this item is shown
6703f476b34049d062942eafcf48396f593e00bd324Adam Powell     * as an action within a parent.
67151ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * <p>
67251ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *   <strong>Note:</strong> Setting an action view overrides the action provider
67351ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *           set via {@link #setActionProvider(ActionProvider)}.
67451ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * </p>
6753f476b34049d062942eafcf48396f593e00bd324Adam Powell     *
6763f476b34049d062942eafcf48396f593e00bd324Adam Powell     * @param resId Layout resource to use for presenting this item to the user.
6773f476b34049d062942eafcf48396f593e00bd324Adam Powell     * @return This Item so additional setters can be called.
6783f476b34049d062942eafcf48396f593e00bd324Adam Powell     *
6793f476b34049d062942eafcf48396f593e00bd324Adam Powell     * @see #setShowAsAction(int)
6803f476b34049d062942eafcf48396f593e00bd324Adam Powell     */
6817b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye    public MenuItem setActionView(@LayoutRes int resId);
6823f476b34049d062942eafcf48396f593e00bd324Adam Powell
6833f476b34049d062942eafcf48396f593e00bd324Adam Powell    /**
684cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * Returns the currently set action view for this menu item.
685cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     *
686cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * @return This item's action view
687cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     *
688cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * @see #setActionView(View)
689cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     * @see #setShowAsAction(int)
690cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell     */
691cf78b3e5101349fdddbde14b3a55140f9562ae66Adam Powell    public View getActionView();
6928d02deabac62c4a68a335a7b3141795466362b89Adam Powell
6938d02deabac62c4a68a335a7b3141795466362b89Adam Powell    /**
69451ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * Sets the {@link ActionProvider} responsible for creating an action view if
69551ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * the item is placed on the action bar. The provider also provides a default
69651ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * action invoked if the item is placed in the overflow menu.
69751ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * <p>
69851ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *   <strong>Note:</strong> Setting an action provider overrides the action view
69951ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *           set via {@link #setActionView(int)} or {@link #setActionView(View)}.
70051ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * </p>
70151ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *
70251ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * @param actionProvider The action provider.
70351ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * @return This Item so additional setters can be called.
70451ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *
70551ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * @see ActionProvider
70651ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     */
70751ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov    public MenuItem setActionProvider(ActionProvider actionProvider);
70851ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov
70951ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov    /**
71051ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * Gets the {@link ActionProvider}.
71151ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *
71251ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * @return The action provider.
71351ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     *
71451ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * @see ActionProvider
71551ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     * @see #setActionProvider(ActionProvider)
71651ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov     */
71751ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov    public ActionProvider getActionProvider();
71851ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov
71951ac0e94a83cfccb5105aa14df1077729a5b4cccSvetoslav Ganov    /**
7208d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * Expand the action view associated with this menu item.
7218d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * The menu item must have an action view set, as well as
7228d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * the showAsAction flag {@link #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}.
7238d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * If a listener has been set using {@link #setOnActionExpandListener(OnActionExpandListener)}
7248d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * it will have its {@link OnActionExpandListener#onMenuItemActionExpand(MenuItem)}
7258d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * method invoked. The listener may return false from this method to prevent expanding
7268d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * the action view.
7278d02deabac62c4a68a335a7b3141795466362b89Adam Powell     *
7288d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @return true if the action view was expanded, false otherwise.
7298d02deabac62c4a68a335a7b3141795466362b89Adam Powell     */
7308d02deabac62c4a68a335a7b3141795466362b89Adam Powell    public boolean expandActionView();
7318d02deabac62c4a68a335a7b3141795466362b89Adam Powell
7328d02deabac62c4a68a335a7b3141795466362b89Adam Powell    /**
7338d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * Collapse the action view associated with this menu item.
7348d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * The menu item must have an action view set, as well as the showAsAction flag
7358d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * {@link #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}. If a listener has been set using
7368d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * {@link #setOnActionExpandListener(OnActionExpandListener)} it will have its
7378d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * {@link OnActionExpandListener#onMenuItemActionCollapse(MenuItem)} method invoked.
7388d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * The listener may return false from this method to prevent collapsing the action view.
7398d02deabac62c4a68a335a7b3141795466362b89Adam Powell     *
7408d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @return true if the action view was collapsed, false otherwise.
7418d02deabac62c4a68a335a7b3141795466362b89Adam Powell     */
7428d02deabac62c4a68a335a7b3141795466362b89Adam Powell    public boolean collapseActionView();
7438d02deabac62c4a68a335a7b3141795466362b89Adam Powell
7448d02deabac62c4a68a335a7b3141795466362b89Adam Powell    /**
7458d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * Returns true if this menu item's action view has been expanded.
7468d02deabac62c4a68a335a7b3141795466362b89Adam Powell     *
7478d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @return true if the item's action view is expanded, false otherwise.
7488d02deabac62c4a68a335a7b3141795466362b89Adam Powell     *
7498d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @see #expandActionView()
7508d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @see #collapseActionView()
7518d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @see #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
7528d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @see OnActionExpandListener
7538d02deabac62c4a68a335a7b3141795466362b89Adam Powell     */
7548d02deabac62c4a68a335a7b3141795466362b89Adam Powell    public boolean isActionViewExpanded();
7558d02deabac62c4a68a335a7b3141795466362b89Adam Powell
7568d02deabac62c4a68a335a7b3141795466362b89Adam Powell    /**
7578d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * Set an {@link OnActionExpandListener} on this menu item to be notified when
7588d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * the associated action view is expanded or collapsed. The menu item must
7598d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * be configured to expand or collapse its action view using the flag
7608d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * {@link #SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW}.
7618d02deabac62c4a68a335a7b3141795466362b89Adam Powell     *
7628d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @param listener Listener that will respond to expand/collapse events
7638d02deabac62c4a68a335a7b3141795466362b89Adam Powell     * @return This menu item instance for call chaining
7648d02deabac62c4a68a335a7b3141795466362b89Adam Powell     */
7658d02deabac62c4a68a335a7b3141795466362b89Adam Powell    public MenuItem setOnActionExpandListener(OnActionExpandListener listener);
7667039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev
7677039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    /**
7687039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     * Change the content description associated with this menu item.
7697039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     *
7707039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     * @param contentDescription The new content description.
7717039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     */
7727039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    default MenuItem setContentDescription(CharSequence contentDescription) {
7737039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev        return this;
7747039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    }
7757039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev
7767039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    /**
7777039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     * Retrieve the content description associated with this menu item.
7787039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     *
7797039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     * @return The content description.
7807039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     */
7817039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    default CharSequence getContentDescription() {
7827039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev        return null;
7837039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    }
7847039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev
7857039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    /**
7867039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     * Change the tooltip text associated with this menu item.
7877039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     *
7886a944ca17547e520ed4988125ee4c1f172c87946Vladislav Kaznacheev     * @param tooltipText The new tooltip text.
7897039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     */
7906a944ca17547e520ed4988125ee4c1f172c87946Vladislav Kaznacheev    default MenuItem setTooltipText(CharSequence tooltipText) {
7917039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev        return this;
7927039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    }
7937039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev
7947039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    /**
7957039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     * Retrieve the tooltip text associated with this menu item.
7967039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     *
7977039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     * @return The tooltip text.
7987039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev     */
7996a944ca17547e520ed4988125ee4c1f172c87946Vladislav Kaznacheev    default CharSequence getTooltipText() {
8007039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev        return null;
8017039cbc6f3a596aee6851014019849490f358f13Vladislav Kaznacheev    }
802484c2e2fbec02209337bb86fc99b8b253bc06f99Siyamed Sinir
803484c2e2fbec02209337bb86fc99b8b253bc06f99Siyamed Sinir    /**
8049c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki     * Returns true if {@link #setShowAsAction(int)} was set to {@link #SHOW_AS_ACTION_ALWAYS}.
8059c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki     * Default value is {@code false}.
806484c2e2fbec02209337bb86fc99b8b253bc06f99Siyamed Sinir     *
807484c2e2fbec02209337bb86fc99b8b253bc06f99Siyamed Sinir     * @hide
808484c2e2fbec02209337bb86fc99b8b253bc06f99Siyamed Sinir     */
8099c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki    default boolean requiresActionButton() {
810484c2e2fbec02209337bb86fc99b8b253bc06f99Siyamed Sinir        return false;
811484c2e2fbec02209337bb86fc99b8b253bc06f99Siyamed Sinir    }
8129c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki
8139c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki    /**
8149c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki     * Returns true if {@link #setShowAsAction(int)} was set to {@link #SHOW_AS_ACTION_NEVER}.
8159c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki     * Default value is {@code true}.
8169c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki     *
8179c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki     * @hide
8189c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki     */
8199c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki    default boolean requiresOverflow() {
8209c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki        return true;
8219c881f227b2a136193a0a9236100075363a76f68Abodunrinwa Toki    }
8227b69e056fde74413e2a028b504d9f526ae04ca8aMichael Wright}
823