WindowCallbackWrapper.java revision 3de8a4e8305507475d7890205184946a25cf45e7
1/*
2 * Copyright (C) 2014 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
17package androidx.appcompat.view;
18
19import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
20
21import android.view.ActionMode;
22import android.view.KeyEvent;
23import android.view.KeyboardShortcutGroup;
24import android.view.Menu;
25import android.view.MenuItem;
26import android.view.MotionEvent;
27import android.view.SearchEvent;
28import android.view.View;
29import android.view.Window;
30import android.view.WindowManager;
31import android.view.accessibility.AccessibilityEvent;
32
33import androidx.annotation.RequiresApi;
34import androidx.annotation.RestrictTo;
35
36import java.util.List;
37
38/**
39 * A simple decorator stub for Window.Callback that passes through any calls
40 * to the wrapped instance as a base implementation. Call super.foo() to call into
41 * the wrapped callback for any subclasses.
42 *
43 * @hide
44 */
45@RestrictTo(LIBRARY_GROUP)
46public class WindowCallbackWrapper implements Window.Callback {
47
48    final Window.Callback mWrapped;
49
50    public WindowCallbackWrapper(Window.Callback wrapped) {
51        if (wrapped == null) {
52            throw new IllegalArgumentException("Window callback may not be null");
53        }
54        mWrapped = wrapped;
55    }
56
57    @Override
58    public boolean dispatchKeyEvent(KeyEvent event) {
59        return mWrapped.dispatchKeyEvent(event);
60    }
61
62    @Override
63    public boolean dispatchKeyShortcutEvent(KeyEvent event) {
64        return mWrapped.dispatchKeyShortcutEvent(event);
65    }
66
67    @Override
68    public boolean dispatchTouchEvent(MotionEvent event) {
69        return mWrapped.dispatchTouchEvent(event);
70    }
71
72    @Override
73    public boolean dispatchTrackballEvent(MotionEvent event) {
74        return mWrapped.dispatchTrackballEvent(event);
75    }
76
77    @Override
78    public boolean dispatchGenericMotionEvent(MotionEvent event) {
79        return mWrapped.dispatchGenericMotionEvent(event);
80    }
81
82    @Override
83    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
84        return mWrapped.dispatchPopulateAccessibilityEvent(event);
85    }
86
87    @Override
88    public View onCreatePanelView(int featureId) {
89        return mWrapped.onCreatePanelView(featureId);
90    }
91
92    @Override
93    public boolean onCreatePanelMenu(int featureId, Menu menu) {
94        return mWrapped.onCreatePanelMenu(featureId, menu);
95    }
96
97    @Override
98    public boolean onPreparePanel(int featureId, View view, Menu menu) {
99        return mWrapped.onPreparePanel(featureId, view, menu);
100    }
101
102    @Override
103    public boolean onMenuOpened(int featureId, Menu menu) {
104        return mWrapped.onMenuOpened(featureId, menu);
105    }
106
107    @Override
108    public boolean onMenuItemSelected(int featureId, MenuItem item) {
109        return mWrapped.onMenuItemSelected(featureId, item);
110    }
111
112    @Override
113    public void onWindowAttributesChanged(WindowManager.LayoutParams attrs) {
114        mWrapped.onWindowAttributesChanged(attrs);
115    }
116
117    @Override
118    public void onContentChanged() {
119        mWrapped.onContentChanged();
120    }
121
122    @Override
123    public void onWindowFocusChanged(boolean hasFocus) {
124        mWrapped.onWindowFocusChanged(hasFocus);
125    }
126
127    @Override
128    public void onAttachedToWindow() {
129        mWrapped.onAttachedToWindow();
130    }
131
132    @Override
133    public void onDetachedFromWindow() {
134        mWrapped.onDetachedFromWindow();
135    }
136
137    @Override
138    public void onPanelClosed(int featureId, Menu menu) {
139        mWrapped.onPanelClosed(featureId, menu);
140    }
141
142    @RequiresApi(23)
143    @Override
144    public boolean onSearchRequested(SearchEvent searchEvent) {
145        return mWrapped.onSearchRequested(searchEvent);
146    }
147
148    @Override
149    public boolean onSearchRequested() {
150        return mWrapped.onSearchRequested();
151    }
152
153    @Override
154    public ActionMode onWindowStartingActionMode(ActionMode.Callback callback) {
155        return mWrapped.onWindowStartingActionMode(callback);
156    }
157
158    @RequiresApi(23)
159    @Override
160    public ActionMode onWindowStartingActionMode(ActionMode.Callback callback, int type) {
161        return mWrapped.onWindowStartingActionMode(callback, type);
162    }
163
164    @Override
165    public void onActionModeStarted(ActionMode mode) {
166        mWrapped.onActionModeStarted(mode);
167    }
168
169    @Override
170    public void onActionModeFinished(ActionMode mode) {
171        mWrapped.onActionModeFinished(mode);
172    }
173
174    @RequiresApi(24)
175    @Override
176    public void onProvideKeyboardShortcuts(
177            List<KeyboardShortcutGroup> data, Menu menu, int deviceId) {
178        mWrapped.onProvideKeyboardShortcuts(data, menu, deviceId);
179    }
180
181    @RequiresApi(26)
182    @Override
183    public void onPointerCaptureChanged(boolean hasCapture) {
184        mWrapped.onPointerCaptureChanged(hasCapture);
185    }
186}
187