11fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell/*
21fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell * Copyright (C) 2015 The Android Open Source Project
31fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell *
41fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell * Licensed under the Apache License, Version 2.0 (the "License");
51fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell * you may not use this file except in compliance with the License.
61fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell * You may obtain a copy of the License at
71fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell *
81fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell *      http://www.apache.org/licenses/LICENSE-2.0
91fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell *
101fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell * Unless required by applicable law or agreed to in writing, software
111fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell * distributed under the License is distributed on an "AS IS" BASIS,
121fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell * See the License for the specific language governing permissions and
141fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell * limitations under the License.
151fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell */
161fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
171fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
181fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powellpackage android.support.v4.view;
191fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
201fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powellimport android.util.Log;
211fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powellimport android.view.View;
221fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powellimport android.view.ViewParent;
231fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
241fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powellclass ViewParentCompatLollipop {
251fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    private static final String TAG = "ViewParentCompat";
261fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
271fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    public static boolean onStartNestedScroll(ViewParent parent, View child, View target,
281fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            int nestedScrollAxes) {
291fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        try {
301fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            return parent.onStartNestedScroll(child, target, nestedScrollAxes);
311fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        } catch (AbstractMethodError e) {
321fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            Log.e(TAG, "ViewParent " + parent + " does not implement interface " +
331fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell                    "method onStartNestedScroll", e);
341fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            return false;
351fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        }
361fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    }
371fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
381fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    public static void onNestedScrollAccepted(ViewParent parent, View child, View target,
391fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            int nestedScrollAxes) {
401fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        try {
411fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            parent.onNestedScrollAccepted(child, target, nestedScrollAxes);
421fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        } catch (AbstractMethodError e) {
431fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            Log.e(TAG, "ViewParent " + parent + " does not implement interface " +
441fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell                    "method onNestedScrollAccepted", e);
451fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        }
461fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    }
471fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
481fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    public static void onStopNestedScroll(ViewParent parent, View target) {
491fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        try {
501fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            parent.onStopNestedScroll(target);
511fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        } catch (AbstractMethodError e) {
521fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            Log.e(TAG, "ViewParent " + parent + " does not implement interface " +
531fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell                    "method onStopNestedScroll", e);
541fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        }
551fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    }
561fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
571fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    public static void onNestedScroll(ViewParent parent, View target, int dxConsumed,
581fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
591fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        try {
601fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            parent.onNestedScroll(target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);
611fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        } catch (AbstractMethodError e) {
621fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            Log.e(TAG, "ViewParent " + parent + " does not implement interface " +
631fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell                    "method onNestedScroll", e);
641fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        }
651fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    }
661fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
671fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    public static void onNestedPreScroll(ViewParent parent, View target, int dx, int dy,
681fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            int[] consumed) {
691fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        try {
701fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            parent.onNestedPreScroll(target, dx, dy, consumed);
711fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        } catch (AbstractMethodError e) {
721fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            Log.e(TAG, "ViewParent " + parent + " does not implement interface " +
731fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell                    "method onNestedPreScroll", e);
741fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        }
751fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    }
761fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
771fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    public static boolean onNestedFling(ViewParent parent, View target, float velocityX,
781fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            float velocityY, boolean consumed) {
791fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        try {
801fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            return parent.onNestedFling(target, velocityX, velocityY, consumed);
811fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        } catch (AbstractMethodError e) {
821fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            Log.e(TAG, "ViewParent " + parent + " does not implement interface " +
831fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell                    "method onNestedFling", e);
841fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            return false;
851fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        }
861fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    }
871fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell
881fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    public static boolean onNestedPreFling(ViewParent parent, View target, float velocityX,
891fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            float velocityY) {
901fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        try {
911fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            return parent.onNestedPreFling(target, velocityX, velocityY);
921fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        } catch (AbstractMethodError e) {
931fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            Log.e(TAG, "ViewParent " + parent + " does not implement interface " +
941fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell                    "method onNestedPreFling", e);
951fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell            return false;
961fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell        }
971fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell    }
981fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell}
99