home *** CD-ROM | disk | FTP | other *** search
Wrap
package javax.swing; import java.awt.AWTEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.io.Serializable; import java.util.StringTokenizer; public class KeyStroke implements Serializable { private static final Object pressedCharCacheKey = new StringBuffer("KeyStroke.pressedCharCacheKey"); private static final Object releasedCharCacheKey = new StringBuffer("KeyStroke.releasedCharCacheKey"); private static final Object pressedCodeCacheKey = new StringBuffer("KeyStroke.pressedCodeCacheKey"); private static final Object releasedCodeCacheKey = new StringBuffer("KeyStroke.releasedCodeCacheKey"); char keyChar; int keyCode; int modifiers; boolean onKeyRelease; static final int MIN_ASCII_CACHE_INDEX = 10; static final int MAX_ASCII_CACHE_INDEX = 127; private static final Object classLock = new Object(); private static ModifierKeyword[] modifierKeywords = new ModifierKeyword[]{new ModifierKeyword("shift", 1), new ModifierKeyword("control", 2), new ModifierKeyword("ctrl", 2), new ModifierKeyword("meta", 4), new ModifierKeyword("alt", 8), new ModifierKeyword("button1", 16), new ModifierKeyword("button2", 8), new ModifierKeyword("button3", 4)}; // $FF: synthetic field static Class class$java$awt$event$KeyEvent; private KeyStroke() { } static KeyStroke getCachedKeyCharKeyStroke(char var0, boolean var1) { KeyStroke var2 = null; if (var0 >= '\n' && var0 < 127) { Object var3 = classLock; synchronized(var3) { KeyStroke[] var4; if (var1) { var4 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey); } else { var4 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey); } if (var4 != null) { var2 = var4[var0 - 10]; } } } return var2; } static void cacheKeyCharKeyStroke(KeyStroke var0, boolean var1) { if (var0.keyChar >= '\n' && var0.keyChar < 127) { Object var2 = classLock; synchronized(var2) { if (var1) { KeyStroke[] var3 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey); if (var3 == null) { var3 = new KeyStroke[117]; SwingUtilities.appContextPut(releasedCharCacheKey, var3); } var3[var0.keyChar - 10] = var0; } else { KeyStroke[] var6 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey); if (var6 == null) { var6 = new KeyStroke[117]; SwingUtilities.appContextPut(pressedCharCacheKey, var6); } var6[var0.keyChar - 10] = var0; } } } } static int subIndexForModifier(int var0) { if (var0 == 0) { return 0; } else if (var0 == 1) { return 1; } else if (var0 == 2) { return 2; } else { return var0 == 8 ? 3 : -1; } } static KeyStroke getCachedKeyStroke(int var0, int var1, boolean var2) { KeyStroke var4 = null; int var3; if (var0 >= 10 && var0 < 127 && (var3 = subIndexForModifier(var1)) != -1) { Object var5 = classLock; synchronized(var5) { KeyStroke[][] var6; if (var2) { var6 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey); } else { var6 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey); } if (var6 != null) { var4 = var6[var3][var0 - 10]; } } } return var4; } static void cacheKeyStroke(KeyStroke var0) { int var1 = -1; if (var0.keyCode >= 10 && var0.keyCode < 127 && (var1 = subIndexForModifier(var0.modifiers)) != -1) { Object var2 = classLock; synchronized(var2) { Object var3 = null; KeyStroke[][] var8; if (var0.onKeyRelease) { KeyStroke[][] var4 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey); if (var4 == null) { var4 = new KeyStroke[4][117]; SwingUtilities.appContextPut(pressedCodeCacheKey, var4); } var8 = var4; } else { KeyStroke[][] var9 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey); if (var9 == null) { var9 = new KeyStroke[4][117]; SwingUtilities.appContextPut(releasedCodeCacheKey, var9); } var8 = var9; } var8[var1][var0.keyCode - 10] = var0; } } } public static KeyStroke getKeyStroke(char var0) { return getKeyStroke(var0, false); } public static KeyStroke getKeyStroke(char var0, boolean var1) { KeyStroke var2 = getCachedKeyCharKeyStroke(var0, var1); if (var2 == null) { var2 = new KeyStroke(); var2.keyChar = var0; var2.modifiers = 0; var2.onKeyRelease = var1; cacheKeyCharKeyStroke(var2, var1); } return var2; } public static KeyStroke getKeyStroke(Character var0, int var1) { KeyStroke var2 = null; if (var2 == null) { var2 = new KeyStroke(); var2.keyChar = var0; var2.modifiers = var1; var2.onKeyRelease = false; } return var2; } public static KeyStroke getKeyStroke(int var0, int var1, boolean var2) { KeyStroke var3 = getCachedKeyStroke(var0, var1, var2); if (var3 == null) { var3 = new KeyStroke(); var3.keyCode = var0; var3.modifiers = var1; var3.onKeyRelease = var2; cacheKeyStroke(var3); } return var3; } public static KeyStroke getKeyStroke(int var0, int var1) { return getKeyStroke(var0, var1, false); } public static KeyStroke getKeyStrokeForEvent(KeyEvent var0) { KeyStroke var1 = null; switch (((AWTEvent)var0).getID()) { case 400: var1 = getKeyStroke(var0.getKeyChar()); break; case 401: var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), false); break; case 402: var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), true); } return var1; } public static KeyStroke getKeyStroke(String var0) { StringTokenizer var1 = new StringTokenizer(var0); int var3 = 0; boolean var4 = false; boolean var5 = false; String var2; while((var2 = var1.nextToken()) != null) { int var6 = 0; for(int var7 = 0; var6 == 0 && var7 < modifierKeywords.length; ++var7) { var6 = modifierKeywords[var7].getModifierMask(var2); } if (var6 != 0) { var3 |= var6; } else if (var2.equals("released")) { var4 = true; } else if (!var2.equals("pressed")) { if (!var2.equals("typed")) { if (var5) { if (var2.length() != 1) { return null; } return getKeyStroke(var2.charAt(0), var4); } String var8 = versionMap("VK_" + var2); int var9; try { var9 = (class$java$awt$event$KeyEvent == null ? (class$java$awt$event$KeyEvent = class$("java.awt.event.KeyEvent")) : class$java$awt$event$KeyEvent).getField(var8).getInt(class$java$awt$event$KeyEvent == null ? (class$java$awt$event$KeyEvent = class$("java.awt.event.KeyEvent")) : class$java$awt$event$KeyEvent); } catch (Exception var11) { return null; } return getKeyStroke(var9, var3, var4); } var5 = true; } } return null; } private static String versionMap(String var0) { if (!SwingUtilities.is1dot2) { if (var0.equals("VK_KP_UP")) { var0 = "VK_UP"; } if (var0.equals("VK_KP_DOWN")) { var0 = "VK_DOWN"; } if (var0.equals("VK_KP_LEFT")) { var0 = "VK_LEFT"; } if (var0.equals("VK_KP_RIGHT")) { var0 = "VK_RIGHT"; } } return var0; } public char getKeyChar() { return this.keyChar; } public int getKeyCode() { return this.keyCode; } public int getModifiers() { return this.modifiers; } public boolean isOnKeyRelease() { return this.onKeyRelease; } private static String getStringRepresentation(char var0, int var1, boolean var2) { return "keyChar " + KeyEvent.getKeyModifiersText(var1) + var0 + (var2 ? "-R" : "-P"); } private static String getStringRepresentation(int var0, int var1, boolean var2) { return "keyCode " + KeyEvent.getKeyModifiersText(var1) + KeyEvent.getKeyText(var0) + (var2 ? "-R" : "-P"); } public int hashCode() { return (this.keyChar + 1) * 2 * (this.keyCode + 1) * (this.modifiers + 1) + (this.onKeyRelease ? 1 : 2); } public boolean equals(Object var1) { if (var1 instanceof KeyStroke) { KeyStroke var2 = (KeyStroke)var1; if (var2.keyChar == this.keyChar && var2.keyCode == this.keyCode && var2.onKeyRelease == this.onKeyRelease && var2.modifiers == this.modifiers) { return true; } } return false; } public String toString() { return this.keyChar == 0 ? getStringRepresentation(this.keyCode, this.modifiers, this.onKeyRelease) : getStringRepresentation((char)this.keyChar, 0, this.onKeyRelease); } // $FF: synthetic method static Class class$(String var0) { try { return Class.forName(var0); } catch (ClassNotFoundException var2) { throw new NoClassDefFoundError(((Throwable)var2).getMessage()); } } }