WindowCallbackWrapper.java revision f3ad1351d8b40ec5defe35e79d3430ad3c384b6d
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
17f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banespackage android.support.v7.internal.view;
18f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
19f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.ActionMode;
20f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.KeyEvent;
21f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.Menu;
22f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.MenuItem;
23f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.MotionEvent;
24f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.View;
25f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.Window;
26f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.WindowManager;
27f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banesimport android.view.accessibility.AccessibilityEvent;
28f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
29f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes/**
30f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * A simple decorator stub for Window.Callback that passes through any calls
31f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * to the wrapped instance as a base implementation. Call super.foo() to call into
32f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * the wrapped callback for any subclasses.
33f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes *
34f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes * @hide
35f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes */
36f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banespublic class WindowCallbackWrapper implements Window.Callback {
37f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
38f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    final Window.Callback mWrapped;
39f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
40f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public WindowCallbackWrapper(Window.Callback wrapped) {
41f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        if (wrapped == null) {
42f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes            throw new IllegalArgumentException("Window callback may not be null");
43f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        }
44f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped = wrapped;
45f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
46f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
47f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
48f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchKeyEvent(KeyEvent event) {
49f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchKeyEvent(event);
50f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
51f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
52f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
53f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchKeyShortcutEvent(KeyEvent event) {
54f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchKeyShortcutEvent(event);
55f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
56f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
57f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
58f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchTouchEvent(MotionEvent event) {
59f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchTouchEvent(event);
60f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
61f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
62f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
63f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchTrackballEvent(MotionEvent event) {
64f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchTrackballEvent(event);
65f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
66f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
67f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
68f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchGenericMotionEvent(MotionEvent event) {
69f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchGenericMotionEvent(event);
70f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
71f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
72f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
73f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
74f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.dispatchPopulateAccessibilityEvent(event);
75f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
76f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
77f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
78f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public View onCreatePanelView(int featureId) {
79f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onCreatePanelView(featureId);
80f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
81f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
82f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
83f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onCreatePanelMenu(int featureId, Menu menu) {
84f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onCreatePanelMenu(featureId, menu);
85f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
86f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
87f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
88f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onPreparePanel(int featureId, View view, Menu menu) {
89f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onPreparePanel(featureId, view, menu);
90f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
91f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
92f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
93f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onMenuOpened(int featureId, Menu menu) {
94f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onMenuOpened(featureId, menu);
95f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
96f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
97f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
98f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onMenuItemSelected(int featureId, MenuItem item) {
99f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onMenuItemSelected(featureId, item);
100f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
101f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
102f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
103f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onWindowAttributesChanged(WindowManager.LayoutParams attrs) {
104f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onWindowAttributesChanged(attrs);
105f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
106f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
107f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
108f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onContentChanged() {
109f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onContentChanged();
110f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
111f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
112f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
113f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onWindowFocusChanged(boolean hasFocus) {
114f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onWindowFocusChanged(hasFocus);
115f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
116f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
117f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
118f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onAttachedToWindow() {
119f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onAttachedToWindow();
120f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
121f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
122f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
123f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onDetachedFromWindow() {
124f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onDetachedFromWindow();
125f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
126f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
127f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
128f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onPanelClosed(int featureId, Menu menu) {
129f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onPanelClosed(featureId, menu);
130f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
131f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
132f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
133f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public boolean onSearchRequested() {
134f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onSearchRequested();
135f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
136f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
137f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
138f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public ActionMode onWindowStartingActionMode(ActionMode.Callback callback) {
139f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        return mWrapped.onWindowStartingActionMode(callback);
140f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
141f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
142f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
143f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onActionModeStarted(ActionMode mode) {
144f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onActionModeStarted(mode);
145f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
146f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes
147f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    @Override
148f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    public void onActionModeFinished(ActionMode mode) {
149f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes        mWrapped.onActionModeFinished(mode);
150f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes    }
151f3ad1351d8b40ec5defe35e79d3430ad3c384b6dChris Banes}
152