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