/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.swt.widgets; import org.eclipse.swt.graphics.*; import org.eclipse.swt.internal.*; /** * Instances of this class provide a description of a particular * event which occurred within SWT. The SWT untyped listener * API uses these instances for all event dispatching. *
* Note: For a given event, only the fields which are appropriate * will be filled in. The contents of the fields which are not used * by the event are unspecified. *
* * @see Listener * @see org.eclipse.swt.events.TypedEvent * @see SWT Example: ControlExample, Listeners * @see Sample code and further information */ public class Event { /** * the display where the event occurred * * @since 2.0 */ public Display display; /** * the widget that issued the event */ public Widget widget; /** * the type of event, as defined by the event type constants * in classSWT
*
* @see org.eclipse.swt.SWT
*/
public int type;
/**
* the event specific detail field, as defined by the detail constants
* in class SWT
*
* @see org.eclipse.swt.SWT
*/
public int detail;
/**
* the item that the event occurred in (can be null)
*/
public Widget item;
/**
* the index of the item where the event occurred
*
* @since 3.2
*/
public int index;
/**
* the graphics context to use when painting
* that is configured to use the colors, font and
* damaged region of the control. It is valid
* only during the paint and must not be disposed
*/
public GC gc;
/**
* depending on the event type, the x offset of the bounding
* rectangle of the region that requires painting or the
* widget-relative, x coordinate of the pointer at the
* time the mouse button was pressed or released
*/
public int x;
/**
* depending on the event type, the y offset of the bounding
* rectangle of the region that requires painting or the
* widget-relative, y coordinate of the pointer at the
* time the mouse button was pressed or released
*/
public int y;
/**
* the width of the bounding rectangle of the
* region that requires painting
*/
public int width;
/**
* the height of the bounding rectangle of the
* region that requires painting
*/
public int height;
/**
* depending on the event type, the number of following
* paint events that are pending which may always be zero
* on some platforms, or the number of lines or pages to
* scroll using the mouse wheel, or the number of times the
* mouse has been clicked
*/
public int count;
/**
* the time that the event occurred.
*
* NOTE: This field is an unsigned integer and should
* be AND'ed with 0xFFFFFFFFL so that it can be treated
* as a signed long.
*/
public int time;
/**
* the button that was pressed or released; 1 for the
* first button, 2 for the second button, and 3 for the
* third button, etc.
*/
public int button;
/**
* depending on the event, the character represented by the key
* that was typed. This is the final character that results
* after all modifiers have been applied. For example, when the
* user types Ctrl+A, the character value is 0x01 (ASCII SOH).
* It is important that applications do not attempt to modify the
* character value based on a stateMask (such as SWT.CTRL) or the
* resulting character will not be correct.
*/
public char character;
/**
* depending on the event, the key code of the key that was typed,
* as defined by the key code constants in class SWT
.
* When the character field of the event is ambiguous, this field
* contains the unaffected value of the original character. For
* example, typing Ctrl+M or Enter both result in the character '\r'
* but the keyCode field will also contain '\r' when Enter was typed
* and 'm' when Ctrl+M was typed.
*
* @see org.eclipse.swt.SWT
*/
public int keyCode;
/**
* depending on the event, the location of key specified by the
* keyCode or character. The possible values for this field are
* SWT.LEFT
, SWT.RIGHT
, SWT.KEYPAD
,
* or SWT.NONE
representing the main keyboard area.
* * The location field can be used to differentiate key events that have * the same key code and character but are generated by different keys * in the keyboard. For example, a key down event with the key code equals * to SWT.SHIFT can be generated by the left and the right shift keys in the * keyboard. The location field can only be used to determine the location * of the key code or character in the current event. It does not * include information about the location of modifiers in state * mask. *
* * @see org.eclipse.swt.SWT#LEFT * @see org.eclipse.swt.SWT#RIGHT * @see org.eclipse.swt.SWT#KEYPAD * * @since 3.6 */ public int keyLocation; /** * depending on the event, 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; /** * depending on the event, the range of text being modified. * Setting these fields only has effect during ImeComposition * events. */ public int start, end; /** * depending on the event, the new text that will be inserted. * Setting this field will change the text that is about to * be inserted or deleted. */ public String text; /** * Bidi segment offsets * @since 3.8 */ public int[] segments; /** * Characters to be applied on the segment boundaries * @since 3.8 */ public char[] segmentsChars; /** * depending on the event, a flag indicating whether the operation * should be allowed. Setting this field to false will cancel the * operation. */ public boolean doit = true; /** * a field for application use */ public Object data; /** * An array of the touch states for the current touch event. * * @since 3.7 */ public Touch[] touches; /** * If nonzero, a positive value indicates a swipe to the right, * and a negative value indicates a swipe to the left. * * @since 3.7 */ public int xDirection; /** * If nonzero, a positive value indicates a swipe in the up direction, * and a negative value indicates a swipe in the down direction. * * @since 3.7 */ public int yDirection; /** * The change in magnification. This value should be added to the current * scaling of an item to get the new scale factor. * * @since 3.7 */ public double magnification; /** * The number of degrees rotated on the track pad. * * @since 3.7 */ public double rotation; /** * Gets the bounds. * * @return a rectangle that is the bounds. */ public Rectangle getBounds () { return new Rectangle (x, y, width, height); } Rectangle getBoundsInPixels () { return DPIUtil.autoScaleUp(getBounds()); } Point getLocation () { return new Point (x, y); } Point getLocationInPixels () { return DPIUtil.autoScaleUp(new Point(x, y)); } /** * Sets the bounds. * * @param rect the new rectangle */ public void setBounds (Rectangle rect) { this.x = rect.x; this.y = rect.y; this.width = rect.width; this.height = rect.height; } void setBoundsInPixels (Rectangle rect) { setBounds(DPIUtil.autoScaleDown(rect)); } void setLocationInPixels (int x, int y) { this.x = DPIUtil.autoScaleDown(x); this.y = DPIUtil.autoScaleDown(y); } /** * Returns a string containing a concise, human-readable * description of the receiver. * * @return a string representation of the event */ @Override public String toString () { return "Event {type=" + type + " " + widget + " time=" + time + " data=" + data + " x=" + x + " y=" + y + " width=" + width + " height=" + height + " detail=" + detail + "}"; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ } }