MenuItemWrapperICS.java revision d713f4f0643a5f6409b431f643f1ad25dba6c22f
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
19d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banesimport android.support.v4.internal.view.SupportMenuItem;
20d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banesimport android.support.v4.view.ActionProvider;
2130837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.MenuItem;
22d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banesimport android.view.View;
23e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
24e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesclass MenuItemWrapperICS extends MenuItemWrapperHC {
25e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    MenuItemWrapperICS(android.view.MenuItem object) {
26e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        super(object);
27e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
28e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
29e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
3030837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell    public MenuItem setActionProvider(android.view.ActionProvider provider) {
3130837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell        mWrappedObject.setActionProvider(provider);
3230837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell        return this;
3330837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell    }
3430837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell
3530837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell    @Override
3630837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell    public android.view.ActionProvider getActionProvider() {
3730837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell        return mWrappedObject.getActionProvider();
3830837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell    }
3930837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell
4030837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell    @Override
41e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean expandActionView() {
42e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.expandActionView();
43e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
44e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
45e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
46e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean collapseActionView() {
47e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.collapseActionView();
48e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
49e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
50e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
51e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean isActionViewExpanded() {
52e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.isActionViewExpanded();
53e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
54e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
55e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
56e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem setOnActionExpandListener(MenuItem.OnActionExpandListener listener) {
576e6abe6eb358db4c3932752249c8ac61dd3dab21Jeff Brown        mWrappedObject.setOnActionExpandListener(listener != null ?
586e6abe6eb358db4c3932752249c8ac61dd3dab21Jeff Brown                new OnActionExpandListenerWrapper(listener) : null);
59e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return this;
60e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
61e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
62d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    @Override
63d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    public SupportMenuItem setSupportActionProvider(ActionProvider actionProvider) {
64d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        mWrappedObject.setActionProvider(actionProvider != null ?
65d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes                createActionProviderWrapper(actionProvider) : null);
66d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        return this;
67d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    }
68d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes
69d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    @Override
70d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    public ActionProvider getSupportActionProvider() {
71d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        ActionProviderWrapper providerWrapper =
72d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes                (ActionProviderWrapper)mWrappedObject.getActionProvider();
73d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        return providerWrapper.mInner;
74d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    }
75d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes
76d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    ActionProviderWrapper createActionProviderWrapper(ActionProvider provider) {
77d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        return new ActionProviderWrapper(provider);
78d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    }
79d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes
80e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    private class OnActionExpandListenerWrapper extends BaseWrapper<MenuItem.OnActionExpandListener>
81e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            implements android.view.MenuItem.OnActionExpandListener {
82e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
83e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        OnActionExpandListenerWrapper(MenuItem.OnActionExpandListener object) {
84e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            super(object);
85e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
86e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
87e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        @Override
88e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        public boolean onMenuItemActionExpand(android.view.MenuItem item) {
89e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            return mWrappedObject.onMenuItemActionExpand(getMenuItemWrapper(item));
90e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
91e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
92e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        @Override
93e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        public boolean onMenuItemActionCollapse(android.view.MenuItem item) {
94e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            return mWrappedObject.onMenuItemActionCollapse(getMenuItemWrapper(item));
95e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
96e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
97d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes
98d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    class ActionProviderWrapper extends android.view.ActionProvider {
99d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        final ActionProvider mInner;
100d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes
101d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        public ActionProviderWrapper(ActionProvider inner) {
102d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes            super(inner.getContext());
103d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes            mInner = inner;
104d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        }
105d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes
106d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        @Override
107d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        public View onCreateActionView() {
108d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes            return mInner.onCreateActionView();
109d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        }
110d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes
111d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        @Override
112d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        public boolean onPerformDefaultAction() {
113d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes            return mInner.onPerformDefaultAction();
114d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        }
115d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes
116d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        @Override
117d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        public boolean hasSubMenu() {
118d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes            return mInner.hasSubMenu();
119d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        }
120d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes
121d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        @Override
122d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        public void onPrepareSubMenu(android.view.SubMenu subMenu) {
123d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes            mInner.onPrepareSubMenu(getSubMenuWrapper(subMenu));
124d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes        }
125d713f4f0643a5f6409b431f643f1ad25dba6c22fChris Banes    }
126e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes}
127