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