| /******************************************************************************* |
| * 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 |
| */ |
| 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 |
| + "}"; |
| } |
| } |