FileDocCategorySizeDatePackage
AWTKeyStroke.javaAPI DocAndroid 1.5 API23816Wed May 06 22:41:54 BST 2009java.awt

AWTKeyStroke

public class AWTKeyStroke extends Object implements Serializable
The AWTKeyStroke holds all of the information for the complete act of typing a character. This includes the events that are generated when the key is pressed, released, or typed (pressed and released generating a Unicode character result) which are associated with the event objects KeyEvent.KEY_PRESSED, KeyEvent.KEY_RELEASED, or KeyEvent.KEY_TYPED. It also holds information about which modifiers (such as control or shift) were used in conjunction with the keystroke. The following masks are available to identify the modifiers:
  • java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK
  • java.awt.event.InputEvent.ALT_DOWN_MASK
  • java.awt.event.InputEvent.CTRL_DOWN_MASK
  • java.awt.event.InputEvent.META_DOWN_MASK
  • java.awt.event.InputEvent.SHIFT_DOWN_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_MASK
  • java.awt.event.InputEvent.ALT_MASK
  • java.awt.event.InputEvent.CTRL_MASK
  • java.awt.event.InputEvent.META_MASK
  • java.awt.event.InputEvent.SHIFT_MASK

The AWTKeyStroke is unique, and applications should not create their own instances of AWTKeyStroke. All applications should use getAWTKeyStroke methods for obtaining instances of AWTKeyStroke.
since
Android 1.0

Fields Summary
private static final long
serialVersionUID
The Constant serialVersionUID.
private static final Map
cache
The Constant cache.
private static final Map
keyEventTypesMap
The Constant keyEventTypesMap.
private static Constructor
subConstructor
private char
keyChar
The key char.
private int
keyCode
The key code.
private int
modifiers
The modifiers.
private boolean
onKeyRelease
The on key release.
Constructors Summary
protected AWTKeyStroke(char keyChar, int keyCode, int modifiers, boolean onKeyRelease)
Instantiates a new AWTKeyStroke. getAWTKeyStroke method should be used by applications code.

param
keyChar the key char.
param
keyCode the key code.
param
modifiers the modifiers.
param
onKeyRelease true if AWTKeyStroke is for a key release, false otherwise.

        setAWTKeyStroke(keyChar, keyCode, modifiers, onKeyRelease);
    
protected AWTKeyStroke()
Instantiates a new AWTKeyStroke with default parameters: KeyEvent.CHAR_UNDEFINED key char, KeyEvent.VK_UNDEFINED key code, without modifiers and false key realized value.

        this(KeyEvent.CHAR_UNDEFINED, KeyEvent.VK_UNDEFINED, 0, false);
    
Methods Summary
private static intaddMask(int mod, int mask)
Adds the mask.

param
mod the mod.
param
mask the mask.
return
the int.

        return ((mod & mask) != 0) ? (mod | mask) : mod;
    
public final booleanequals(java.lang.Object anObject)
Compares this AWTKeyStroke object to the specified object.

param
anObject the specified AWTKeyStroke object to compare with this instance.
return
true if objects are identical, false otherwise.

        if (anObject instanceof AWTKeyStroke) {
            AWTKeyStroke key = (AWTKeyStroke)anObject;
            return ((key.keyCode == keyCode) && (key.keyChar == keyChar)
                    && (key.modifiers == modifiers) && (key.onKeyRelease == onKeyRelease));
        }
        return false;
    
private static java.awt.AWTKeyStrokegetAWTKeyStroke(char keyChar, int keyCode, int modifiers, boolean onKeyRelease)
Gets the AWT key stroke.

param
keyChar the key char.
param
keyCode the key code.
param
modifiers the modifiers.
param
onKeyRelease the on key release.
return
the AWT key stroke.

        AWTKeyStroke key = newInstance(keyChar, keyCode, modifiers, onKeyRelease);

        AWTKeyStroke value = cache.get(key);
        if (value == null) {
            value = key;
            cache.put(key, value);
        }
        return value;
    
public static java.awt.AWTKeyStrokegetAWTKeyStroke(java.lang.String s)
Returns an instance of AWTKeyStroke for parsed string. The string must have the following syntax:

<modifiers>* (<typedID> | <pressedReleasedID>)

modifiers := shift | control | ctrl | meta | alt | altGraph
typedID := typed
typedKey := string of length 1 giving the Unicode character.
pressedReleasedID := (pressed | released)
key := KeyEvent key code name, i.e. the name following "VK_".

param
s the String which contains key stroke parameters.
return
the AWTKeyStroke for string.
throws
IllegalArgumentException if string has incorrect format or null.

        if (s == null) {
            // awt.65=null argument
            throw new IllegalArgumentException(Messages.getString("awt.65")); //$NON-NLS-1$
        }

        StringTokenizer tokenizer = new StringTokenizer(s);

        Boolean release = null;
        int modifiers = 0;
        int keyCode = KeyEvent.VK_UNDEFINED;
        char keyChar = KeyEvent.CHAR_UNDEFINED;
        boolean typed = false;
        long modifier = 0;
        String token = null;
        do {
            token = getNextToken(tokenizer);
            modifier = parseModifier(token);
            modifiers |= modifier;
        } while (modifier > 0);

        typed = parseTypedID(token);

        if (typed) {
            token = getNextToken(tokenizer);
            keyChar = parseTypedKey(token);

        }
        if (keyChar == KeyEvent.CHAR_UNDEFINED) {
            release = parsePressedReleasedID(token);
            if (release != null) {
                token = getNextToken(tokenizer);
            }
            keyCode = parseKey(token);
        }
        if (tokenizer.hasMoreTokens()) {
            // awt.66=Invalid format
            throw new IllegalArgumentException(Messages.getString("awt.66")); //$NON-NLS-1$
        }

        return getAWTKeyStroke(keyChar, keyCode, modifiers, release == Boolean.TRUE);
    
public static java.awt.AWTKeyStrokegetAWTKeyStroke(char keyChar)
Gets an instance of the AWTKeyStroke for specified character.

param
keyChar the keyboard character value.
return
a AWTKeyStroke for specified character.

        return getAWTKeyStroke(keyChar, KeyEvent.VK_UNDEFINED, 0, false);
    
public static java.awt.AWTKeyStrokegetAWTKeyStroke(int keyCode, int modifiers, boolean onKeyRelease)
Returns an instance of AWTKeyStroke for a given key code, set of modifiers, and specified key released flag value. The key codes are defined in java.awt.event.KeyEvent class. The set of modifiers is given as a bitwise combination of masks taken from the following list:
  • java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK
  • java.awt.event.InputEvent.ALT_DOWN_MASK
  • java.awt.event.InputEvent.CTRL_DOWN_MASK
  • java.awt.event.InputEvent.META_DOWN_MASK
  • java.awt.event.InputEvent.SHIFT_DOWN_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_MASK
  • java.awt.event.InputEvent.ALT_MASK
  • java.awt.event.InputEvent.CTRL_MASK
  • java.awt.event.InputEvent.META_MASK
  • java.awt.event.InputEvent.SHIFT_MASK

param
keyCode the specified key code of keyboard.
param
modifiers the bit set of modifiers.
param
onKeyRelease the value which represents whether this AWTKeyStroke shall represents a key release.
return
the AWTKeyStroke.

        return getAWTKeyStroke(KeyEvent.CHAR_UNDEFINED, keyCode, modifiers, onKeyRelease);
    
public static java.awt.AWTKeyStrokegetAWTKeyStroke(java.lang.Character keyChar, int modifiers)
Returns AWTKeyStroke for a specified character and set of modifiers. The set of modifiers is given as a bitwise combination of masks taken from the following list:
  • java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK
  • java.awt.event.InputEvent.ALT_DOWN_MASK
  • java.awt.event.InputEvent.CTRL_DOWN_MASK
  • java.awt.event.InputEvent.META_DOWN_MASK
  • java.awt.event.InputEvent.SHIFT_DOWN_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_MASK
  • java.awt.event.InputEvent.ALT_MASK
  • java.awt.event.InputEvent.CTRL_MASK
  • java.awt.event.InputEvent.META_MASK
  • java.awt.event.InputEvent.SHIFT_MASK

param
keyChar the Character object which represents keyboard character value.
param
modifiers the bit set of modifiers.
return
the AWTKeyStroke object.
throws
IllegalArgumentException if keyChar value is null.

        if (keyChar == null) {
            // awt.01='{0}' parameter is null
            throw new IllegalArgumentException(Messages.getString("awt.01", "keyChar")); //$NON-NLS-1$ //$NON-NLS-2$
        }
        return getAWTKeyStroke(keyChar.charValue(), KeyEvent.VK_UNDEFINED, modifiers, false);
    
public static java.awt.AWTKeyStrokegetAWTKeyStroke(int keyCode, int modifiers)
Returns an instance of AWTKeyStroke for a specified key code and set of modifiers. The key codes are defined in java.awt.event.KeyEvent class. The set of modifiers is given as a bitwise combination of masks taken from the following list:
  • java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK
  • java.awt.event.InputEvent.ALT_DOWN_MASK
  • java.awt.event.InputEvent.CTRL_DOWN_MASK
  • java.awt.event.InputEvent.META_DOWN_MASK
  • java.awt.event.InputEvent.SHIFT_DOWN_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_MASK
  • java.awt.event.InputEvent.ALT_MASK
  • java.awt.event.InputEvent.CTRL_MASK
  • java.awt.event.InputEvent.META_MASK
  • java.awt.event.InputEvent.SHIFT_MASK

param
keyCode the specified key code of keyboard.
param
modifiers the bit set of modifiers.
return
the AWTKeyStroke.

        return getAWTKeyStroke(keyCode, modifiers, false);
    
public static java.awt.AWTKeyStrokegetAWTKeyStrokeForEvent(java.awt.event.KeyEvent anEvent)
Gets the AWTKeyStroke for a key event. This method obtains the key char and key code from the specified key event.

param
anEvent the key event which identifies the desired AWTKeyStroke.
return
the AWTKeyStroke for the key event.

        int id = anEvent.getID();
        char undef = KeyEvent.CHAR_UNDEFINED;
        char keyChar = (id == KeyEvent.KEY_TYPED ? anEvent.getKeyChar() : undef);
        int keyCode = (keyChar == undef ? anEvent.getKeyCode() : KeyEvent.VK_UNDEFINED);
        return getAWTKeyStroke(keyChar, keyCode, anEvent.getModifiersEx(),
                id == KeyEvent.KEY_RELEASED);
    
static intgetAllModifiers(int mod)
Return all (old & new) modifiers corresponding to.

param
mod old or new modifiers.
return
old and new modifiers together.

        int allMod = mod;
        int shift = (InputEvent.SHIFT_MASK | InputEvent.SHIFT_DOWN_MASK);
        int ctrl = (InputEvent.CTRL_MASK | InputEvent.CTRL_DOWN_MASK);
        int meta = (InputEvent.META_MASK | InputEvent.META_DOWN_MASK);
        int alt = (InputEvent.ALT_MASK | InputEvent.ALT_DOWN_MASK);
        int altGr = (InputEvent.ALT_GRAPH_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
        // button modifiers are not converted between old & new

        allMod = addMask(allMod, shift);
        allMod = addMask(allMod, ctrl);
        allMod = addMask(allMod, meta);
        allMod = addMask(allMod, alt);
        allMod = addMask(allMod, altGr);

        return allMod;
    
public final chargetKeyChar()
Gets the key character for the AWTKeyStroke object.

return
the key character for the AWTKeyStroke object.

        return keyChar;
    
static intgetKeyCode(java.lang.String s)
Gets the key code.

param
s the s.
return
the key code.

        try {
            Field vk = KeyEvent.class.getField("VK_" + s); //$NON-NLS-1$
            return vk.getInt(null);
        } catch (Exception e) {
            if (s.length() != 1) {
                // awt.66=Invalid format
                throw new IllegalArgumentException(Messages.getString("awt.66")); //$NON-NLS-1$
            }
            return KeyEvent.VK_UNDEFINED;
        }
    
public final intgetKeyCode()
Gets the key code for the AWTKeyStroke object.

return
the key code for the AWTKeyStroke object.

        return keyCode;
    
public final intgetKeyEventType()
Gets the key event type for the AWTKeyStroke object.

return
the key event type: KeyEvent.KEY_PRESSED, KeyEvent.KEY_TYPED, or KeyEvent.KEY_RELEASED.

        if (keyCode == KeyEvent.VK_UNDEFINED) {
            return KeyEvent.KEY_TYPED;
        }
        return (onKeyRelease ? KeyEvent.KEY_RELEASED : KeyEvent.KEY_PRESSED);
    
public final intgetModifiers()
Gets the set of modifiers for the AWTKeyStroke object.

return
the integer value which contains modifiers.

        return modifiers;
    
private static java.lang.StringgetNextToken(java.util.StringTokenizer tokenizer)
Gets the next token.

param
tokenizer the tokenizer.
return
the next token.

        try {
            return tokenizer.nextToken();
        } catch (NoSuchElementException exception) {
            // awt.66=Invalid format
            throw new IllegalArgumentException(Messages.getString("awt.66")); //$NON-NLS-1$
        }
    
public inthashCode()
Returns the unique number value for AWTKeyStroke object.

return
the integer unique value of the AWTKeyStroke object.

        return modifiers + (keyCode != KeyEvent.VK_UNDEFINED ? keyCode : keyChar)
                + (onKeyRelease ? -1 : 0);
    
public final booleanisOnKeyRelease()
Returns true if the key event is associated with the AWTKeyStroke is KEY_RELEASED, false otherwise.

return
true, if if the key event associated with the AWTKeyStroke is KEY_RELEASED, false otherwise.

        return onKeyRelease;
    
private static java.awt.AWTKeyStrokenewInstance(char keyChar, int keyCode, int modifiers, boolean onKeyRelease)
New instance.

param
keyChar the key char.
param
keyCode the key code.
param
modifiers the modifiers.
param
onKeyRelease the on key release.
return
the AWT key stroke.

        AWTKeyStroke key;
        // ???AWT
        // if (subConstructor == null) {
        key = new AWTKeyStroke();
        // ???AWT
        // } else {
        // try {
        // key = (AWTKeyStroke) subConstructor.newInstance();
        // } catch (Exception e) {
        // throw new RuntimeException(e);
        // }
        // }
        int allModifiers = getAllModifiers(modifiers);
        key.setAWTKeyStroke(keyChar, keyCode, allModifiers, onKeyRelease);
        return key;
    
private static intparseKey(java.lang.String strCode)
Parses the key.

param
strCode the str code.
return
the int.

        int keyCode = KeyEvent.VK_UNDEFINED;

        keyCode = getKeyCode(strCode);

        if (keyCode == KeyEvent.VK_UNDEFINED) {
            // awt.66=Invalid format
            throw new IllegalArgumentException(Messages.getString("awt.66")); //$NON-NLS-1$
        }
        return keyCode;
    
private static longparseModifier(java.lang.String strMod)
Parses the modifier.

param
strMod the str mod.
return
the long.

        long modifiers = 0l;
        if (strMod.equals("shift")) { //$NON-NLS-1$
            modifiers |= InputEvent.SHIFT_DOWN_MASK;
        } else if (strMod.equals("control") || strMod.equals("ctrl")) { //$NON-NLS-1$ //$NON-NLS-2$
            modifiers |= InputEvent.CTRL_DOWN_MASK;
        } else if (strMod.equals("meta")) { //$NON-NLS-1$
            modifiers |= InputEvent.META_DOWN_MASK;
        } else if (strMod.equals("alt")) { //$NON-NLS-1$
            modifiers |= InputEvent.ALT_DOWN_MASK;
        } else if (strMod.equals("altGraph")) { //$NON-NLS-1$
            modifiers |= InputEvent.ALT_GRAPH_DOWN_MASK;
        } else if (strMod.equals("button1")) { //$NON-NLS-1$
            modifiers |= InputEvent.BUTTON1_DOWN_MASK;
        } else if (strMod.equals("button2")) { //$NON-NLS-1$
            modifiers |= InputEvent.BUTTON2_DOWN_MASK;
        } else if (strMod.equals("button3")) { //$NON-NLS-1$
            modifiers |= InputEvent.BUTTON3_DOWN_MASK;
        }
        return modifiers;
    
private static java.lang.BooleanparsePressedReleasedID(java.lang.String str)
Parses the pressed released id.

param
str the str.
return
the boolean.


        if (str.equals("pressed")) { //$NON-NLS-1$
            return Boolean.FALSE;
        } else if (str.equals("released")) { //$NON-NLS-1$
            return Boolean.TRUE;
        }
        return null;
    
private static booleanparseTypedID(java.lang.String strTyped)
Parses the typed id.

param
strTyped the str typed.
return
true, if successful.

        if (strTyped.equals("typed")) { //$NON-NLS-1$
            return true;
        }

        return false;
    
private static charparseTypedKey(java.lang.String strChar)
Parses the typed key.

param
strChar the str char.
return
the char.

        char keyChar = KeyEvent.CHAR_UNDEFINED;

        if (strChar.length() != 1) {
            // awt.66=Invalid format
            throw new IllegalArgumentException(Messages.getString("awt.66")); //$NON-NLS-1$
        }
        keyChar = strChar.charAt(0);
        return keyChar;
    
protected java.lang.ObjectreadResolve()
Read resolve.

return
the object.
throws
ObjectStreamException the object stream exception.

        return getAWTKeyStroke(this.keyChar, this.keyCode, this.modifiers, this.onKeyRelease);
    
protected static voidregisterSubclass(java.lang.Class subclass)
Register subclass.

param
subclass the subclass.

        // ???AWT
        /*
         * if (subclass == null) { // awt.01='{0}' parameter is null throw new
         * IllegalArgumentException(Messages.getString("awt.01", "subclass"));
         * //$NON-NLS-1$ //$NON-NLS-2$ } if (!
         * AWTKeyStroke.class.isAssignableFrom(subclass)) { // awt.67=subclass
         * is not derived from AWTKeyStroke throw new
         * ClassCastException(Messages.getString("awt.67")); //$NON-NLS-1$ } try
         * { subConstructor = subclass.getDeclaredConstructor();
         * subConstructor.setAccessible(true); } catch (SecurityException e) {
         * throw new RuntimeException(e); } catch (NoSuchMethodException e) { //
         * awt.68=subclass could not be instantiated throw new
         * IllegalArgumentException(Messages.getString("awt.68")); //$NON-NLS-1$
         * } cache.clear(); //flush the cache
         */
    
private voidsetAWTKeyStroke(char keyChar, int keyCode, int modifiers, boolean onKeyRelease)
Sets the AWT key stroke.

param
keyChar the key char.
param
keyCode the key code.
param
modifiers the modifiers.
param
onKeyRelease the on key release.

        this.keyChar = keyChar;
        this.keyCode = keyCode;
        this.modifiers = modifiers;
        this.onKeyRelease = onKeyRelease;
    
public java.lang.StringtoString()
Returns the string representation of the AWTKeyStroke. This string should contain key stroke properties.

return
the string representation of the AWTKeyStroke.

        int type = getKeyEventType();
        return InputEvent.getModifiersExText(getModifiers()) + " " + //$NON-NLS-1$
                keyEventTypesMap.get(new Integer(type)) + " " + //$NON-NLS-1$
                (type == KeyEvent.KEY_TYPED ? new String(new char[] {
                    keyChar
                }) : KeyEvent.getKeyText(keyCode));