1f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes/*
2f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * Copyright (C) 2014 The Android Open Source Project
3f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes *
4f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * Licensed under the Apache License, Version 2.0 (the "License");
5f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * you may not use this file except in compliance with the License.
6f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * You may obtain a copy of the License at
7f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes *
8f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes *      http://www.apache.org/licenses/LICENSE-2.0
9f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes *
10f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * Unless required by applicable law or agreed to in writing, software
11f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * distributed under the License is distributed on an "AS IS" BASIS,
12f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * See the License for the specific language governing permissions and
14f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * limitations under the License.
15f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes */
16f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
1766698bb15ba0f873aa1c2290cc50d6bb839a474aChris Banespackage android.support.v7.view;
18f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
198e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikasimport static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP;
208e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas
218f886fe8c7e23fe6ccb8734167c960c2ed3429c3Alan Viveretteimport android.support.annotation.RequiresApi;
22c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viveretteimport android.support.annotation.RestrictTo;
23f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.ActionMode;
24f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.KeyEvent;
25a9858a0805b26530538fecd48ce2a996f8fc8b67Clara Bayarriimport android.view.KeyboardShortcutGroup;
26f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.Menu;
27f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.MenuItem;
28f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.MotionEvent;
29d29d697ef40ec109ecf149a2a9ed96818a1d9915Tim Kilbournimport android.view.SearchEvent;
30f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.View;
31f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.Window;
32f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.WindowManager;
33f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.accessibility.AccessibilityEvent;
34f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
35a9858a0805b26530538fecd48ce2a996f8fc8b67Clara Bayarriimport java.util.List;
36a9858a0805b26530538fecd48ce2a996f8fc8b67Clara Bayarri
37f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes/**
38f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * A simple decorator stub for Window.Callback that passes through any calls
39f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * to the wrapped instance as a base implementation. Call super.foo() to call into
40f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * the wrapped callback for any subclasses.
41f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes *
42f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * @hide
43f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes */
448e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas@RestrictTo(LIBRARY_GROUP)
45f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banespublic class WindowCallbackWrapper implements Window.Callback {
46f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
47f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    final Window.Callback mWrapped;
48f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
49f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public WindowCallbackWrapper(Window.Callback wrapped) {
50f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        if (wrapped == null) {
51f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes            throw new IllegalArgumentException("Window callback may not be null");
52f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        }
53f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped = wrapped;
54f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
55f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
56f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
57f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchKeyEvent(KeyEvent event) {
58f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchKeyEvent(event);
59f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
60f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
61f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
62f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchKeyShortcutEvent(KeyEvent event) {
63f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchKeyShortcutEvent(event);
64f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
65f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
66f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
67f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchTouchEvent(MotionEvent event) {
68f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchTouchEvent(event);
69f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
70f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
71f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
72f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchTrackballEvent(MotionEvent event) {
73f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchTrackballEvent(event);
74f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
75f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
76f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
77f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchGenericMotionEvent(MotionEvent event) {
78f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchGenericMotionEvent(event);
79f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
80f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
81f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
82f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
83f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchPopulateAccessibilityEvent(event);
84f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
85f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
86f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
87f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public View onCreatePanelView(int featureId) {
88f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onCreatePanelView(featureId);
89f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
90f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
91f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
92f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onCreatePanelMenu(int featureId, Menu menu) {
93f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onCreatePanelMenu(featureId, menu);
94f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
95f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
96f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
97f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onPreparePanel(int featureId, View view, Menu menu) {
98f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onPreparePanel(featureId, view, menu);
99f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
100f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
101f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
102f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onMenuOpened(int featureId, Menu menu) {
103f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onMenuOpened(featureId, menu);
104f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
105f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
106f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
107f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onMenuItemSelected(int featureId, MenuItem item) {
108f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onMenuItemSelected(featureId, item);
109f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
110f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
111f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
112f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onWindowAttributesChanged(WindowManager.LayoutParams attrs) {
113f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onWindowAttributesChanged(attrs);
114f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
115f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
116f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
117f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onContentChanged() {
118f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onContentChanged();
119f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
120f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
121f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
122f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onWindowFocusChanged(boolean hasFocus) {
123f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onWindowFocusChanged(hasFocus);
124f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
125f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
126f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
127f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onAttachedToWindow() {
128f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onAttachedToWindow();
129f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
130f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
131f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
132f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onDetachedFromWindow() {
133f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onDetachedFromWindow();
134f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
135f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
136f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
137f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onPanelClosed(int featureId, Menu menu) {
138f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onPanelClosed(featureId, menu);
139f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
140f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
1418f886fe8c7e23fe6ccb8734167c960c2ed3429c3Alan Viverette    @RequiresApi(23)
142f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
143d29d697ef40ec109ecf149a2a9ed96818a1d9915Tim Kilbourn    public boolean onSearchRequested(SearchEvent searchEvent) {
144d29d697ef40ec109ecf149a2a9ed96818a1d9915Tim Kilbourn        return mWrapped.onSearchRequested(searchEvent);
145d29d697ef40ec109ecf149a2a9ed96818a1d9915Tim Kilbourn    }
146d29d697ef40ec109ecf149a2a9ed96818a1d9915Tim Kilbourn
147d29d697ef40ec109ecf149a2a9ed96818a1d9915Tim Kilbourn    @Override
148f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onSearchRequested() {
149f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onSearchRequested();
150f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
151f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
152f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
153f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public ActionMode onWindowStartingActionMode(ActionMode.Callback callback) {
154f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onWindowStartingActionMode(callback);
155f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
156f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
1578f886fe8c7e23fe6ccb8734167c960c2ed3429c3Alan Viverette    @RequiresApi(23)
158f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
15932fa2860f8fa4f7535ef5244bb30f2b2fb78b23dClara Bayarri    public ActionMode onWindowStartingActionMode(ActionMode.Callback callback, int type) {
16032fa2860f8fa4f7535ef5244bb30f2b2fb78b23dClara Bayarri        return mWrapped.onWindowStartingActionMode(callback, type);
16132fa2860f8fa4f7535ef5244bb30f2b2fb78b23dClara Bayarri    }
16232fa2860f8fa4f7535ef5244bb30f2b2fb78b23dClara Bayarri
16332fa2860f8fa4f7535ef5244bb30f2b2fb78b23dClara Bayarri    @Override
164f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onActionModeStarted(ActionMode mode) {
165f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onActionModeStarted(mode);
166f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
167f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
168f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
169f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onActionModeFinished(ActionMode mode) {
170f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onActionModeFinished(mode);
171f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
172a9858a0805b26530538fecd48ce2a996f8fc8b67Clara Bayarri
1738f886fe8c7e23fe6ccb8734167c960c2ed3429c3Alan Viverette    @RequiresApi(24)
174a9858a0805b26530538fecd48ce2a996f8fc8b67Clara Bayarri    @Override
17596af432b980d0216c22a874f79173e7523dff892Clara Bayarri    public void onProvideKeyboardShortcuts(
17696af432b980d0216c22a874f79173e7523dff892Clara Bayarri            List<KeyboardShortcutGroup> data, Menu menu, int deviceId) {
17796af432b980d0216c22a874f79173e7523dff892Clara Bayarri        mWrapped.onProvideKeyboardShortcuts(data, menu, deviceId);
178a9858a0805b26530538fecd48ce2a996f8fc8b67Clara Bayarri    }
179f5a6dd778d0904797cd0417dbc1f1aa9f7701b6bKirill Grouchnikov
180f5a6dd778d0904797cd0417dbc1f1aa9f7701b6bKirill Grouchnikov    @RequiresApi(26)
181f5a6dd778d0904797cd0417dbc1f1aa9f7701b6bKirill Grouchnikov    @Override
182f5a6dd778d0904797cd0417dbc1f1aa9f7701b6bKirill Grouchnikov    public void onPointerCaptureChanged(boolean hasCapture) {
183f5a6dd778d0904797cd0417dbc1f1aa9f7701b6bKirill Grouchnikov        mWrapped.onPointerCaptureChanged(hasCapture);
184f5a6dd778d0904797cd0417dbc1f1aa9f7701b6bKirill Grouchnikov    }
185f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes}
186