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 / KeyboardManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.5 KB  |  228 lines

  1. package javax.swing;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.AWTEvent;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Window;
  8. import java.awt.event.InputEvent;
  9. import java.awt.event.KeyEvent;
  10. import java.util.Enumeration;
  11. import java.util.Hashtable;
  12. import java.util.Vector;
  13.  
  14. class KeyboardManager {
  15.    static KeyboardManager currentManager = new KeyboardManager();
  16.    Hashtable containerMap = new Hashtable();
  17.    Hashtable componentKeyStrokeMap = new Hashtable();
  18.    // $FF: synthetic field
  19.    static Class class$javax$swing$JMenuBar;
  20.  
  21.    public static KeyboardManager getCurrentManager() {
  22.       return currentManager;
  23.    }
  24.  
  25.    public static void setCurrentManager(KeyboardManager var0) {
  26.       currentManager = var0;
  27.    }
  28.  
  29.    public void registerKeyStroke(KeyStroke var1, JComponent var2) {
  30.       Container var3 = getTopAncestor(var2);
  31.       if (var3 != null) {
  32.          Hashtable var4 = (Hashtable)this.containerMap.get(var3);
  33.          if (var4 == null) {
  34.             var4 = this.registerNewTopContainer(var3);
  35.          }
  36.  
  37.          Object var5 = var4.get(var1);
  38.          if (var5 == null) {
  39.             var4.put(var1, var2);
  40.          } else if (var5 instanceof Vector) {
  41.             Vector var6 = (Vector)var5;
  42.             if (!var6.contains(var2)) {
  43.                var6.addElement(var2);
  44.             }
  45.          } else if (var5 instanceof JComponent) {
  46.             if (var5 != var2) {
  47.                Vector var7 = new Vector();
  48.                var7.addElement(var5);
  49.                var7.addElement(var2);
  50.                var4.put(var1, var7);
  51.             }
  52.          } else {
  53.             System.out.println("Unexpected condition in registerKeyStroke");
  54.             Thread.dumpStack();
  55.          }
  56.  
  57.          this.componentKeyStrokeMap.put(new ComponentKeyStrokePair(this, var2, var1), var3);
  58.       }
  59.    }
  60.  
  61.    private static Container getTopAncestor(JComponent var0) {
  62.       for(Container var1 = ((Component)var0).getParent(); var1 != null; var1 = ((Component)var1).getParent()) {
  63.          if (var1 instanceof Window || var1 instanceof Applet || var1 instanceof JInternalFrame) {
  64.             return var1;
  65.          }
  66.       }
  67.  
  68.       return null;
  69.    }
  70.  
  71.    public void unregisterKeyStroke(KeyStroke var1, JComponent var2) {
  72.       ComponentKeyStrokePair var3 = new ComponentKeyStrokePair(this, var2, var1);
  73.       Object var4 = this.componentKeyStrokeMap.get(var3);
  74.       if (var4 != null) {
  75.          Hashtable var5 = (Hashtable)this.containerMap.get(var4);
  76.          if (var5 == null) {
  77.             Thread.dumpStack();
  78.          } else {
  79.             Object var6 = var5.get(var1);
  80.             if (var6 == null) {
  81.                Thread.dumpStack();
  82.             } else {
  83.                if (var6 instanceof JComponent && var6 == var2) {
  84.                   var5.remove(var1);
  85.                } else if (var6 instanceof Vector) {
  86.                   Vector var7 = (Vector)var6;
  87.                   var7.removeElement(var2);
  88.                   if (var7.isEmpty()) {
  89.                      var5.remove(var1);
  90.                   }
  91.                }
  92.  
  93.                if (var5.isEmpty()) {
  94.                   this.containerMap.remove(var4);
  95.                }
  96.  
  97.                this.componentKeyStrokeMap.remove(var3);
  98.             }
  99.          }
  100.       }
  101.    }
  102.  
  103.    public boolean fireKeyboardAction(KeyEvent var1, boolean var2, Container var3) {
  104.       if (((InputEvent)var1).isConsumed()) {
  105.          System.out.println("Aquired pre-used event!");
  106.          Thread.dumpStack();
  107.       }
  108.  
  109.       KeyStroke var4;
  110.       if (((AWTEvent)var1).getID() == 400) {
  111.          var4 = KeyStroke.getKeyStroke(var1.getKeyChar());
  112.       } else {
  113.          var4 = KeyStroke.getKeyStroke(var1.getKeyCode(), ((InputEvent)var1).getModifiers(), !var2);
  114.       }
  115.  
  116.       Hashtable var5 = (Hashtable)this.containerMap.get(var3);
  117.       if (var5 != null) {
  118.          Object var6 = var5.get(var4);
  119.          if (var6 != null) {
  120.             if (var6 instanceof JComponent) {
  121.                JComponent var7 = (JComponent)var6;
  122.                if (((Component)var7).isShowing() && ((Component)var7).isEnabled()) {
  123.                   this.fireBinding(var7, var4, var1, var2);
  124.                }
  125.             } else if (var6 instanceof Vector) {
  126.                Vector var11 = (Vector)var6;
  127.                Enumeration var8 = var11.elements();
  128.  
  129.                while(var8.hasMoreElements()) {
  130.                   JComponent var9 = (JComponent)var8.nextElement();
  131.                   if (((Component)var9).isShowing() && ((Component)var9).isEnabled()) {
  132.                      this.fireBinding(var9, var4, var1, var2);
  133.                      if (((InputEvent)var1).isConsumed()) {
  134.                         return true;
  135.                      }
  136.                   }
  137.                }
  138.             } else {
  139.                System.out.println("Unexpected condition in fireKeyboardAction " + var6);
  140.                Thread.dumpStack();
  141.             }
  142.          }
  143.       }
  144.  
  145.       if (((InputEvent)var1).isConsumed()) {
  146.          return true;
  147.       } else {
  148.          if (var5 != null) {
  149.             Vector var10 = (Vector)var5.get(class$javax$swing$JMenuBar == null ? (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")) : class$javax$swing$JMenuBar);
  150.             if (var10 != null) {
  151.                Enumeration var12 = var10.elements();
  152.  
  153.                while(var12.hasMoreElements()) {
  154.                   JMenuBar var13 = (JMenuBar)var12.nextElement();
  155.                   if (((Component)var13).isShowing() && ((Component)var13).isEnabled()) {
  156.                      this.fireBinding(var13, var4, var1, var2);
  157.                      if (((InputEvent)var1).isConsumed()) {
  158.                         return true;
  159.                      }
  160.                   }
  161.                }
  162.             }
  163.          }
  164.  
  165.          return ((InputEvent)var1).isConsumed();
  166.       }
  167.    }
  168.  
  169.    void fireBinding(JComponent var1, KeyStroke var2, KeyEvent var3, boolean var4) {
  170.       if (var1.processKeyBinding(var2, var3, 2, var4)) {
  171.          ((InputEvent)var3).consume();
  172.       }
  173.  
  174.    }
  175.  
  176.    public void registerMenuBar(JMenuBar var1) {
  177.       Container var2 = getTopAncestor(var1);
  178.       Hashtable var3 = (Hashtable)this.containerMap.get(var2);
  179.       if (var3 == null) {
  180.          var3 = this.registerNewTopContainer(var2);
  181.       }
  182.  
  183.       Vector var4 = (Vector)var3.get(class$javax$swing$JMenuBar == null ? (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")) : class$javax$swing$JMenuBar);
  184.       if (var4 == null) {
  185.          var4 = new Vector();
  186.          var3.put(class$javax$swing$JMenuBar == null ? (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")) : class$javax$swing$JMenuBar, var4);
  187.       }
  188.  
  189.       if (!var4.contains(var1)) {
  190.          var4.addElement(var1);
  191.       }
  192.  
  193.    }
  194.  
  195.    public void unregisterMenuBar(JMenuBar var1) {
  196.       Container var2 = getTopAncestor(var1);
  197.       Hashtable var3 = (Hashtable)this.containerMap.get(var2);
  198.       if (var3 != null) {
  199.          Vector var4 = (Vector)var3.get(class$javax$swing$JMenuBar == null ? (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")) : class$javax$swing$JMenuBar);
  200.          if (var4 != null) {
  201.             var4.removeElement(var1);
  202.             if (var4.isEmpty()) {
  203.                var3.remove(class$javax$swing$JMenuBar == null ? (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")) : class$javax$swing$JMenuBar);
  204.                if (var3.isEmpty()) {
  205.                   this.containerMap.remove(var2);
  206.                }
  207.             }
  208.          }
  209.       }
  210.  
  211.    }
  212.  
  213.    protected Hashtable registerNewTopContainer(Container var1) {
  214.       Hashtable var2 = new Hashtable();
  215.       this.containerMap.put(var1, var2);
  216.       return var2;
  217.    }
  218.  
  219.    // $FF: synthetic method
  220.    static Class class$(String var0) {
  221.       try {
  222.          return Class.forName(var0);
  223.       } catch (ClassNotFoundException var2) {
  224.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  225.       }
  226.    }
  227. }
  228.