home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / plaf / basic / BasicPopupMenuUI$MouseGrabber.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.0 KB  |  235 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Window;
  6. import java.awt.event.ComponentEvent;
  7. import java.awt.event.ComponentListener;
  8. import java.awt.event.MouseEvent;
  9. import java.awt.event.MouseListener;
  10. import java.awt.event.MouseMotionListener;
  11. import java.awt.event.WindowEvent;
  12. import java.awt.event.WindowListener;
  13. import java.util.EventObject;
  14. import java.util.Vector;
  15. import javax.swing.JMenuBar;
  16. import javax.swing.JPopupMenu;
  17. import javax.swing.MenuElement;
  18. import javax.swing.MenuSelectionManager;
  19. import javax.swing.event.ChangeEvent;
  20. import javax.swing.event.ChangeListener;
  21.  
  22. class BasicPopupMenuUI$MouseGrabber implements MouseListener, MouseMotionListener, WindowListener, ComponentListener, ChangeListener {
  23.    Vector grabbed = new Vector();
  24.    MenuElement lastGrabbed = null;
  25.    boolean lastGrabbedMenuBarChild = false;
  26.    MenuElement[] lastPathSelected = new MenuElement[0];
  27.  
  28.    public BasicPopupMenuUI$MouseGrabber() {
  29.       MenuSelectionManager var1 = MenuSelectionManager.defaultManager();
  30.       var1.addChangeListener(this);
  31.    }
  32.  
  33.    private void requestAddGrab(Component var1) {
  34.       Window var2 = BasicPopupMenuUI.access$900(var1);
  35.       MenuSelectionManager var3 = MenuSelectionManager.defaultManager();
  36.       MenuElement[] var4 = var3.getSelectedPath();
  37.       Component var5 = null;
  38.  
  39.       for(int var6 = 0; var5 == null && var6 < var4.length; ++var6) {
  40.          if (var4[var6] instanceof JPopupMenu) {
  41.             var5 = var4[var6].getComponent();
  42.          }
  43.       }
  44.  
  45.       this.grabContainer(var2, var5);
  46.    }
  47.  
  48.    private void requestRemoveGrab() {
  49.       this.ungrabContainers();
  50.    }
  51.  
  52.    void cancelPopupMenu() {
  53.       MenuSelectionManager var1 = MenuSelectionManager.defaultManager();
  54.       MenuElement[] var2 = var1.getSelectedPath();
  55.       if (this.lastGrabbed == this.getFirstPopup()) {
  56.          MenuSelectionManager.defaultManager().clearSelectedPath();
  57.          this.ungrabContainers();
  58.       } else {
  59.          this.lastGrabbed = this.getFirstPopup();
  60.          if (var2[0] instanceof JMenuBar) {
  61.             this.lastGrabbedMenuBarChild = true;
  62.          } else {
  63.             this.lastGrabbedMenuBarChild = false;
  64.          }
  65.       }
  66.  
  67.    }
  68.  
  69.    public void stateChanged(ChangeEvent var1) {
  70.       MenuSelectionManager var2 = MenuSelectionManager.defaultManager();
  71.       MenuElement[] var3 = var2.getSelectedPath();
  72.       if (this.lastPathSelected.length == 0 && var3.length != 0) {
  73.          Component var4 = var3[0].getComponent();
  74.          if (var4 instanceof JPopupMenu) {
  75.             var4 = ((JPopupMenu)var4).getInvoker();
  76.          }
  77.  
  78.          this.requestAddGrab(var4);
  79.       }
  80.  
  81.       if (this.lastPathSelected.length != 0 && var3.length == 0) {
  82.          this.requestRemoveGrab();
  83.       }
  84.  
  85.       if (var3 != null && var3.length > 2 && var3[0] instanceof JMenuBar && this.lastGrabbedMenuBarChild && this.lastGrabbed != this.getFirstPopup()) {
  86.          this.lastGrabbed = this.getFirstPopup();
  87.          if (var3[0] instanceof JMenuBar) {
  88.             this.lastGrabbedMenuBarChild = true;
  89.          } else {
  90.             this.lastGrabbedMenuBarChild = false;
  91.          }
  92.       }
  93.  
  94.       this.lastPathSelected = var3;
  95.    }
  96.  
  97.    private MenuElement getFirstPopup() {
  98.       MenuSelectionManager var1 = MenuSelectionManager.defaultManager();
  99.       MenuElement[] var2 = var1.getSelectedPath();
  100.       MenuElement var3 = null;
  101.  
  102.       for(int var4 = 0; var3 == null && var4 < var2.length; ++var4) {
  103.          if (var2[var4] instanceof JPopupMenu) {
  104.             var3 = var2[var4];
  105.          }
  106.       }
  107.  
  108.       return var3;
  109.    }
  110.  
  111.    void grabContainer(Container var1, Component var2) {
  112.       if (var1 != var2) {
  113.          MenuSelectionManager var3 = MenuSelectionManager.defaultManager();
  114.          MenuElement[] var4 = var3.getSelectedPath();
  115.          this.lastGrabbed = this.getFirstPopup();
  116.          if (var4[0] instanceof JMenuBar) {
  117.             this.lastGrabbedMenuBarChild = true;
  118.          } else {
  119.             this.lastGrabbedMenuBarChild = false;
  120.          }
  121.  
  122.          if (var1 instanceof Window) {
  123.             ((Window)var1).addWindowListener(this);
  124.             ((Window)var1).addComponentListener(this);
  125.             this.grabbed.addElement(var1);
  126.          }
  127.  
  128.          Object var5 = ((Component)var1).getTreeLock();
  129.          synchronized(var5) {
  130.             int var6 = var1.getComponentCount();
  131.             Component[] var7 = var1.getComponents();
  132.  
  133.             for(int var8 = 0; var8 < var6; ++var8) {
  134.                Component var9 = var7[var8];
  135.                if (var9.isVisible()) {
  136.                   var9.addMouseListener(this);
  137.                   var9.addMouseMotionListener(this);
  138.                   this.grabbed.addElement(var9);
  139.                   if (var9 instanceof Container) {
  140.                      Container var10 = (Container)var9;
  141.                      this.grabContainer(var10, var2);
  142.                   }
  143.                }
  144.             }
  145.  
  146.          }
  147.       }
  148.    }
  149.  
  150.    void ungrabContainers() {
  151.       int var1 = 0;
  152.  
  153.       for(int var2 = this.grabbed.size(); var1 < var2; ++var1) {
  154.          Component var3 = (Component)this.grabbed.elementAt(var1);
  155.          if (var3 instanceof Window) {
  156.             ((Window)var3).removeWindowListener(this);
  157.             ((Window)var3).removeComponentListener(this);
  158.          } else {
  159.             var3.removeMouseListener(this);
  160.             var3.removeMouseMotionListener(this);
  161.          }
  162.       }
  163.  
  164.       this.grabbed = new Vector();
  165.       this.lastGrabbed = null;
  166.       this.lastGrabbedMenuBarChild = false;
  167.    }
  168.  
  169.    public void mousePressed(MouseEvent var1) {
  170.       Component var2 = (Component)((EventObject)var1).getSource();
  171.       MenuSelectionManager var3 = MenuSelectionManager.defaultManager();
  172.       this.cancelPopupMenu();
  173.    }
  174.  
  175.    public void mouseReleased(MouseEvent var1) {
  176.       MenuSelectionManager.defaultManager().processMouseEvent(var1);
  177.    }
  178.  
  179.    public void mouseEntered(MouseEvent var1) {
  180.    }
  181.  
  182.    public void mouseExited(MouseEvent var1) {
  183.    }
  184.  
  185.    public void mouseMoved(MouseEvent var1) {
  186.    }
  187.  
  188.    public void mouseDragged(MouseEvent var1) {
  189.       MenuSelectionManager.defaultManager().processMouseEvent(var1);
  190.    }
  191.  
  192.    public void mouseClicked(MouseEvent var1) {
  193.    }
  194.  
  195.    public void componentResized(ComponentEvent var1) {
  196.       this.cancelPopupMenu();
  197.    }
  198.  
  199.    public void componentMoved(ComponentEvent var1) {
  200.       this.cancelPopupMenu();
  201.    }
  202.  
  203.    public void componentShown(ComponentEvent var1) {
  204.       this.cancelPopupMenu();
  205.    }
  206.  
  207.    public void componentHidden(ComponentEvent var1) {
  208.       this.cancelPopupMenu();
  209.    }
  210.  
  211.    public void windowOpened(WindowEvent var1) {
  212.    }
  213.  
  214.    public void windowClosing(WindowEvent var1) {
  215.       this.cancelPopupMenu();
  216.    }
  217.  
  218.    public void windowClosed(WindowEvent var1) {
  219.       this.cancelPopupMenu();
  220.    }
  221.  
  222.    public void windowIconified(WindowEvent var1) {
  223.       this.cancelPopupMenu();
  224.    }
  225.  
  226.    public void windowDeiconified(WindowEvent var1) {
  227.    }
  228.  
  229.    public void windowActivated(WindowEvent var1) {
  230.    }
  231.  
  232.    public void windowDeactivated(WindowEvent var1) {
  233.    }
  234. }
  235.