create changelog entry
[debian/openrocket] / android-libraries / ActionBarSherlock / src / com / actionbarsherlock / internal / view / menu / SubMenuBuilder.java
1 /*
2  * Copyright (C) 2006 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.actionbarsherlock.internal.view.menu;
18
19 import android.content.Context;
20 import android.graphics.drawable.Drawable;
21 import android.view.View;
22
23 import com.actionbarsherlock.view.Menu;
24 import com.actionbarsherlock.view.MenuItem;
25 import com.actionbarsherlock.view.SubMenu;
26
27 /**
28  * The model for a sub menu, which is an extension of the menu.  Most methods are proxied to
29  * the parent menu.
30  */
31 public class SubMenuBuilder extends MenuBuilder implements SubMenu {
32     private MenuBuilder mParentMenu;
33     private MenuItemImpl mItem;
34
35     public SubMenuBuilder(Context context, MenuBuilder parentMenu, MenuItemImpl item) {
36         super(context);
37
38         mParentMenu = parentMenu;
39         mItem = item;
40     }
41
42     @Override
43     public void setQwertyMode(boolean isQwerty) {
44         mParentMenu.setQwertyMode(isQwerty);
45     }
46
47     @Override
48     public boolean isQwertyMode() {
49         return mParentMenu.isQwertyMode();
50     }
51
52     @Override
53     public void setShortcutsVisible(boolean shortcutsVisible) {
54         mParentMenu.setShortcutsVisible(shortcutsVisible);
55     }
56
57     @Override
58     public boolean isShortcutsVisible() {
59         return mParentMenu.isShortcutsVisible();
60     }
61
62     public Menu getParentMenu() {
63         return mParentMenu;
64     }
65
66     public MenuItem getItem() {
67         return mItem;
68     }
69
70     @Override
71     public void setCallback(Callback callback) {
72         mParentMenu.setCallback(callback);
73     }
74
75     @Override
76     public MenuBuilder getRootMenu() {
77         return mParentMenu;
78     }
79
80     @Override
81     boolean dispatchMenuItemSelected(MenuBuilder menu, MenuItem item) {
82         return super.dispatchMenuItemSelected(menu, item) ||
83                 mParentMenu.dispatchMenuItemSelected(menu, item);
84     }
85
86     public SubMenu setIcon(Drawable icon) {
87         mItem.setIcon(icon);
88         return this;
89     }
90
91     public SubMenu setIcon(int iconRes) {
92         mItem.setIcon(iconRes);
93         return this;
94     }
95
96     public SubMenu setHeaderIcon(Drawable icon) {
97         return (SubMenu) super.setHeaderIconInt(icon);
98     }
99
100     public SubMenu setHeaderIcon(int iconRes) {
101         return (SubMenu) super.setHeaderIconInt(iconRes);
102     }
103
104     public SubMenu setHeaderTitle(CharSequence title) {
105         return (SubMenu) super.setHeaderTitleInt(title);
106     }
107
108     public SubMenu setHeaderTitle(int titleRes) {
109         return (SubMenu) super.setHeaderTitleInt(titleRes);
110     }
111
112     public SubMenu setHeaderView(View view) {
113         return (SubMenu) super.setHeaderViewInt(view);
114     }
115
116     @Override
117     public boolean expandItemActionView(MenuItemImpl item) {
118         return mParentMenu.expandItemActionView(item);
119     }
120
121     @Override
122     public boolean collapseItemActionView(MenuItemImpl item) {
123         return mParentMenu.collapseItemActionView(item);
124     }
125
126     @Override
127     public String getActionViewStatesKey() {
128         final int itemId = mItem != null ? mItem.getItemId() : 0;
129         if (itemId == 0) {
130             return null;
131         }
132         return super.getActionViewStatesKey() + ":" + itemId;
133     }
134 }