1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
/* * @(#)MenuShortcut.java 1.26 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.awt; import java.awt.event.KeyEvent; /** * The <code>MenuShortcut</code>class represents a keyboard accelerator * for a MenuItem. * <p> * Menu shortcuts are created using virtual keycodes, not characters. * For example, a menu shortcut for Ctrl-a (assuming that Control is * the accelerator key) would be created with code like the following: * <p> * MenuShortcut ms = new MenuShortcut(KeyEvent.VK_A, false); * <p> * The accelerator key is platform-dependent and may be obtained * via {@link Toolkit#getMenuShortcutKeyMask}. * * @author Thomas Ball * @version 1.26, 11/17/05 * @since JDK1.1 */ public class MenuShortcut implements java.io.Serializable { /** * The virtual keycode for the menu shortcut. * This is the keycode with which the menu shortcut will be created. * Note that it is a virtual keycode, not a character, * e.g. KeyEvent.VK_A, not 'a'. * Note: in 1.1.x you must use setActionCommand() on a menu item * in order for its shortcut to work, otherwise it will fire a null * action command. * * @serial * @see #getKey() * @see #usesShiftModifier() * @see java.awt.event.KeyEvent * @since JDK1.1 */ int key; /** * Indicates whether the shft key was pressed. * If true, the shift key was pressed. * If false, the shift key was not pressed * * @serial * @see #usesShiftModifier() * @since JDK1.1 */ boolean usesShift; /* * JDK 1.1 serialVersionUID */ private static final long serialVersionUID = 143448358473180225L; /** * Constructs a new MenuShortcut for the specified virtual keycode. * @param key the raw keycode for this MenuShortcut, as would be returned * in the keyCode field of a {@link java.awt.event.KeyEvent KeyEvent} if * this key were pressed. * @see java.awt.event.KeyEvent **/ public MenuShortcut(int key) { this(key, false); } /** * Constructs a new MenuShortcut for the specified virtual keycode. * @param key the raw keycode for this MenuShortcut, as would be returned * in the keyCode field of a {@link java.awt.event.KeyEvent KeyEvent} if * this key were pressed. * @param useShiftModifier indicates whether this MenuShortcut is invoked * with the SHIFT key down. * @see java.awt.event.KeyEvent **/ public MenuShortcut(int key, boolean useShiftModifier) { this.key = key; this.usesShift = useShiftModifier; } /** * Returns the raw keycode of this MenuShortcut. * @return the raw keycode of this MenuShortcut. * @see java.awt.event.KeyEvent * @since JDK1.1 */ public int getKey() { return key; } /** * Returns whether this MenuShortcut must be invoked using the SHIFT key. * @return <code>true</code> if this MenuShortcut must be invoked using the * SHIFT key, <code>false</code> otherwise. * @since JDK1.1 */ public boolean usesShiftModifier() { return usesShift; } /** * Returns whether this MenuShortcut is the same as another: * equality is defined to mean that both MenuShortcuts use the same key * and both either use or don't use the SHIFT key. * @param s the MenuShortcut to compare with this. * @return <code>true</code> if this MenuShortcut is the same as another, * <code>false</code> otherwise. * @since JDK1.1 */ public boolean equals(MenuShortcut s) { return (s != null && (s.getKey() == key) && (s.usesShiftModifier() == usesShift)); } /** * Returns whether this MenuShortcut is the same as another: * equality is defined to mean that both MenuShortcuts use the same key * and both either use or don't use the SHIFT key. * @param obj the Object to compare with this. * @return <code>true</code> if this MenuShortcut is the same as another, * <code>false</code> otherwise. * @since 1.2 */ public boolean equals(Object obj) { if (obj instanceof MenuShortcut) { return equals( (MenuShortcut) obj ); } return false; } /** * Returns the hashcode for this MenuShortcut. * @return the hashcode for this MenuShortcut. * @since 1.2 */ public int hashCode() { return (usesShift) ? (~key) : key; } /** * Returns an internationalized description of the MenuShortcut. * @return a string representation of this MenuShortcut. * @since JDK1.1 */ public String toString() { int modifiers = 0; if (!GraphicsEnvironment.isHeadless()) { modifiers = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); } if (usesShiftModifier()) { modifiers |= Event.SHIFT_MASK; } return KeyEvent.getKeyModifiersText(modifiers) + "+" + KeyEvent.getKeyText(key); } /** * Returns the parameter string representing the state of this * MenuShortcut. This string is useful for debugging. * @return the parameter string of this MenuShortcut. * @since JDK1.1 */ protected String paramString() { String str = "key=" + key; if (usesShiftModifier()) { str += ",usesShiftModifier"; } return str; } }