home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / KeyboardManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.2 KB  |  226 lines

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