001: /*
002: * @(#)MenuShortcut.java 1.27 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027: package java.awt;
028:
029: import java.awt.event.KeyEvent;
030:
031: /**
032: * A class which represents a keyboard accelerator for a MenuItem.
033: *
034: * @version %I, 08/19/02
035: * @author Thomas Ball
036: */
037: public class MenuShortcut implements java.io.Serializable {
038: int key;
039: boolean usesShift;
040: /*
041: * JDK 1.1 serialVersionUID
042: */
043: private static final long serialVersionUID = 143448358473180225L;
044:
045: /**
046: * Constructs a new MenuShortcut for the specified key.
047: * @param key the raw keycode for this MenuShortcut, as would be returned
048: * in the keyCode field of a KeyEvent if this key were pressed.
049: * @exception UnsupportedOperationException if the class is not supported
050: **/
051: public MenuShortcut(int key) {
052: this (key, false);
053: }
054:
055: /**
056: * Constructs a new MenuShortcut for the specified key.
057: * @param key the raw keycode for this MenuShortcut, as would be returned
058: * in the keyCode field of a KeyEvent if this key were pressed.
059: * @param useShiftModifier indicates whether this MenuShortcut is invoked
060: * with the SHIFT key down.
061: * @exception UnsupportedOperationException if the class is not supported
062: **/
063: public MenuShortcut(int key, boolean useShiftModifier) {
064: this .key = key;
065: this .usesShift = useShiftModifier;
066: }
067:
068: /**
069: * Return the raw keycode of this MenuShortcut.
070: */
071: public int getKey() {
072: return key;
073: }
074:
075: /**
076: * Return whether this MenuShortcut must be invoked using the SHIFT key.
077: */
078: public boolean usesShiftModifier() {
079: return usesShift;
080: }
081:
082: /**
083: * Returns whether this MenuShortcut is the same as another:
084: * equality is defined to mean that both MenuShortcuts use the same key
085: * and both either use or don't use the SHIFT key.
086: * @param s the MenuShortcut to compare with this.
087: */
088: public boolean equals(MenuShortcut s) {
089: return (s != null && (s.getKey() == key) && (s
090: .usesShiftModifier() == usesShift));
091: }
092:
093: /**
094: * Returns whether this MenuShortcut is the same as another:
095: * equality is defined to mean that both MenuShortcuts use the same key
096: * and both either use or don't use the SHIFT key.
097: * @param obj the Object to compare with this.
098: * @return <code>true</code> if this MenuShortcut is the same as another,
099: * <code>false</code> otherwise.
100: * @since 1.2
101: */
102: public boolean equals(Object obj) {
103: if (obj instanceof MenuShortcut) {
104: return equals((MenuShortcut) obj);
105: }
106: return false;
107: }
108:
109: /**
110: * Returns the hashcode for this MenuShortcut.
111: * @return the hashcode for this MenuShortcut.
112: * @since 1.2
113: */
114: public int hashCode() {
115: return (usesShift) ? (~key) : key;
116: }
117:
118: /**
119: * Returns an internationalized description of the MenuShortcut.
120: */
121: public String toString() {
122: int modifiers = Toolkit.getDefaultToolkit()
123: .getMenuShortcutKeyMask();
124: if (usesShiftModifier()) {
125: modifiers |= Event.SHIFT_MASK;
126: }
127: return KeyEvent.getKeyModifiersText(modifiers) + "+"
128: + KeyEvent.getKeyText(key);
129: }
130:
131: protected String paramString() {
132: String str = "key=" + key;
133: if (usesShiftModifier()) {
134: str += ",usesShiftModifier";
135: }
136: return str;
137: }
138: }
|