MenuView.java revision 20ac724a3a836bfd362c911f7dc55a61c02b4d44
1bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/*
2bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Copyright (C) 2006 The Android Open Source Project
3bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell *
4bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Licensed under the Apache License, Version 2.0 (the "License");
5bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * you may not use this file except in compliance with the License.
6bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * You may obtain a copy of the License at
7bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell *
8bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell *      http://www.apache.org/licenses/LICENSE-2.0
9bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell *
10bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Unless required by applicable law or agreed to in writing, software
11bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * distributed under the License is distributed on an "AS IS" BASIS,
12bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * See the License for the specific language governing permissions and
14bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * limitations under the License.
15bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */
16bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
17bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellpackage android.support.appcompat.view.menu;
18bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
19bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.support.appcompat.view.menu.MenuBuilder;
20bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.support.appcompat.view.menu.MenuItemImpl;
21bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
22bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.graphics.drawable.Drawable;
23bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
24bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/**
2520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Minimal interface for a menu view.  {@link #initialize(MenuBuilder)} must be called for the menu
2620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * to be functional.
27bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell *
28bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * @hide
29bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */
30bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellpublic interface MenuView {
31bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
32bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell    /**
3320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns     * Initializes the menu to the given menu. This should be called after the view is inflated.
3420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns     *
3520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns     * @param menu The menu that this MenuView should display.
36bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell     */
3720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    public void initialize(MenuBuilder menu);
38bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
39bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell    /**
4020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns     * Returns the default animations to be used for this menu when entering/exiting.
4120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns     *
4220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns     * @return A resource ID for the default animations to be used for this menu.
43bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell     */
4420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    public int getWindowAnimations();
45bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
46bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell    /**
4720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns     * Minimal interface for a menu item view.  {@link #initialize(MenuItemImpl, int)} must be
4820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns     * called for the item to be functional.
49bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell     */
5020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    public interface ItemView {
51bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
5220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
5320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Initializes with the provided MenuItemData.  This should be called after the view is
5420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * inflated.
5520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
5620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @param itemData The item that this ItemView should display.
5720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @param menuType The type of this menu, one of {@link MenuBuilder#TYPE_ICON}, {@link
5820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *                 MenuBuilder#TYPE_EXPANDED}, {@link MenuBuilder#TYPE_DIALOG}).
5920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
6020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public void initialize(MenuItemImpl itemData, int menuType);
61bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
6220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
6320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Gets the item data that this view is displaying.
6420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
6520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @return the item data, or null if there is not one
6620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
6720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public MenuItemImpl getItemData();
68bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
6920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
7020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Sets the title of the item view.
7120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
7220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @param title The title to set.
7320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
7420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public void setTitle(CharSequence title);
75bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
7620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
7720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Sets the enabled state of the item view.
7820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
7920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @param enabled Whether the item view should be enabled.
8020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
8120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public void setEnabled(boolean enabled);
82bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
8320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
8420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Displays the checkbox for the item view.  This does not ensure the item view will be
8520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * checked, for that use {@link #setChecked}.
8620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
8720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @param checkable Whether to display the checkbox or to hide it
8820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
8920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public void setCheckable(boolean checkable);
90bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell
9120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
9220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Checks the checkbox for the item view.  If the checkbox is hidden, it will NOT be made
9320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * visible, call {@link #setCheckable(boolean)} for that.
9420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
9520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @param checked Whether the checkbox should be checked
9620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
9720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public void setChecked(boolean checked);
9820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
9920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
10020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Sets the shortcut for the item.
10120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
10220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @param showShortcut Whether a shortcut should be shown(if false, the value of shortcutKey
10320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *                     should be ignored).
10420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @param shortcutKey  The shortcut key that should be shown on the ItemView.
10520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
10620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public void setShortcut(boolean showShortcut, char shortcutKey);
10720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
10820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
10920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Set the icon of this item view.
11020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
11120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @param icon The icon of this item. null to hide the icon.
11220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
11320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public void setIcon(Drawable icon);
11420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
11520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
11620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Whether this item view prefers displaying the condensed title rather than the normal
11720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * title. If a condensed title is not available, the normal title will be used.
11820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
11920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @return Whether this item view prefers displaying the condensed title.
12020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
12120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public boolean prefersCondensedTitle();
12220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns
12320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        /**
12420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * Whether this item view shows an icon.
12520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         *
12620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         * @return Whether this item view shows an icon.
12720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns         */
12820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns        public boolean showsIcon();
12920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns    }
130bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell}
131