// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.compositor.layouts;
import org.chromium.chrome.browser.compositor.layouts.eventfilter.GestureHandler;
/**
* A {@link GestureHandler} that takes a {@link LayoutProvider} and delegates all gesture events
* to {@link LayoutProvider#getActiveLayout()}.
*/
class GestureHandlerLayoutDelegate implements GestureHandler {
private final LayoutProvider mLayoutProvider;
/**
* Creates an instance of the {@link GestureHandlerLayoutDelegate}.
* @param provider A {@link LayoutProvider} instance.
*/
public GestureHandlerLayoutDelegate(LayoutProvider provider) {
mLayoutProvider = provider;
}
@Override
public void onDown(float x, float y, boolean fromMouse, int buttons) {
if (mLayoutProvider.getActiveLayout() == null) return;
mLayoutProvider.getActiveLayout().onDown(LayoutManager.time(), x, y);
}
@Override
public void onUpOrCancel() {
if (mLayoutProvider.getActiveLayout() == null) return;
mLayoutProvider.getActiveLayout().onUpOrCancel(LayoutManager.time());
}
@Override
public void drag(float x, float y, float dx, float dy, float tx, float ty) {
if (mLayoutProvider.getActiveLayout() == null) return;
mLayoutProvider.getActiveLayout().drag(LayoutManager.time(), x, y, dx, dy);
}
@Override
public void click(float x, float y, boolean fromMouse, int buttons) {
if (mLayoutProvider.getActiveLayout() == null) return;
mLayoutProvider.getActiveLayout().click(LayoutManager.time(), x, y);
}
@Override
public void fling(float x, float y, float velocityX, float velocityY) {
if (mLayoutProvider.getActiveLayout() == null) return;
mLayoutProvider.getActiveLayout().fling(LayoutManager.time(), x, y, velocityX, velocityY);
}
@Override
public void onLongPress(float x, float y) {
if (mLayoutProvider.getActiveLayout() == null) return;
mLayoutProvider.getActiveLayout().onLongPress(LayoutManager.time(), x, y);
}
@Override
public void onPinch(float x0, float y0, float x1, float y1, boolean firstEvent) {
if (mLayoutProvider.getActiveLayout() == null) return;
mLayoutProvider.getActiveLayout().onPinch(LayoutManager.time(), x0, y0, x1, y1, firstEvent);
}
}