blob: d546b47d7c660a8d9fdbe22f728b8e59b9d2d066 [file] [log] [blame]
// Copyright 2013 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.chromoting;
import android.view.MotionEvent;
/**
* This interface allows multiple styles of touchscreen UI to be implemented and dynamically
* switched. The DesktopView passes the low-level touchscreen events and other events via this
* interface. The implementation recognizes and processes the touchscreen gestures, and then
* performs actions on the DesktopView (such as panning/zooming the display, injecting input, or
* showing/hiding UI elements).
*/
public interface TouchInputHandler {
// These constants must match those in the generated struct protoc::MouseEvent_MouseButton.
int BUTTON_UNDEFINED = 0;
int BUTTON_LEFT = 1;
int BUTTON_MIDDLE = 2;
int BUTTON_RIGHT = 3;
/**
* Processes a touch event. This should be called by the View in its onTouchEvent() handler.
*/
boolean onTouchEvent(MotionEvent event);
/**
* Called when the screen configuration is changed, such as when the screen is rotated or an
* external display is plugged in. This is not called if the client display area changes as a
* result of showing/hiding UI elements such as a keyboard. For example, an implementation
* could set a flag to reset the zoom level when the screen is rotated, but not when the
* software keyboard appears. After this is called, the onClientSizeChanged() method will
* shortly be called with the dimensions of the new client display area.
*/
void onScreenConfigurationChanged();
/**
* Called whenever the client display area changes size. The caller will handle repainting
* after this method returns.
*/
void onClientSizeChanged(int width, int height);
/**
* Called when the host screen size is changed. The caller will handle repainting after this
* method returns.
*/
void onHostSizeChanged(int width, int height);
}