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 / BasicToggleButtonUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  6.9 KB  |  186 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.AbstractButton;
  4. import com.sun.java.swing.ButtonModel;
  5. import com.sun.java.swing.Icon;
  6. import com.sun.java.swing.JComponent;
  7. import com.sun.java.swing.LookAndFeel;
  8. import com.sun.java.swing.SwingUtilities;
  9. import com.sun.java.swing.UIManager;
  10. import com.sun.java.swing.border.Border;
  11. import com.sun.java.swing.plaf.ComponentUI;
  12. import com.sun.java.swing.plaf.ToggleButtonUI;
  13. import java.awt.Color;
  14. import java.awt.Component;
  15. import java.awt.Dimension;
  16. import java.awt.Font;
  17. import java.awt.FontMetrics;
  18. import java.awt.Graphics;
  19. import java.awt.Insets;
  20. import java.awt.Rectangle;
  21. import java.io.Serializable;
  22.  
  23. public class BasicToggleButtonUI extends ToggleButtonUI implements Serializable {
  24.    private static ToggleButtonUI toggleButtonUI;
  25.    private static BasicButtonListener listener;
  26.    private static final int defaultTextIconGap = 4;
  27.    private static final Insets defaultMargin = new Insets(2, 2, 2, 2);
  28.    protected static Color toggleButtonFocus;
  29.  
  30.    public static ComponentUI createUI(JComponent var0) {
  31.       if (toggleButtonUI == null) {
  32.          toggleButtonUI = new BasicToggleButtonUI();
  33.       }
  34.  
  35.       return toggleButtonUI;
  36.    }
  37.  
  38.    public Insets getDefaultMargin(AbstractButton var1) {
  39.       return defaultMargin;
  40.    }
  41.  
  42.    public Border getDefaultBorder(AbstractButton var1) {
  43.       return UIManager.getBorder("ToggleButton.border");
  44.    }
  45.  
  46.    public int getDefaultTextIconGap(AbstractButton var1) {
  47.       return 4;
  48.    }
  49.  
  50.    public void installUI(JComponent var1) {
  51.       this.installDefaults(var1);
  52.       this.installListeners(var1);
  53.       this.installKeyboardActions(var1);
  54.    }
  55.  
  56.    protected void installDefaults(JComponent var1) {
  57.       LookAndFeel.installColorsAndFont(var1, "ToggleButton.background", "ToggleButton.foreground", "ToggleButton.font");
  58.       LookAndFeel.installBorder(var1, "ToggleButton.border");
  59.       toggleButtonFocus = UIManager.getColor("ToggleButton.focus");
  60.    }
  61.  
  62.    protected void installListeners(JComponent var1) {
  63.       if ((listener = this.createListener(var1)) != null) {
  64.          ((Component)var1).addMouseListener(listener);
  65.          ((Component)var1).addMouseMotionListener(listener);
  66.          ((Component)var1).addFocusListener(listener);
  67.          ((AbstractButton)var1).addChangeListener(listener);
  68.       }
  69.  
  70.    }
  71.  
  72.    protected void installKeyboardActions(JComponent var1) {
  73.       listener.setupKeyboard((AbstractButton)var1);
  74.    }
  75.  
  76.    public void uninstallUI(JComponent var1) {
  77.       this.uninstallKeyboardActions(var1);
  78.       this.uninstallListeners(var1);
  79.       this.uninstallDefaults(var1);
  80.    }
  81.  
  82.    protected void uninstallKeyboardActions(JComponent var1) {
  83.       var1.resetKeyboardActions();
  84.    }
  85.  
  86.    protected void uninstallListeners(JComponent var1) {
  87.       ((Component)var1).removeMouseListener(listener);
  88.       ((Component)var1).removeMouseMotionListener(listener);
  89.       ((Component)var1).removeFocusListener(listener);
  90.       ((AbstractButton)var1).removeChangeListener(listener);
  91.    }
  92.  
  93.    protected void uninstallDefaults(JComponent var1) {
  94.       LookAndFeel.uninstallBorder(var1);
  95.    }
  96.  
  97.    protected BasicButtonListener createListener(JComponent var1) {
  98.       return new BasicButtonListener((AbstractButton)var1);
  99.    }
  100.  
  101.    public void paint(Graphics var1, JComponent var2) {
  102.       AbstractButton var3 = (AbstractButton)var2;
  103.       ButtonModel var4 = var3.getModel();
  104.       Dimension var5 = ((Component)var3).getSize();
  105.       FontMetrics var6 = var1.getFontMetrics();
  106.       Insets var7 = var2.getInsets();
  107.       Rectangle var8 = new Rectangle(var5);
  108.       var8.x += var7.left;
  109.       var8.y += var7.top;
  110.       var8.width -= var7.right + var8.x;
  111.       var8.height -= var7.bottom + var8.y;
  112.       Rectangle var9 = new Rectangle();
  113.       Rectangle var10 = new Rectangle();
  114.       Font var11 = ((Component)var2).getFont();
  115.       var1.setFont(var11);
  116.       String var12 = SwingUtilities.layoutCompoundLabel(var6, var3.getText(), var3.getIcon(), var3.getVerticalAlignment(), var3.getHorizontalAlignment(), var3.getVerticalTextPosition(), var3.getHorizontalTextPosition(), var8, var9, var10, var3.getText() == null ? 0 : 4);
  117.       var1.setColor(((Component)var3).getBackground());
  118.       if (var4.isArmed() && var4.isPressed() || var4.isSelected()) {
  119.          this.paintButtonPressed(var1, var3);
  120.       }
  121.  
  122.       if (var3.getIcon() != null) {
  123.          this.paintIcon(var1, var2, var9);
  124.       }
  125.  
  126.       if (var12 != null && !var12.equals("")) {
  127.          this.paintText(var1, var2, var10, var12);
  128.       }
  129.  
  130.       if (var3.isFocusPainted() && ((JComponent)var3).hasFocus()) {
  131.          this.paintFocus(var1, var5);
  132.       }
  133.  
  134.    }
  135.  
  136.    protected void paintIcon(Graphics var1, JComponent var2, Rectangle var3) {
  137.       AbstractButton var4 = (AbstractButton)var2;
  138.       ButtonModel var5 = var4.getModel();
  139.       Icon var6 = null;
  140.       if (!var5.isEnabled()) {
  141.          var6 = var4.getDisabledIcon();
  142.       } else if (var5.isPressed() && var5.isArmed()) {
  143.          var6 = var4.getPressedIcon();
  144.          if (var6 == null) {
  145.             var6 = var4.getSelectedIcon();
  146.          }
  147.       } else if (var5.isSelected()) {
  148.          var6 = var4.getSelectedIcon();
  149.       } else if (var4.isRolloverEnabled() && var5.isRollover()) {
  150.          var6 = var4.getRolloverIcon();
  151.       }
  152.  
  153.       if (var6 == null) {
  154.          var6 = var4.getIcon();
  155.       }
  156.  
  157.       var6.paintIcon(var2, var1, var3.x, var3.y);
  158.    }
  159.  
  160.    protected void paintText(Graphics var1, JComponent var2, Rectangle var3, String var4) {
  161.       AbstractButton var5 = (AbstractButton)var2;
  162.       ButtonModel var6 = var5.getModel();
  163.       FontMetrics var7 = var1.getFontMetrics();
  164.       if (var6.isEnabled()) {
  165.          var1.setColor(((Component)var5).getForeground());
  166.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x, var3.y + var7.getAscent());
  167.       } else {
  168.          var1.setColor(((Component)var5).getBackground().brighter());
  169.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x, var3.y + var7.getAscent());
  170.          var1.setColor(((Component)var5).getBackground().darker());
  171.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x - 1, var3.y + var7.getAscent() - 1);
  172.       }
  173.    }
  174.  
  175.    protected void paintFocus(Graphics var1, Dimension var2) {
  176.    }
  177.  
  178.    protected void paintButtonPressed(Graphics var1, AbstractButton var2) {
  179.    }
  180.  
  181.    public Dimension getPreferredSize(JComponent var1) {
  182.       AbstractButton var2 = (AbstractButton)var1;
  183.       return BasicGraphicsUtils.getPreferredButtonSize(var2, 4);
  184.    }
  185. }
  186.