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

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.AbstractButton;
  4. import com.sun.java.swing.Icon;
  5. import com.sun.java.swing.JComponent;
  6. import com.sun.java.swing.JMenuItem;
  7. import com.sun.java.swing.LookAndFeel;
  8. import com.sun.java.swing.MenuElement;
  9. import com.sun.java.swing.MenuSelectionManager;
  10. import com.sun.java.swing.UIManager;
  11. import com.sun.java.swing.plaf.ComponentUI;
  12. import com.sun.java.swing.plaf.MenuItemUI;
  13. import com.sun.java.swing.plaf.UIResource;
  14. import java.awt.AWTEvent;
  15. import java.awt.Color;
  16. import java.awt.Component;
  17. import java.awt.Dimension;
  18. import java.awt.Graphics;
  19. import java.awt.Insets;
  20. import java.awt.Point;
  21. import java.awt.event.InputEvent;
  22. import java.awt.event.KeyEvent;
  23. import java.awt.event.MouseEvent;
  24. import java.awt.event.MouseListener;
  25. import java.awt.event.MouseMotionListener;
  26. import java.io.Serializable;
  27.  
  28. public class BasicMenuItemUI extends MenuItemUI implements Serializable {
  29.    protected static Color pressedBackground;
  30.    protected static Color pressedForeground;
  31.    protected static final int defaultTextIconGap = 4;
  32.    protected MouseListener mouseListener;
  33.    protected MouseMotionListener dragListener;
  34.    protected Icon menuArrow;
  35.    protected Icon checkIcon;
  36.    protected boolean oldBorderPainted;
  37.  
  38.    public static ComponentUI createUI(JComponent var0) {
  39.       return new BasicMenuItemUI();
  40.    }
  41.  
  42.    public void installUI(JComponent var1) {
  43.       JMenuItem var2 = (JMenuItem)var1;
  44.       this.initListeners(var1);
  45.       this.addListeners(var1);
  46.       var1.setOpaque(true);
  47.       LookAndFeel.installBorder(var1, "MenuItem.border");
  48.       this.oldBorderPainted = ((AbstractButton)var2).isBorderPainted();
  49.       ((AbstractButton)var2).setBorderPainted((Boolean)UIManager.get("MenuItem.borderPainted"));
  50.       LookAndFeel.installColorsAndFont(var1, "MenuItem.background", "MenuItem.foreground", "MenuItem.font");
  51.       if (pressedBackground == null || pressedBackground instanceof UIResource) {
  52.          pressedBackground = UIManager.getColor("MenuItem.pressedBackground");
  53.       }
  54.  
  55.       if (pressedForeground == null || pressedForeground instanceof UIResource) {
  56.          pressedForeground = UIManager.getColor("MenuItem.pressedForeground");
  57.       }
  58.  
  59.       if (this.menuArrow == null || this.menuArrow instanceof UIResource) {
  60.          this.menuArrow = UIManager.getIcon("MenuItem.arrowIcon");
  61.       }
  62.  
  63.       if (this.checkIcon == null || this.checkIcon instanceof UIResource) {
  64.          this.checkIcon = UIManager.getIcon("MenuItem.checkIcon");
  65.       }
  66.  
  67.    }
  68.  
  69.    public void uninstallUI(JComponent var1) {
  70.       this.removeListeners(var1);
  71.       LookAndFeel.uninstallBorder(var1);
  72.       ((JMenuItem)var1).setBorderPainted(this.oldBorderPainted);
  73.       if (this.menuArrow instanceof UIResource) {
  74.          this.menuArrow = null;
  75.       }
  76.  
  77.       if (this.checkIcon instanceof UIResource) {
  78.          this.checkIcon = null;
  79.       }
  80.  
  81.    }
  82.  
  83.    protected void initListeners(JComponent var1) {
  84.       this.mouseListener = this.createMouseListener(var1);
  85.       this.dragListener = this.createMouseMotionListener(var1);
  86.    }
  87.  
  88.    protected void addListeners(JComponent var1) {
  89.       ((Component)var1).addMouseListener(this.mouseListener);
  90.       ((Component)var1).addMouseMotionListener(this.dragListener);
  91.    }
  92.  
  93.    protected void removeListeners(JComponent var1) {
  94.       ((Component)var1).removeMouseListener(this.mouseListener);
  95.       ((Component)var1).removeMouseMotionListener(this.dragListener);
  96.    }
  97.  
  98.    protected MouseListener createMouseListener(JComponent var1) {
  99.       return new BasicMenuMouseListener();
  100.    }
  101.  
  102.    protected MouseMotionListener createMouseMotionListener(JComponent var1) {
  103.       return new BasicMenuMouseMotionListener();
  104.    }
  105.  
  106.    public Dimension getMinimumSize(JComponent var1) {
  107.       return this.getPreferredSize(var1);
  108.    }
  109.  
  110.    public Dimension getPreferredSize(JComponent var1) {
  111.       Icon var2 = this.getCheckIcon();
  112.       Icon var3 = this.getMenuArrow();
  113.       return BasicGraphicsUtils.getPreferredMenuItemSize(var1, var2, var3, 4);
  114.    }
  115.  
  116.    public Dimension getMaximumSize(JComponent var1) {
  117.       return this.getPreferredSize(var1);
  118.    }
  119.  
  120.    public void update(Graphics var1, JComponent var2) {
  121.       this.paint(var1, var2);
  122.    }
  123.  
  124.    public void paint(Graphics var1, JComponent var2) {
  125.       BasicGraphicsUtils.paintMenuItem(var1, var2, this.getCheckIcon(), this.getMenuArrow(), pressedBackground, pressedForeground, 4);
  126.    }
  127.  
  128.    public Insets getDefaultMargin(AbstractButton var1) {
  129.       return new Insets(2, 2, 2, 2);
  130.    }
  131.  
  132.    Icon getMenuArrow() {
  133.       return this.menuArrow;
  134.    }
  135.  
  136.    Icon getCheckIcon() {
  137.       return this.checkIcon;
  138.    }
  139.  
  140.    public void processMouseEvent(JMenuItem var1, MouseEvent var2, MenuElement[] var3, MenuSelectionManager var4) {
  141.       Point var5 = var2.getPoint();
  142.       if (var5.x >= 0 && var5.x < ((JComponent)var1).getWidth() && var5.y >= 0 && var5.y < ((JComponent)var1).getHeight()) {
  143.          if (((AWTEvent)var2).getID() == 502) {
  144.             var4.clearSelectedPath();
  145.             ((AbstractButton)var1).doClick(0);
  146.          } else {
  147.             var4.setSelectedPath(var3);
  148.          }
  149.       } else if (((AWTEvent)var2).getID() == 502) {
  150.          var4.clearSelectedPath();
  151.       } else {
  152.          if (((AbstractButton)var1).getModel().isArmed()) {
  153.             MenuElement[] var6 = new MenuElement[var3.length - 1];
  154.             int var7 = 0;
  155.  
  156.             for(int var8 = var3.length - 1; var7 < var8; ++var7) {
  157.                var6[var7] = var3[var7];
  158.             }
  159.  
  160.             var4.setSelectedPath(var6);
  161.          }
  162.  
  163.       }
  164.    }
  165.  
  166.    private int lower(int var1) {
  167.       return var1 >= 65 && var1 <= 90 ? var1 + 97 - 65 : var1;
  168.    }
  169.  
  170.    public void processKeyEvent(JMenuItem var1, KeyEvent var2, MenuElement[] var3, MenuSelectionManager var4) {
  171.       int var5 = ((AbstractButton)var1).getMnemonic();
  172.       if (var5 != 0) {
  173.          if (((AWTEvent)var2).getID() == 401 && this.lower(var5) == this.lower(var2.getKeyChar())) {
  174.             var4.clearSelectedPath();
  175.             ((AbstractButton)var1).doClick(0);
  176.             ((InputEvent)var2).consume();
  177.          }
  178.  
  179.       }
  180.    }
  181. }
  182.