/******************************************************************************* * Copyright (c) 2010, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.swt.events; import org.eclipse.swt.widgets.*; /** * Instances of this class are sent in response to * touch-based gestures that are triggered by the user. * * @see GestureListener * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> * * @since 3.7 */ public class GestureEvent extends TypedEvent { /** * The state of the keyboard modifier keys and mouse masks * at the time the event was generated. * * @see org.eclipse.swt.SWT#MODIFIER_MASK * @see org.eclipse.swt.SWT#BUTTON_MASK */ public int stateMask; /** * The gesture type. * <p><ul> * <li>{@link org.eclipse.swt.SWT#GESTURE_BEGIN}</li> * <li>{@link org.eclipse.swt.SWT#GESTURE_END}</li> * <li>{@link org.eclipse.swt.SWT#GESTURE_MAGNIFY}</li> * <li>{@link org.eclipse.swt.SWT#GESTURE_PAN}</li> * <li>{@link org.eclipse.swt.SWT#GESTURE_ROTATE}</li> * <li>{@link org.eclipse.swt.SWT#GESTURE_SWIPE}</li> * </ul></p> * * This field determines the <code>GestureEvent</code> fields that contain valid data. */ public int detail; /** * The meaning of this field is dependent on the value of the <code>detail</code> field * and the platform. It can represent either the x coordinate of the centroid of the * touches that make up the gesture, or the x coordinate of the cursor at the time the * gesture was performed. */ public int x; /** * The meaning of this field is dependent on the value of the <code>detail</code> field * and the platform. It can represent either the y coordinate of the centroid of the * touches that make up the gesture, or the y coordinate of the cursor at the time the * gesture was performed. */ public int y; /** * This field is valid when the <code>detail</code> field is set to <code>GESTURE_ROTATE</code>. * It specifies the number of degrees rotated on the device since the gesture started. Positive * values indicate counter-clockwise rotation, and negative values indicate clockwise rotation. */ public double rotation; /** * This field is valid when the <code>detail</code> field is set to <code>GESTURE_SWIPE</code> * or <code>GESTURE_PAN</code>. Both <code>xDirection</code> and <code>yDirection</code> * can be valid for an individual gesture. The meaning of this field is dependent on the value * of the <code>detail</code> field. * <p> * If <code>detail</code> is <code>GESTURE_SWIPE</code> then a positive value indicates a swipe * to the right and a negative value indicates a swipe to the left. * * If <code>detail</code> is <code>GESTURE_PAN</code> then a positive value indicates a pan to * the right by this field's count of pixels and a negative value indicates a pan to the left * by this field's count of pixels. */ public int xDirection; /** * This field is valid when the <code>detail</code> field is set to <code>GESTURE_SWIPE</code> * or <code>GESTURE_PAN</code>. Both <code>xDirection</code> and <code>yDirection</code> * can be valid for an individual gesture. The meaning of this field is dependent on the value * of the <code>detail</code> field. * * If <code>detail</code> is <code>GESTURE_SWIPE</code> then a positive value indicates a downward * swipe and a negative value indicates an upward swipe. * * If <code>detail</code> is <code>GESTURE_PAN</code> then a positive value indicates a downward * pan by this field's count of pixels and a negative value indicates an upward pan by this * field's count of pixels. */ public int yDirection; /** * This field is valid when the <code>detail</code> field is set to <code>GESTURE_MAGNIFY</code>. * This is the scale factor to be applied. This value will be 1.0 in the first received event with * <code>GESTURE_MAGNIFY</code>, and will then fluctuate in subsequent events as the user moves * their fingers. */ public double magnification; /** * This flag indicates whether the operation should be allowed. * Setting it to <code>false</code> will cancel the operation. */ public boolean doit; static final long serialVersionUID = -8348741538373572182L; /** * Constructs a new instance of this class based on the * information in the given untyped event. * * @param e the untyped event containing the information */ public GestureEvent(Event e) { super(e); this.stateMask = e.stateMask; this.x = e.x; this.y = e.y; this.detail = e.detail; this.rotation = e.rotation; this.xDirection = e.xDirection; this.yDirection = e.yDirection; this.magnification = e.magnification; this.doit = e.doit; } /** * Returns a string containing a concise, human-readable * description of the receiver. * * @return a string representation of the event */ @Override public String toString() { String string = super.toString (); return string.substring (0, string.length() - 1) // remove trailing '}' + " stateMask=0x" + Integer.toHexString(stateMask) + " detail=" + detail + " x=" + x + " y=" + y + " rotation=" + rotation + " xDirection=" + xDirection + " yDirection=" + yDirection + " magnification=" + magnification + "}"; } }