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

  1. package javax.swing;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Component;
  5. import java.awt.Point;
  6. import java.awt.Rectangle;
  7. import java.awt.event.InputEvent;
  8. import java.awt.event.KeyEvent;
  9. import java.awt.event.MouseEvent;
  10. import java.util.EventObject;
  11. import java.util.Vector;
  12. import javax.swing.event.ChangeEvent;
  13. import javax.swing.event.ChangeListener;
  14. import javax.swing.event.EventListenerList;
  15.  
  16. public class MenuSelectionManager {
  17.    private static final MenuSelectionManager instance = new MenuSelectionManager();
  18.    private Vector selection = new Vector();
  19.    private static final boolean TRACE = false;
  20.    private static final boolean VERBOSE = false;
  21.    private static final boolean DEBUG = false;
  22.    protected transient ChangeEvent changeEvent = null;
  23.    protected EventListenerList listenerList = new EventListenerList();
  24.    // $FF: synthetic field
  25.    static Class class$javax$swing$event$ChangeListener;
  26.  
  27.    public static MenuSelectionManager defaultManager() {
  28.       return instance;
  29.    }
  30.  
  31.    public void setSelectedPath(MenuElement[] var1) {
  32.       int var4 = this.selection.size();
  33.       int var5 = 0;
  34.       if (var1 == null) {
  35.          var1 = new MenuElement[0];
  36.       }
  37.  
  38.       int var2 = 0;
  39.  
  40.       for(int var3 = var1.length; var2 < var3 && var2 < var4 && (MenuElement)this.selection.elementAt(var2) == var1[var2]; ++var2) {
  41.          ++var5;
  42.       }
  43.  
  44.       for(int var6 = var4 - 1; var6 >= var5; --var6) {
  45.          ((MenuElement)this.selection.elementAt(var6)).menuSelectionChanged(false);
  46.          this.selection.removeElementAt(var6);
  47.       }
  48.  
  49.       var2 = var5;
  50.  
  51.       for(int var8 = var1.length; var2 < var8; ++var2) {
  52.          if (var1[var2] != null) {
  53.             var1[var2].menuSelectionChanged(true);
  54.             this.selection.addElement(var1[var2]);
  55.          }
  56.       }
  57.  
  58.       this.fireStateChanged();
  59.    }
  60.  
  61.    public MenuElement[] getSelectedPath() {
  62.       MenuElement[] var1 = new MenuElement[this.selection.size()];
  63.       int var2 = 0;
  64.  
  65.       for(int var3 = this.selection.size(); var2 < var3; ++var2) {
  66.          var1[var2] = (MenuElement)this.selection.elementAt(var2);
  67.       }
  68.  
  69.       return var1;
  70.    }
  71.  
  72.    public void clearSelectedPath() {
  73.       this.setSelectedPath((MenuElement[])null);
  74.    }
  75.  
  76.    public void addChangeListener(ChangeListener var1) {
  77.       this.listenerList.add(class$javax$swing$event$ChangeListener == null ? (class$javax$swing$event$ChangeListener = class$("javax.swing.event.ChangeListener")) : class$javax$swing$event$ChangeListener, var1);
  78.    }
  79.  
  80.    public void removeChangeListener(ChangeListener var1) {
  81.       this.listenerList.remove(class$javax$swing$event$ChangeListener == null ? (class$javax$swing$event$ChangeListener = class$("javax.swing.event.ChangeListener")) : class$javax$swing$event$ChangeListener, var1);
  82.    }
  83.  
  84.    protected void fireStateChanged() {
  85.       Object[] var1 = this.listenerList.getListenerList();
  86.  
  87.       for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
  88.          if (var1[var2] == (class$javax$swing$event$ChangeListener == null ? (class$javax$swing$event$ChangeListener = class$("javax.swing.event.ChangeListener")) : class$javax$swing$event$ChangeListener)) {
  89.             if (this.changeEvent == null) {
  90.                this.changeEvent = new ChangeEvent(this);
  91.             }
  92.  
  93.             ((ChangeListener)var1[var2 + 1]).stateChanged(this.changeEvent);
  94.          }
  95.       }
  96.  
  97.    }
  98.  
  99.    public void processMouseEvent(MouseEvent var1) {
  100.       Point var4 = var1.getPoint();
  101.       Component var18 = (Component)((EventObject)var1).getSource();
  102.       if (var18.isShowing()) {
  103.          int var19 = ((AWTEvent)var1).getID();
  104.          int var20 = ((InputEvent)var1).getModifiers();
  105.          if (var19 != 504 && var19 != 505 || (var20 & 28) == 0) {
  106.             SwingUtilities.convertPointToScreen(var4, var18);
  107.             int var2 = var4.x;
  108.             int var3 = var4.y;
  109.             Vector var16 = (Vector)this.selection.clone();
  110.             int var17 = var16.size();
  111.             boolean var21 = false;
  112.  
  113.             for(int var5 = var17 - 1; var5 >= 0 && !var21; --var5) {
  114.                MenuElement var13 = (MenuElement)var16.elementAt(var5);
  115.                MenuElement[] var14 = var13.getSubElements();
  116.                MenuElement[] var15 = null;
  117.                int var7 = 0;
  118.  
  119.                for(int var8 = var14.length; var7 < var8 && !var21; ++var7) {
  120.                   if (var14[var7] != null) {
  121.                      Component var9 = var14[var7].getComponent();
  122.                      if (var9.isShowing()) {
  123.                         int var11;
  124.                         int var12;
  125.                         if (var9 instanceof JComponent) {
  126.                            var11 = ((JComponent)var9).getWidth();
  127.                            var12 = ((JComponent)var9).getHeight();
  128.                         } else {
  129.                            Rectangle var10 = var9.getBounds();
  130.                            var11 = var10.width;
  131.                            var12 = var10.height;
  132.                         }
  133.  
  134.                         var4.x = var2;
  135.                         var4.y = var3;
  136.                         SwingUtilities.convertPointFromScreen(var4, var9);
  137.                         if (var4.x >= 0 && var4.x < var11 && var4.y >= 0 && var4.y < var12) {
  138.                            if (var15 == null) {
  139.                               var15 = new MenuElement[var5 + 2];
  140.  
  141.                               for(int var22 = 0; var22 <= var5; ++var22) {
  142.                                  var15[var22] = (MenuElement)var16.elementAt(var22);
  143.                               }
  144.                            }
  145.  
  146.                            var15[var5 + 1] = var14[var7];
  147.                            MenuElement[] var23 = this.getSelectedPath();
  148.                            if (var23[var23.length - 1] != var15[var5 + 1] && var23[var23.length - 2] != var15[var5 + 1]) {
  149.                               Component var24 = var23[var23.length - 1].getComponent();
  150.                               MouseEvent var25 = new MouseEvent(var24, 505, ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var4.x, var4.y, var1.getClickCount(), var1.isPopupTrigger());
  151.                               var23[var23.length - 1].processMouseEvent(var25, var15, this);
  152.                               MouseEvent var26 = new MouseEvent(var9, 504, ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var4.x, var4.y, var1.getClickCount(), var1.isPopupTrigger());
  153.                               var14[var7].processMouseEvent(var26, var15, this);
  154.                            }
  155.  
  156.                            MouseEvent var27 = new MouseEvent(var9, ((AWTEvent)var1).getID(), ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var4.x, var4.y, var1.getClickCount(), var1.isPopupTrigger());
  157.                            var14[var7].processMouseEvent(var27, var15, this);
  158.                            var21 = true;
  159.                            ((InputEvent)var1).consume();
  160.                         }
  161.                      }
  162.                   }
  163.                }
  164.             }
  165.  
  166.          }
  167.       }
  168.    }
  169.  
  170.    private void printMenuElementArray(MenuElement[] var1) {
  171.       this.printMenuElementArray(var1, false);
  172.    }
  173.  
  174.    private void printMenuElementArray(MenuElement[] var1, boolean var2) {
  175.       System.out.println("Path is(");
  176.       int var3 = 0;
  177.  
  178.       for(int var4 = var1.length; var3 < var4; ++var3) {
  179.          for(int var5 = 0; var5 <= var3; ++var5) {
  180.             System.out.print("  ");
  181.          }
  182.  
  183.          MenuElement var6 = var1[var3];
  184.          if (var6 instanceof JMenuItem) {
  185.             System.out.println(((JMenuItem)var6).getText() + ", ");
  186.          } else if (var6 instanceof JMenuBar) {
  187.             System.out.println("JMenuBar, ");
  188.          } else if (var6 instanceof JPopupMenu) {
  189.             System.out.println("JPopupMenu, ");
  190.          } else if (var6 == null) {
  191.             System.out.println("NULL , ");
  192.          } else {
  193.             System.out.println("" + var6 + ", ");
  194.          }
  195.       }
  196.  
  197.       System.out.println(")");
  198.       if (var2) {
  199.          Thread.dumpStack();
  200.       }
  201.  
  202.    }
  203.  
  204.    public Component componentForPoint(Component var1, Point var2) {
  205.       Point var5 = var2;
  206.       SwingUtilities.convertPointToScreen(var2, var1);
  207.       int var3 = var2.x;
  208.       int var4 = var2.y;
  209.       Vector var16 = (Vector)this.selection.clone();
  210.       int var17 = var16.size();
  211.  
  212.       for(int var6 = var17 - 1; var6 >= 0; --var6) {
  213.          MenuElement var14 = (MenuElement)var16.elementAt(var6);
  214.          MenuElement[] var15 = var14.getSubElements();
  215.          int var8 = 0;
  216.  
  217.          for(int var9 = var15.length; var8 < var9; ++var8) {
  218.             if (var15[var8] != null) {
  219.                Component var10 = var15[var8].getComponent();
  220.                if (var10.isShowing()) {
  221.                   int var12;
  222.                   int var13;
  223.                   if (var10 instanceof JComponent) {
  224.                      var12 = ((JComponent)var10).getWidth();
  225.                      var13 = ((JComponent)var10).getHeight();
  226.                   } else {
  227.                      Rectangle var11 = var10.getBounds();
  228.                      var12 = var11.width;
  229.                      var13 = var11.height;
  230.                   }
  231.  
  232.                   var5.x = var3;
  233.                   var5.y = var4;
  234.                   SwingUtilities.convertPointFromScreen(var5, var10);
  235.                   if (var5.x >= 0 && var5.x < var12 && var5.y >= 0 && var5.y < var13) {
  236.                      return var10;
  237.                   }
  238.                }
  239.             }
  240.          }
  241.       }
  242.  
  243.       return null;
  244.    }
  245.  
  246.    public void processKeyEvent(KeyEvent var1) {
  247.       Vector var2 = (Vector)this.selection.clone();
  248.       int var3 = var2.size();
  249.  
  250.       for(int var4 = var3 - 1; var4 >= 0; --var4) {
  251.          MenuElement var7 = (MenuElement)var2.elementAt(var4);
  252.          MenuElement[] var8 = var7.getSubElements();
  253.          MenuElement[] var9 = null;
  254.          int var5 = 0;
  255.  
  256.          for(int var6 = var8.length; var5 < var6; ++var5) {
  257.             if (var8[var5] != null) {
  258.                Component var10 = var8[var5].getComponent();
  259.                if (var10.isShowing()) {
  260.                   if (var9 == null) {
  261.                      var9 = new MenuElement[var4 + 2];
  262.  
  263.                      for(int var11 = 0; var11 <= var4; ++var11) {
  264.                         var9[var11] = (MenuElement)var2.elementAt(var11);
  265.                      }
  266.                   }
  267.  
  268.                   var9[var4 + 1] = var8[var5];
  269.                   var8[var5].processKeyEvent(var1, var9, this);
  270.                   if (((InputEvent)var1).isConsumed()) {
  271.                      return;
  272.                   }
  273.                }
  274.             }
  275.          }
  276.       }
  277.  
  278.    }
  279.  
  280.    public boolean isComponentPartOfCurrentMenu(Component var1) {
  281.       if (this.selection.size() > 0) {
  282.          MenuElement var2 = (MenuElement)this.selection.elementAt(0);
  283.          return this.isComponentPartOfCurrentMenu(var2, var1);
  284.       } else {
  285.          return false;
  286.       }
  287.    }
  288.  
  289.    private boolean isComponentPartOfCurrentMenu(MenuElement var1, Component var2) {
  290.       if (var1 == null) {
  291.          return false;
  292.       } else if (var1.getComponent() == var2) {
  293.          return true;
  294.       } else {
  295.          MenuElement[] var3 = var1.getSubElements();
  296.          int var4 = 0;
  297.  
  298.          for(int var5 = var3.length; var4 < var5; ++var4) {
  299.             if (this.isComponentPartOfCurrentMenu(var3[var4], var2)) {
  300.                return true;
  301.             }
  302.          }
  303.  
  304.          return false;
  305.       }
  306.    }
  307.  
  308.    // $FF: synthetic method
  309.    static Class class$(String var0) {
  310.       try {
  311.          return Class.forName(var0);
  312.       } catch (ClassNotFoundException var2) {
  313.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  314.       }
  315.    }
  316. }
  317.