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

  1. package com.sun.java.swing;
  2.  
  3. import com.sun.java.accessibility.Accessible;
  4. import com.sun.java.accessibility.AccessibleContext;
  5. import com.sun.java.accessibility.AccessibleState;
  6. import com.sun.java.swing.event.ChangeListener;
  7. import com.sun.java.swing.event.MenuEvent;
  8. import com.sun.java.swing.event.MenuListener;
  9. import com.sun.java.swing.plaf.MenuUI;
  10. import com.sun.java.swing.plaf.PopupMenuUI;
  11. import java.awt.Component;
  12. import java.awt.Container;
  13. import java.awt.Dimension;
  14. import java.awt.Point;
  15. import java.awt.event.InputEvent;
  16. import java.awt.event.KeyEvent;
  17. import java.awt.event.MouseEvent;
  18. import java.beans.PropertyChangeListener;
  19.  
  20. public class JMenu extends JMenuItem implements Accessible, MenuElement {
  21.    private JPopupMenu popupMenu;
  22.    private ChangeListener menuChangeListener;
  23.    private MenuEvent menuEvent;
  24.    private int delay;
  25.    protected WinListener popupListener;
  26.    // $FF: synthetic field
  27.    static Class class$com$sun$java$swing$event$MenuListener;
  28.  
  29.    public JMenu() {
  30.       this("");
  31.    }
  32.  
  33.    public JMenu(String var1) {
  34.       ((JMenuItem)this).init(var1, (Icon)null);
  35.       this.updateUI();
  36.    }
  37.  
  38.    public JMenu(String var1, boolean var2) {
  39.       this(var1);
  40.    }
  41.  
  42.    public void setUI(MenuUI var1) {
  43.       super.setUI(var1);
  44.    }
  45.  
  46.    public void updateUI() {
  47.       this.setUI((MenuUI)UIManager.getUI(this));
  48.       if (this.popupMenu != null) {
  49.          this.popupMenu.setUI((PopupMenuUI)UIManager.getUI(this.popupMenu));
  50.       }
  51.  
  52.    }
  53.  
  54.    public String getUIClassID() {
  55.       return "MenuUI";
  56.    }
  57.  
  58.    public void setModel(ButtonModel var1) {
  59.       ButtonModel var2 = ((AbstractButton)this).getModel();
  60.       super.setModel(var1);
  61.       if (var2 != null) {
  62.          var2.removeChangeListener(this.menuChangeListener);
  63.          this.menuChangeListener = null;
  64.       }
  65.  
  66.       super.model = var1;
  67.       if (var1 != null) {
  68.          this.menuChangeListener = this.createMenuChangeListener();
  69.          var1.addChangeListener(this.menuChangeListener);
  70.       }
  71.  
  72.    }
  73.  
  74.    public boolean isSelected() {
  75.       return ((AbstractButton)this).getModel().isSelected();
  76.    }
  77.  
  78.    public void setSelected(boolean var1) {
  79.       ButtonModel var2 = ((AbstractButton)this).getModel();
  80.       boolean var3 = var2.isSelected();
  81.       if (super.accessibleContext != null && var3 != var1) {
  82.          if (var1) {
  83.             super.accessibleContext.firePropertyChange("AccessibleState", (Object)null, AccessibleState.SELECTED);
  84.          } else {
  85.             super.accessibleContext.firePropertyChange("AccessibleState", AccessibleState.SELECTED, (Object)null);
  86.          }
  87.       }
  88.  
  89.       if (var1 != var2.isSelected()) {
  90.          ((AbstractButton)this).getModel().setSelected(var1);
  91.       }
  92.  
  93.    }
  94.  
  95.    public boolean isPopupMenuVisible() {
  96.       this.ensurePopupMenuCreated();
  97.       return this.popupMenu.isVisible();
  98.    }
  99.  
  100.    public void setPopupMenuVisible(boolean var1) {
  101.       boolean var2 = this.isPopupMenuVisible();
  102.       if (var1 != var2) {
  103.          this.ensurePopupMenuCreated();
  104.          int var3 = 0;
  105.          int var4 = 0;
  106.          if (var1 && ((Component)this).isShowing()) {
  107.             Container var5 = ((Component)this).getParent();
  108.             Dimension var6 = ((Component)this).getSize();
  109.             if (var5 instanceof JPopupMenu) {
  110.                var3 = var6.width;
  111.                var4 = 0;
  112.             } else {
  113.                var3 = 0;
  114.                var4 = var6.height;
  115.             }
  116.  
  117.             this.popupMenu.show(this, var3, var4);
  118.             return;
  119.          }
  120.  
  121.          this.popupMenu.setVisible(false);
  122.       }
  123.  
  124.    }
  125.  
  126.    public int getDelay() {
  127.       return this.delay;
  128.    }
  129.  
  130.    public void setDelay(int var1) {
  131.       if (var1 < 0) {
  132.          throw new IllegalArgumentException("Delay must be a positive integer");
  133.       } else {
  134.          this.delay = var1;
  135.       }
  136.    }
  137.  
  138.    private void ensurePopupMenuCreated() {
  139.       if (this.popupMenu == null) {
  140.          this.popupMenu = new JPopupMenu();
  141.          this.popupMenu.setInvoker(this);
  142.          this.popupListener = this.createWinListener(this.popupMenu);
  143.          this.popupMenu.addPopupMenuListener(new 1(this, this));
  144.       }
  145.  
  146.    }
  147.  
  148.    public void setMenuLocation(int var1, int var2) {
  149.       this.popupMenu.setLocation(var1, var2);
  150.    }
  151.  
  152.    public JMenuItem add(JMenuItem var1) {
  153.       AccessibleContext var2 = var1.getAccessibleContext();
  154.       var2.setAccessibleParent(this);
  155.       this.ensurePopupMenuCreated();
  156.       return this.popupMenu.add(var1);
  157.    }
  158.  
  159.    public Component add(Component var1) {
  160.       AccessibleContext var2 = ((JComponent)var1).getAccessibleContext();
  161.       var2.setAccessibleParent(this);
  162.       this.ensurePopupMenuCreated();
  163.       this.popupMenu.add(var1);
  164.       return var1;
  165.    }
  166.  
  167.    public void add(String var1) {
  168.       this.add(new JMenuItem(var1));
  169.    }
  170.  
  171.    public JMenuItem add(Action var1) {
  172.       JMenuItem var2 = new JMenuItem((String)var1.getValue("Name"), (Icon)var1.getValue("SmallIcon"));
  173.       ((AbstractButton)var2).setHorizontalTextPosition(4);
  174.       ((AbstractButton)var2).setVerticalTextPosition(0);
  175.       var2.setEnabled(var1.isEnabled());
  176.       ((AbstractButton)var2).addActionListener(var1);
  177.       this.add(var2);
  178.       PropertyChangeListener var3 = this.createActionChangeListener(var2);
  179.       var1.addPropertyChangeListener(var3);
  180.       return var2;
  181.    }
  182.  
  183.    protected PropertyChangeListener createActionChangeListener(JMenuItem var1) {
  184.       return new ActionChangedListener(this, var1);
  185.    }
  186.  
  187.    public void addSeparator() {
  188.       this.ensurePopupMenuCreated();
  189.       this.popupMenu.addSeparator();
  190.    }
  191.  
  192.    public void insert(String var1, int var2) {
  193.       if (var2 < 0) {
  194.          throw new IllegalArgumentException("index less than zero.");
  195.       } else {
  196.          this.ensurePopupMenuCreated();
  197.          this.popupMenu.insert(new JMenuItem(var1), var2);
  198.       }
  199.    }
  200.  
  201.    public JMenuItem insert(JMenuItem var1, int var2) {
  202.       if (var2 < 0) {
  203.          throw new IllegalArgumentException("index less than zero.");
  204.       } else {
  205.          AccessibleContext var3 = var1.getAccessibleContext();
  206.          var3.setAccessibleParent(this);
  207.          this.ensurePopupMenuCreated();
  208.          this.popupMenu.insert(var1, var2);
  209.          return var1;
  210.       }
  211.    }
  212.  
  213.    public JMenuItem insert(Action var1, int var2) {
  214.       if (var2 < 0) {
  215.          throw new IllegalArgumentException("index less than zero.");
  216.       } else {
  217.          this.ensurePopupMenuCreated();
  218.          JMenuItem var3 = new JMenuItem((String)var1.getValue("Name"));
  219.          ((AbstractButton)var3).addActionListener(var1);
  220.          this.popupMenu.insert(var3, var2);
  221.          var1.addPropertyChangeListener(new ActionChangedListener(this, var3));
  222.          return var3;
  223.       }
  224.    }
  225.  
  226.    public void insertSeparator(int var1) {
  227.       if (var1 < 0) {
  228.          throw new IllegalArgumentException("index less than zero.");
  229.       } else {
  230.          this.ensurePopupMenuCreated();
  231.          this.popupMenu.insert(new JSeparator(), var1);
  232.       }
  233.    }
  234.  
  235.    public JMenuItem getItem(int var1) {
  236.       if (var1 < 0) {
  237.          throw new IllegalArgumentException("index less than zero.");
  238.       } else {
  239.          Component var2 = this.getMenuComponent(var1);
  240.          if (var2 instanceof JMenuItem) {
  241.             JMenuItem var3 = (JMenuItem)var2;
  242.             return var3;
  243.          } else {
  244.             return this;
  245.          }
  246.       }
  247.    }
  248.  
  249.    public int getItemCount() {
  250.       return this.getMenuComponentCount();
  251.    }
  252.  
  253.    public boolean isTearOff() {
  254.       throw new Error("boolean isTearOff() {} not yet implemented");
  255.    }
  256.  
  257.    public void remove(JMenuItem var1) {
  258.       this.popupMenu.remove(var1);
  259.    }
  260.  
  261.    public void remove(int var1) {
  262.       if (var1 < 0) {
  263.          throw new IllegalArgumentException("index less than zero.");
  264.       } else {
  265.          this.popupMenu.remove(var1);
  266.       }
  267.    }
  268.  
  269.    public void removeAll() {
  270.       int var1 = this.getMenuComponentCount();
  271.  
  272.       for(int var2 = 0; var2 < var1; ++var2) {
  273.          this.remove(0);
  274.       }
  275.  
  276.    }
  277.  
  278.    public int getMenuComponentCount() {
  279.       int var1 = 0;
  280.       if (this.popupMenu != null) {
  281.          var1 = this.popupMenu.getComponentCount();
  282.       }
  283.  
  284.       return var1;
  285.    }
  286.  
  287.    public Component getMenuComponent(int var1) {
  288.       return this.popupMenu != null ? this.popupMenu.getComponent(var1) : null;
  289.    }
  290.  
  291.    public Component[] getMenuComponents() {
  292.       return this.popupMenu != null ? this.popupMenu.getComponents() : null;
  293.    }
  294.  
  295.    public String paramString() {
  296.       String var1 = ", JMenu";
  297.       return super.paramString() + var1;
  298.    }
  299.  
  300.    public boolean isTopLevelMenu() {
  301.       return ((Component)this).getParent() instanceof JMenuBar;
  302.    }
  303.  
  304.    public boolean isMenuComponent(Component var1) {
  305.       if (var1 == this) {
  306.          return true;
  307.       } else {
  308.          if (var1 instanceof JPopupMenu) {
  309.             JPopupMenu var2 = (JPopupMenu)var1;
  310.             if (var2 == this.getPopupMenu()) {
  311.                return true;
  312.             }
  313.          }
  314.  
  315.          int var7 = this.getMenuComponentCount();
  316.          Component[] var3 = this.getMenuComponents();
  317.  
  318.          for(int var4 = 0; var4 < var7; ++var4) {
  319.             Component var5 = var3[var4];
  320.             if (var5 == var1) {
  321.                return true;
  322.             }
  323.  
  324.             if (var5 instanceof JMenu) {
  325.                JMenu var6 = (JMenu)var5;
  326.                if (var6.isMenuComponent(var1)) {
  327.                   return true;
  328.                }
  329.             }
  330.          }
  331.  
  332.          return false;
  333.       }
  334.    }
  335.  
  336.    private Point translateToPopupMenu(Point var1) {
  337.       return this.translateToPopupMenu(var1.x, var1.y);
  338.    }
  339.  
  340.    private Point translateToPopupMenu(int var1, int var2) {
  341.       int var3;
  342.       int var4;
  343.       if (((Component)this).getParent() instanceof JPopupMenu) {
  344.          var3 = var1 - ((Component)this).getSize().width;
  345.          var4 = var2;
  346.       } else {
  347.          var3 = var1;
  348.          var4 = var2 - ((Component)this).getSize().height;
  349.       }
  350.  
  351.       return new Point(var3, var4);
  352.    }
  353.  
  354.    public JPopupMenu getPopupMenu() {
  355.       this.ensurePopupMenuCreated();
  356.       return this.popupMenu;
  357.    }
  358.  
  359.    public void addMenuListener(MenuListener var1) {
  360.       super.listenerList.add(class$com$sun$java$swing$event$MenuListener != null ? class$com$sun$java$swing$event$MenuListener : (class$com$sun$java$swing$event$MenuListener = JComponent.class$("com.sun.java.swing.event.MenuListener")), var1);
  361.    }
  362.  
  363.    public void removeMenuListener(MenuListener var1) {
  364.       super.listenerList.remove(class$com$sun$java$swing$event$MenuListener != null ? class$com$sun$java$swing$event$MenuListener : (class$com$sun$java$swing$event$MenuListener = JComponent.class$("com.sun.java.swing.event.MenuListener")), var1);
  365.    }
  366.  
  367.    protected void fireMenuSelected() {
  368.       Object[] var1 = super.listenerList.getListenerList();
  369.  
  370.       for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
  371.          if (var1[var2] == (class$com$sun$java$swing$event$MenuListener != null ? class$com$sun$java$swing$event$MenuListener : (class$com$sun$java$swing$event$MenuListener = JComponent.class$("com.sun.java.swing.event.MenuListener")))) {
  372.             if (var1[var2 + 1] == null) {
  373.                throw new Error(((AbstractButton)this).getText() + " has a NULL Listener!! " + var2);
  374.             }
  375.  
  376.             if (this.menuEvent == null) {
  377.                this.menuEvent = new MenuEvent(this);
  378.             }
  379.  
  380.             ((MenuListener)var1[var2 + 1]).menuSelected(this.menuEvent);
  381.          }
  382.       }
  383.  
  384.    }
  385.  
  386.    protected void fireMenuDeselected() {
  387.       Object[] var1 = super.listenerList.getListenerList();
  388.  
  389.       for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
  390.          if (var1[var2] == (class$com$sun$java$swing$event$MenuListener != null ? class$com$sun$java$swing$event$MenuListener : (class$com$sun$java$swing$event$MenuListener = JComponent.class$("com.sun.java.swing.event.MenuListener")))) {
  391.             if (var1[var2 + 1] == null) {
  392.                System.out.println(((AbstractButton)this).getText() + " has a NULL Listener!! " + var2);
  393.             } else {
  394.                if (this.menuEvent == null) {
  395.                   this.menuEvent = new MenuEvent(this);
  396.                }
  397.  
  398.                ((MenuListener)var1[var2 + 1]).menuDeselected(this.menuEvent);
  399.             }
  400.          }
  401.       }
  402.  
  403.    }
  404.  
  405.    private ChangeListener createMenuChangeListener() {
  406.       return new MenuChangeListener(this);
  407.    }
  408.  
  409.    protected WinListener createWinListener(JPopupMenu var1) {
  410.       return new WinListener(this, var1);
  411.    }
  412.  
  413.    public void processMouseEvent(MouseEvent var1, MenuElement[] var2, MenuSelectionManager var3) {
  414.       ((MenuUI)((AbstractButton)this).getUI()).processMouseEvent(this, var1, var2, var3);
  415.    }
  416.  
  417.    public void processKeyEvent(KeyEvent var1, MenuElement[] var2, MenuSelectionManager var3) {
  418.       ((MenuUI)((AbstractButton)this).getUI()).processKeyEvent(this, var1, var2, var3);
  419.    }
  420.  
  421.    public void menuSelectionChanged(boolean var1) {
  422.       this.setSelected(var1);
  423.    }
  424.  
  425.    public MenuElement[] getSubElements() {
  426.       if (this.popupMenu == null) {
  427.          return new MenuElement[0];
  428.       } else {
  429.          MenuElement[] var1 = new MenuElement[]{this.popupMenu};
  430.          return var1;
  431.       }
  432.    }
  433.  
  434.    public Component getComponent() {
  435.       return this;
  436.    }
  437.  
  438.    public void setAccelerator(KeyStroke var1) {
  439.       throw new Error("setAccelerator() is not defined for JMenu.  Use setMnemonic() instead.");
  440.    }
  441.  
  442.    protected void processKeyEvent(KeyEvent var1) {
  443.       MenuSelectionManager.defaultManager().processKeyEvent(var1);
  444.       if (!((InputEvent)var1).isConsumed()) {
  445.          super.processKeyEvent(var1);
  446.       }
  447.    }
  448.  
  449.    public AccessibleContext getAccessibleContext() {
  450.       if (super.accessibleContext == null) {
  451.          super.accessibleContext = new AccessibleJMenu(this);
  452.       }
  453.  
  454.       return super.accessibleContext;
  455.    }
  456. }
  457.