MenuItemWrapperICS.java revision da10fdd1400ecfd8d7f2e55651dd528d0614dfc5
1e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes/*
2e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * Copyright (C) 2012 The Android Open Source Project
3e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *
4e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * Licensed under the Apache License, Version 2.0 (the "License");
5e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * you may not use this file except in compliance with the License.
6e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * You may obtain a copy of the License at
7e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *
8e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *      http://www.apache.org/licenses/LICENSE-2.0
9e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *
10e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * Unless required by applicable law or agreed to in writing, software
11e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * distributed under the License is distributed on an "AS IS" BASIS,
12e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * See the License for the specific language governing permissions and
14e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * limitations under the License.
15e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes */
16e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
17da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownpackage android.support.v7.internal.view.menu;
18e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
19da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownimport android.support.v7.view.ActionProvider;
20da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownimport android.support.v7.view.MenuItem;
21da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownimport android.support.v7.view.SubMenu;
22e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.view.View;
23e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
24e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesclass MenuItemWrapperICS extends MenuItemWrapperHC {
25e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
26e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    MenuItemWrapperICS(android.view.MenuItem object) {
27e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        super(object);
28e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
29e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
30e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
31e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem setActionProvider(ActionProvider actionProvider) {
32e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setActionProvider(new ActionProviderWrapper(actionProvider));
33e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return this;
34e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
35e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
36e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
37e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public ActionProvider getActionProvider() {
38e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return ((ActionProviderWrapper) mWrappedObject.getActionProvider()).getWrappedObject();
39e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
40e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
41e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
42e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean expandActionView() {
43e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.expandActionView();
44e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
45e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
46e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
47e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean collapseActionView() {
48e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.collapseActionView();
49e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
50e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
51e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
52e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean isActionViewExpanded() {
53e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.isActionViewExpanded();
54e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
55e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
56e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
57e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem setOnActionExpandListener(MenuItem.OnActionExpandListener listener) {
58e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setOnActionExpandListener(new OnActionExpandListenerWrapper(listener));
59e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return this;
60e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
61e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
62e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
63e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    MenuItem createMenuItemWrapper(android.view.MenuItem menuItem) {
64e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return new MenuItemWrapperICS(menuItem);
65e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
66e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
67e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
68e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    SubMenu createSubMenuWrapper(android.view.SubMenu subMenu) {
69e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return new SubMenuWrapperICS(subMenu);
70e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
71e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
72e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    private class OnActionExpandListenerWrapper extends BaseWrapper<MenuItem.OnActionExpandListener>
73e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            implements android.view.MenuItem.OnActionExpandListener {
74e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
75e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        OnActionExpandListenerWrapper(MenuItem.OnActionExpandListener object) {
76e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            super(object);
77e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
78e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
79e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        @Override
80e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        public boolean onMenuItemActionExpand(android.view.MenuItem item) {
81e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            return mWrappedObject.onMenuItemActionExpand(getMenuItemWrapper(item));
82e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
83e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
84e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        @Override
85e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        public boolean onMenuItemActionCollapse(android.view.MenuItem item) {
86e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            return mWrappedObject.onMenuItemActionCollapse(getMenuItemWrapper(item));
87e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
88e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
89e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
90e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    private class ActionProviderWrapper extends android.view.ActionProvider {
91e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
92e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        private final ActionProvider mWrappedObject;
93e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
94e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        public ActionProviderWrapper(ActionProvider object) {
95e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            super(null);
96e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            mWrappedObject = object;
97e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
98e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
99e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        @Override
100e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        public View onCreateActionView() {
101e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            return mWrappedObject.onCreateActionView();
102e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
103e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
104e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        @Override
105e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        public boolean onPerformDefaultAction() {
106e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            return mWrappedObject.onPerformDefaultAction();
107e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
108e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
109e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        @Override
110e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        public boolean hasSubMenu() {
111e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            return mWrappedObject.hasSubMenu();
112e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
113e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
114e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        @Override
115e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        public void onPrepareSubMenu(android.view.SubMenu subMenu) {
116e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            mWrappedObject.onPrepareSubMenu(getSubMenuWrapper(subMenu));
117e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
118e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
119e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        ActionProvider getWrappedObject() {
120e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            return mWrappedObject;
121e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
122e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
123e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
124e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes}
125