Home | History | Annotate | Download | only in view
      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 
     17 package androidx.appcompat.view;
     18 
     19 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
     20 
     21 import android.view.ActionMode;
     22 import android.view.KeyEvent;
     23 import android.view.KeyboardShortcutGroup;
     24 import android.view.Menu;
     25 import android.view.MenuItem;
     26 import android.view.MotionEvent;
     27 import android.view.SearchEvent;
     28 import android.view.View;
     29 import android.view.Window;
     30 import android.view.WindowManager;
     31 import android.view.accessibility.AccessibilityEvent;
     32 
     33 import androidx.annotation.RequiresApi;
     34 import androidx.annotation.RestrictTo;
     35 
     36 import 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)
     46 public 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