home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / KeyStroke.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  4.9 KB  |  259 lines

  1. package com.sun.java.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.  
  8. public class KeyStroke implements Serializable {
  9.    private static final Object pressedCharCacheKey = new StringBuffer("KeyStroke.pressedCharCacheKey");
  10.    private static final Object releasedCharCacheKey = new StringBuffer("KeyStroke.releasedCharCacheKey");
  11.    private static final Object pressedCodeCacheKey = new StringBuffer("KeyStroke.pressedCodeCacheKey");
  12.    private static final Object releasedCodeCacheKey = new StringBuffer("KeyStroke.releasedCodeCacheKey");
  13.    char keyChar;
  14.    int keyCode;
  15.    int modifiers;
  16.    boolean onKeyRelease;
  17.    static final int MIN_ASCII_CACHE_INDEX = 10;
  18.    static final int MAX_ASCII_CACHE_INDEX = 127;
  19.    // $FF: synthetic field
  20.    static Class class$com$sun$java$swing$KeyStroke;
  21.  
  22.    private KeyStroke() {
  23.    }
  24.  
  25.    static KeyStroke getCachedKeyCharKeyStroke(char var0, boolean var1) {
  26.       KeyStroke var2 = null;
  27.       if (var0 >= '\n' && var0 < 127) {
  28.          Class var3 = class$com$sun$java$swing$KeyStroke != null ? class$com$sun$java$swing$KeyStroke : (class$com$sun$java$swing$KeyStroke = class$("com.sun.java.swing.KeyStroke"));
  29.          synchronized(var3){}
  30.  
  31.          try {
  32.             KeyStroke[] var5;
  33.             if (var1) {
  34.                var5 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
  35.             } else {
  36.                var5 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
  37.             }
  38.  
  39.             if (var5 != null) {
  40.                var2 = var5[var0 - 10];
  41.             }
  42.          } catch (Throwable var7) {
  43.             throw var7;
  44.          }
  45.       }
  46.  
  47.       return var2;
  48.    }
  49.  
  50.    static void cacheKeyCharKeyStroke(KeyStroke var0, boolean var1) {
  51.       if (var0.keyChar >= '\n' && var0.keyChar < 127) {
  52.          Class var2 = class$com$sun$java$swing$KeyStroke != null ? class$com$sun$java$swing$KeyStroke : (class$com$sun$java$swing$KeyStroke = class$("com.sun.java.swing.KeyStroke"));
  53.          synchronized(var2){}
  54.  
  55.          try {
  56.             if (var1) {
  57.                KeyStroke[] var4 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
  58.                if (var4 == null) {
  59.                   var4 = new KeyStroke[117];
  60.                   SwingUtilities.appContextPut(releasedCharCacheKey, var4);
  61.                }
  62.  
  63.                var4[var0.keyChar - 10] = var0;
  64.             } else {
  65.                KeyStroke[] var7 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
  66.                if (var7 == null) {
  67.                   var7 = new KeyStroke[117];
  68.                   SwingUtilities.appContextPut(pressedCharCacheKey, var7);
  69.                }
  70.  
  71.                var7[var0.keyChar - 10] = var0;
  72.             }
  73.          } catch (Throwable var6) {
  74.             throw var6;
  75.          }
  76.  
  77.       }
  78.    }
  79.  
  80.    static int subIndexForModifier(int var0) {
  81.       if (var0 == 0) {
  82.          return 0;
  83.       } else if (var0 == 1) {
  84.          return 1;
  85.       } else if (var0 == 2) {
  86.          return 2;
  87.       } else {
  88.          return var0 == 8 ? 3 : -1;
  89.       }
  90.    }
  91.  
  92.    static KeyStroke getCachedKeyStroke(int var0, int var1, boolean var2) {
  93.       KeyStroke var4 = null;
  94.       int var3;
  95.       if (var0 >= 10 && var0 < 127 && (var3 = subIndexForModifier(var1)) != -1) {
  96.          Class var5 = class$com$sun$java$swing$KeyStroke != null ? class$com$sun$java$swing$KeyStroke : (class$com$sun$java$swing$KeyStroke = class$("com.sun.java.swing.KeyStroke"));
  97.          synchronized(var5){}
  98.  
  99.          try {
  100.             KeyStroke[][] var7;
  101.             if (var2) {
  102.                var7 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
  103.             } else {
  104.                var7 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
  105.             }
  106.  
  107.             if (var7 != null) {
  108.                var4 = var7[var3][var0 - 10];
  109.             }
  110.          } catch (Throwable var9) {
  111.             throw var9;
  112.          }
  113.       }
  114.  
  115.       return var4;
  116.    }
  117.  
  118.    static void cacheKeyStroke(KeyStroke var0) {
  119.       int var1 = -1;
  120.       if (var0.keyCode >= 10 && var0.keyCode < 127 && (var1 = subIndexForModifier(var0.modifiers)) != -1) {
  121.          Class var2 = class$com$sun$java$swing$KeyStroke != null ? class$com$sun$java$swing$KeyStroke : (class$com$sun$java$swing$KeyStroke = class$("com.sun.java.swing.KeyStroke"));
  122.          synchronized(var2){}
  123.  
  124.          try {
  125.             Object var4 = null;
  126.             KeyStroke[][] var9;
  127.             if (var0.onKeyRelease) {
  128.                KeyStroke[][] var5 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
  129.                if (var5 == null) {
  130.                   var5 = new KeyStroke[4][117];
  131.                   SwingUtilities.appContextPut(pressedCodeCacheKey, var5);
  132.                }
  133.  
  134.                var9 = var5;
  135.             } else {
  136.                KeyStroke[][] var10 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
  137.                if (var10 == null) {
  138.                   var10 = new KeyStroke[4][117];
  139.                   SwingUtilities.appContextPut(releasedCodeCacheKey, var10);
  140.                }
  141.  
  142.                var9 = var10;
  143.             }
  144.  
  145.             var9[var1][var0.keyCode - 10] = var0;
  146.          } catch (Throwable var7) {
  147.             throw var7;
  148.          }
  149.  
  150.       }
  151.    }
  152.  
  153.    public static KeyStroke getKeyStroke(char var0) {
  154.       return getKeyStroke(var0, false);
  155.    }
  156.  
  157.    public static KeyStroke getKeyStroke(char var0, boolean var1) {
  158.       KeyStroke var2 = getCachedKeyCharKeyStroke(var0, var1);
  159.       if (var2 == null) {
  160.          var2 = new KeyStroke();
  161.          var2.keyChar = var0;
  162.          var2.modifiers = 0;
  163.          var2.onKeyRelease = var1;
  164.          cacheKeyCharKeyStroke(var2, var1);
  165.       }
  166.  
  167.       return var2;
  168.    }
  169.  
  170.    public static KeyStroke getKeyStroke(int var0, int var1, boolean var2) {
  171.       KeyStroke var3 = getCachedKeyStroke(var0, var1, var2);
  172.       if (var3 == null) {
  173.          var3 = new KeyStroke();
  174.          var3.keyCode = var0;
  175.          var3.modifiers = var1;
  176.          var3.onKeyRelease = var2;
  177.          cacheKeyStroke(var3);
  178.       }
  179.  
  180.       return var3;
  181.    }
  182.  
  183.    public static KeyStroke getKeyStroke(int var0, int var1) {
  184.       return getKeyStroke(var0, var1, false);
  185.    }
  186.  
  187.    public static KeyStroke getKeyStrokeForEvent(KeyEvent var0) {
  188.       KeyStroke var1 = null;
  189.       switch (((AWTEvent)var0).getID()) {
  190.          case 400:
  191.             var1 = getKeyStroke(var0.getKeyChar());
  192.             break;
  193.          case 401:
  194.             var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), false);
  195.             break;
  196.          case 402:
  197.             var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), true);
  198.       }
  199.  
  200.       return var1;
  201.    }
  202.  
  203.    public static KeyStroke getKeyStroke(String var0) {
  204.       return null;
  205.    }
  206.  
  207.    public char getKeyChar() {
  208.       return this.keyChar;
  209.    }
  210.  
  211.    public int getKeyCode() {
  212.       return this.keyCode;
  213.    }
  214.  
  215.    public int getModifiers() {
  216.       return this.modifiers;
  217.    }
  218.  
  219.    public boolean isOnKeyRelease() {
  220.       return this.onKeyRelease;
  221.    }
  222.  
  223.    private static String getStringRepresentation(char var0, int var1, boolean var2) {
  224.       return "keyChar " + KeyEvent.getKeyModifiersText(var1) + var0 + (var2 ? "-R" : "-P");
  225.    }
  226.  
  227.    private static String getStringRepresentation(int var0, int var1, boolean var2) {
  228.       return "keyCode " + KeyEvent.getKeyModifiersText(var1) + KeyEvent.getKeyText(var0) + (var2 ? "-R" : "-P");
  229.    }
  230.  
  231.    public int hashCode() {
  232.       return (this.keyChar + 1) * 2 * (this.keyCode + 1) * (this.modifiers + 1) + (this.onKeyRelease ? 1 : 2);
  233.    }
  234.  
  235.    public boolean equals(Object var1) {
  236.       if (var1 instanceof KeyStroke) {
  237.          KeyStroke var2 = (KeyStroke)var1;
  238.          if (var2.keyChar == this.keyChar && var2.keyCode == this.keyCode && var2.onKeyRelease == this.onKeyRelease && var2.modifiers == this.modifiers) {
  239.             return true;
  240.          }
  241.       }
  242.  
  243.       return false;
  244.    }
  245.  
  246.    public String toString() {
  247.       return this.keyChar == 0 ? getStringRepresentation(this.keyCode, this.modifiers, this.onKeyRelease) : getStringRepresentation((char)this.keyChar, 0, this.onKeyRelease);
  248.    }
  249.  
  250.    // $FF: synthetic method
  251.    static Class class$(String var0) {
  252.       try {
  253.          return Class.forName(var0);
  254.       } catch (ClassNotFoundException var2) {
  255.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  256.       }
  257.    }
  258. }
  259.