001: /*******************************************************************************
002: * Copyright (c) 2000, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.swt.events;
011:
012: import org.eclipse.swt.widgets.Event;
013:
014: /**
015: * Instances of this class are sent as a result of
016: * keys being pressed and released on the keyboard.
017: * <p>
018: * When a key listener is added to a control, the control
019: * will take part in widget traversal. By default, all
020: * traversal keys (such as the tab key and so on) are
021: * delivered to the control. In order for a control to take
022: * part in traversal, it should listen for traversal events.
023: * Otherwise, the user can traverse into a control but not
024: * out. Note that native controls such as table and tree
025: * implement key traversal in the operating system. It is
026: * not necessary to add traversal listeners for these controls,
027: * unless you want to override the default traversal.
028: * </p>
029: * @see KeyListener
030: * @see TraverseListener
031: */
032:
033: public class KeyEvent extends TypedEvent {
034:
035: /**
036: * the character represented by the key that was typed.
037: * This is the final character that results after all modifiers have been
038: * applied. For example, when the user types Ctrl+A, the character value
039: * is 0x01. It is important that applications do not attempt to modify the
040: * character value based on a stateMask (such as SWT.CTRL) or the resulting
041: * character will not be correct.
042: */
043: public char character;
044:
045: /**
046: * the key code of the key that was typed,
047: * as defined by the key code constants in class <code>SWT</code>.
048: * When the character field of the event is ambiguous, this field
049: * contains the unicode value of the original character. For example,
050: * typing Ctrl+M or Return both result in the character '\r' but the
051: * keyCode field will also contain '\r' when Return was typed.
052: *
053: * @see org.eclipse.swt.SWT
054: */
055: public int keyCode;
056:
057: /**
058: * the state of the keyboard modifier keys at the time
059: * the event was generated, as defined by the key code
060: * constants in class <code>SWT</code>.
061: *
062: * @see org.eclipse.swt.SWT
063: */
064: public int stateMask;
065:
066: /**
067: * A flag indicating whether the operation should be allowed.
068: * Setting this field to <code>false</code> will cancel the operation.
069: */
070: public boolean doit;
071:
072: static final long serialVersionUID = 3256442491011412789L;
073:
074: /**
075: * Constructs a new instance of this class based on the
076: * information in the given untyped event.
077: *
078: * @param e the untyped event containing the information
079: */
080: public KeyEvent(Event e) {
081: super (e);
082: this .character = e.character;
083: this .keyCode = e.keyCode;
084: this .stateMask = e.stateMask;
085: this .doit = e.doit;
086: }
087:
088: /**
089: * Returns a string containing a concise, human-readable
090: * description of the receiver.
091: *
092: * @return a string representation of the event
093: */
094: public String toString() {
095: String string = super .toString();
096: return string.substring(0, string.length() - 1) // remove trailing '}'
097: + " character='"
098: + ((character == 0) ? "\\0" : "" + character)
099: + "'"
100: + " keyCode=" + keyCode + " stateMask="
101: + stateMask
102: + " doit=" + doit + "}";
103: }
104: }
|