home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / KeyStroke.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.5 KB  |  323 lines

  1. package javax.swing;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.event.InputEvent;
  5. import java.awt.event.KeyEvent;
  6. import java.io.Serializable;
  7. import java.util.StringTokenizer;
  8.  
  9. public class KeyStroke implements Serializable {
  10.    private static final Object pressedCharCacheKey = new StringBuffer("KeyStroke.pressedCharCacheKey");
  11.    private static final Object releasedCharCacheKey = new StringBuffer("KeyStroke.releasedCharCacheKey");
  12.    private static final Object pressedCodeCacheKey = new StringBuffer("KeyStroke.pressedCodeCacheKey");
  13.    private static final Object releasedCodeCacheKey = new StringBuffer("KeyStroke.releasedCodeCacheKey");
  14.    char keyChar;
  15.    int keyCode;
  16.    int modifiers;
  17.    boolean onKeyRelease;
  18.    static final int MIN_ASCII_CACHE_INDEX = 10;
  19.    static final int MAX_ASCII_CACHE_INDEX = 127;
  20.    private static final Object classLock = new Object();
  21.    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)};
  22.    // $FF: synthetic field
  23.    static Class class$java$awt$event$KeyEvent;
  24.  
  25.    private KeyStroke() {
  26.    }
  27.  
  28.    static KeyStroke getCachedKeyCharKeyStroke(char var0, boolean var1) {
  29.       KeyStroke var2 = null;
  30.       if (var0 >= '\n' && var0 < 127) {
  31.          Object var3 = classLock;
  32.          synchronized(var3) {
  33.             KeyStroke[] var4;
  34.             if (var1) {
  35.                var4 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
  36.             } else {
  37.                var4 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
  38.             }
  39.  
  40.             if (var4 != null) {
  41.                var2 = var4[var0 - 10];
  42.             }
  43.          }
  44.       }
  45.  
  46.       return var2;
  47.    }
  48.  
  49.    static void cacheKeyCharKeyStroke(KeyStroke var0, boolean var1) {
  50.       if (var0.keyChar >= '\n' && var0.keyChar < 127) {
  51.          Object var2 = classLock;
  52.          synchronized(var2) {
  53.             if (var1) {
  54.                KeyStroke[] var3 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
  55.                if (var3 == null) {
  56.                   var3 = new KeyStroke[117];
  57.                   SwingUtilities.appContextPut(releasedCharCacheKey, var3);
  58.                }
  59.  
  60.                var3[var0.keyChar - 10] = var0;
  61.             } else {
  62.                KeyStroke[] var6 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
  63.                if (var6 == null) {
  64.                   var6 = new KeyStroke[117];
  65.                   SwingUtilities.appContextPut(pressedCharCacheKey, var6);
  66.                }
  67.  
  68.                var6[var0.keyChar - 10] = var0;
  69.             }
  70.          }
  71.       }
  72.  
  73.    }
  74.  
  75.    static int subIndexForModifier(int var0) {
  76.       if (var0 == 0) {
  77.          return 0;
  78.       } else if (var0 == 1) {
  79.          return 1;
  80.       } else if (var0 == 2) {
  81.          return 2;
  82.       } else {
  83.          return var0 == 8 ? 3 : -1;
  84.       }
  85.    }
  86.  
  87.    static KeyStroke getCachedKeyStroke(int var0, int var1, boolean var2) {
  88.       KeyStroke var4 = null;
  89.       int var3;
  90.       if (var0 >= 10 && var0 < 127 && (var3 = subIndexForModifier(var1)) != -1) {
  91.          Object var5 = classLock;
  92.          synchronized(var5) {
  93.             KeyStroke[][] var6;
  94.             if (var2) {
  95.                var6 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
  96.             } else {
  97.                var6 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
  98.             }
  99.  
  100.             if (var6 != null) {
  101.                var4 = var6[var3][var0 - 10];
  102.             }
  103.          }
  104.       }
  105.  
  106.       return var4;
  107.    }
  108.  
  109.    static void cacheKeyStroke(KeyStroke var0) {
  110.       int var1 = -1;
  111.       if (var0.keyCode >= 10 && var0.keyCode < 127 && (var1 = subIndexForModifier(var0.modifiers)) != -1) {
  112.          Object var2 = classLock;
  113.          synchronized(var2) {
  114.             Object var3 = null;
  115.             KeyStroke[][] var8;
  116.             if (var0.onKeyRelease) {
  117.                KeyStroke[][] var4 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
  118.                if (var4 == null) {
  119.                   var4 = new KeyStroke[4][117];
  120.                   SwingUtilities.appContextPut(pressedCodeCacheKey, var4);
  121.                }
  122.  
  123.                var8 = var4;
  124.             } else {
  125.                KeyStroke[][] var9 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
  126.                if (var9 == null) {
  127.                   var9 = new KeyStroke[4][117];
  128.                   SwingUtilities.appContextPut(releasedCodeCacheKey, var9);
  129.                }
  130.  
  131.                var8 = var9;
  132.             }
  133.  
  134.             var8[var1][var0.keyCode - 10] = var0;
  135.          }
  136.       }
  137.  
  138.    }
  139.  
  140.    public static KeyStroke getKeyStroke(char var0) {
  141.       return getKeyStroke(var0, false);
  142.    }
  143.  
  144.    public static KeyStroke getKeyStroke(char var0, boolean var1) {
  145.       KeyStroke var2 = getCachedKeyCharKeyStroke(var0, var1);
  146.       if (var2 == null) {
  147.          var2 = new KeyStroke();
  148.          var2.keyChar = var0;
  149.          var2.modifiers = 0;
  150.          var2.onKeyRelease = var1;
  151.          cacheKeyCharKeyStroke(var2, var1);
  152.       }
  153.  
  154.       return var2;
  155.    }
  156.  
  157.    public static KeyStroke getKeyStroke(Character var0, int var1) {
  158.       KeyStroke var2 = null;
  159.       if (var2 == null) {
  160.          var2 = new KeyStroke();
  161.          var2.keyChar = var0;
  162.          var2.modifiers = var1;
  163.          var2.onKeyRelease = false;
  164.       }
  165.  
  166.       return var2;
  167.    }
  168.  
  169.    public static KeyStroke getKeyStroke(int var0, int var1, boolean var2) {
  170.       KeyStroke var3 = getCachedKeyStroke(var0, var1, var2);
  171.       if (var3 == null) {
  172.          var3 = new KeyStroke();
  173.          var3.keyCode = var0;
  174.          var3.modifiers = var1;
  175.          var3.onKeyRelease = var2;
  176.          cacheKeyStroke(var3);
  177.       }
  178.  
  179.       return var3;
  180.    }
  181.  
  182.    public static KeyStroke getKeyStroke(int var0, int var1) {
  183.       return getKeyStroke(var0, var1, false);
  184.    }
  185.  
  186.    public static KeyStroke getKeyStrokeForEvent(KeyEvent var0) {
  187.       KeyStroke var1 = null;
  188.       switch (((AWTEvent)var0).getID()) {
  189.          case 400:
  190.             var1 = getKeyStroke(var0.getKeyChar());
  191.             break;
  192.          case 401:
  193.             var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), false);
  194.             break;
  195.          case 402:
  196.             var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), true);
  197.       }
  198.  
  199.       return var1;
  200.    }
  201.  
  202.    public static KeyStroke getKeyStroke(String var0) {
  203.       StringTokenizer var1 = new StringTokenizer(var0);
  204.       int var3 = 0;
  205.       boolean var4 = false;
  206.       boolean var5 = false;
  207.  
  208.       String var2;
  209.       while((var2 = var1.nextToken()) != null) {
  210.          int var6 = 0;
  211.  
  212.          for(int var7 = 0; var6 == 0 && var7 < modifierKeywords.length; ++var7) {
  213.             var6 = modifierKeywords[var7].getModifierMask(var2);
  214.          }
  215.  
  216.          if (var6 != 0) {
  217.             var3 |= var6;
  218.          } else if (var2.equals("released")) {
  219.             var4 = true;
  220.          } else if (!var2.equals("pressed")) {
  221.             if (!var2.equals("typed")) {
  222.                if (var5) {
  223.                   if (var2.length() != 1) {
  224.                      return null;
  225.                   }
  226.  
  227.                   return getKeyStroke(var2.charAt(0), var4);
  228.                }
  229.  
  230.                String var8 = versionMap("VK_" + var2);
  231.  
  232.                int var9;
  233.                try {
  234.                   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);
  235.                } catch (Exception var11) {
  236.                   return null;
  237.                }
  238.  
  239.                return getKeyStroke(var9, var3, var4);
  240.             }
  241.  
  242.             var5 = true;
  243.          }
  244.       }
  245.  
  246.       return null;
  247.    }
  248.  
  249.    private static String versionMap(String var0) {
  250.       if (!SwingUtilities.is1dot2) {
  251.          if (var0.equals("VK_KP_UP")) {
  252.             var0 = "VK_UP";
  253.          }
  254.  
  255.          if (var0.equals("VK_KP_DOWN")) {
  256.             var0 = "VK_DOWN";
  257.          }
  258.  
  259.          if (var0.equals("VK_KP_LEFT")) {
  260.             var0 = "VK_LEFT";
  261.          }
  262.  
  263.          if (var0.equals("VK_KP_RIGHT")) {
  264.             var0 = "VK_RIGHT";
  265.          }
  266.       }
  267.  
  268.       return var0;
  269.    }
  270.  
  271.    public char getKeyChar() {
  272.       return this.keyChar;
  273.    }
  274.  
  275.    public int getKeyCode() {
  276.       return this.keyCode;
  277.    }
  278.  
  279.    public int getModifiers() {
  280.       return this.modifiers;
  281.    }
  282.  
  283.    public boolean isOnKeyRelease() {
  284.       return this.onKeyRelease;
  285.    }
  286.  
  287.    private static String getStringRepresentation(char var0, int var1, boolean var2) {
  288.       return "keyChar " + KeyEvent.getKeyModifiersText(var1) + var0 + (var2 ? "-R" : "-P");
  289.    }
  290.  
  291.    private static String getStringRepresentation(int var0, int var1, boolean var2) {
  292.       return "keyCode " + KeyEvent.getKeyModifiersText(var1) + KeyEvent.getKeyText(var0) + (var2 ? "-R" : "-P");
  293.    }
  294.  
  295.    public int hashCode() {
  296.       return (this.keyChar + 1) * 2 * (this.keyCode + 1) * (this.modifiers + 1) + (this.onKeyRelease ? 1 : 2);
  297.    }
  298.  
  299.    public boolean equals(Object var1) {
  300.       if (var1 instanceof KeyStroke) {
  301.          KeyStroke var2 = (KeyStroke)var1;
  302.          if (var2.keyChar == this.keyChar && var2.keyCode == this.keyCode && var2.onKeyRelease == this.onKeyRelease && var2.modifiers == this.modifiers) {
  303.             return true;
  304.          }
  305.       }
  306.  
  307.       return false;
  308.    }
  309.  
  310.    public String toString() {
  311.       return this.keyChar == 0 ? getStringRepresentation(this.keyCode, this.modifiers, this.onKeyRelease) : getStringRepresentation((char)this.keyChar, 0, this.onKeyRelease);
  312.    }
  313.  
  314.    // $FF: synthetic method
  315.    static Class class$(String var0) {
  316.       try {
  317.          return Class.forName(var0);
  318.       } catch (ClassNotFoundException var2) {
  319.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  320.       }
  321.    }
  322. }
  323.