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 / BasicButtonUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  7.2 KB  |  217 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.plaf.ButtonUI;
  11. import com.sun.java.swing.plaf.ComponentUI;
  12. import java.awt.Color;
  13. import java.awt.Component;
  14. import java.awt.Dimension;
  15. import java.awt.Font;
  16. import java.awt.FontMetrics;
  17. import java.awt.Graphics;
  18. import java.awt.Insets;
  19. import java.awt.Rectangle;
  20. import java.io.Serializable;
  21.  
  22. public class BasicButtonUI extends ButtonUI implements Serializable {
  23.    private static final Insets defaultMargin = new Insets(2, 14, 2, 14);
  24.    private static final int defaultTextIconGap = 4;
  25.    private int shift_offset;
  26.    protected static ButtonUI buttonUI;
  27.    protected static BasicButtonListener listener;
  28.  
  29.    protected Color getSelectColor() {
  30.       return UIManager.getColor("Button.pressed");
  31.    }
  32.  
  33.    protected Color getDisabledColor() {
  34.       return UIManager.getColor("Button.disabled");
  35.    }
  36.  
  37.    protected Color getDisabledTextColor() {
  38.       return UIManager.getColor("Button.disabledText");
  39.    }
  40.  
  41.    protected Color getFocusColor() {
  42.       return UIManager.getColor("Button.focus");
  43.    }
  44.  
  45.    public static ComponentUI createUI(JComponent var0) {
  46.       if (buttonUI == null) {
  47.          buttonUI = new BasicButtonUI();
  48.       }
  49.  
  50.       return buttonUI;
  51.    }
  52.  
  53.    public void installUI(JComponent var1) {
  54.       this.installDefaults(var1);
  55.       this.installListeners(var1);
  56.       this.installKeyboardActions(var1);
  57.    }
  58.  
  59.    protected void installDefaults(JComponent var1) {
  60.       var1.setOpaque(false);
  61.       LookAndFeel.installColorsAndFont(var1, "Button.background", "Button.foreground", "Button.font");
  62.       LookAndFeel.installBorder(var1, "Button.border");
  63.    }
  64.  
  65.    protected void installListeners(JComponent var1) {
  66.       if ((listener = this.createListener(var1)) != null) {
  67.          ((Component)var1).addMouseListener(listener);
  68.          ((Component)var1).addMouseMotionListener(listener);
  69.          ((Component)var1).addFocusListener(listener);
  70.          ((AbstractButton)var1).addChangeListener(listener);
  71.       }
  72.  
  73.    }
  74.  
  75.    protected void installKeyboardActions(JComponent var1) {
  76.       listener.setupKeyboard((AbstractButton)var1);
  77.    }
  78.  
  79.    public void uninstallUI(JComponent var1) {
  80.       this.uninstallKeyboardActions(var1);
  81.       this.uninstallListeners(var1);
  82.       this.uninstallDefaults(var1);
  83.    }
  84.  
  85.    protected void uninstallKeyboardActions(JComponent var1) {
  86.       var1.resetKeyboardActions();
  87.    }
  88.  
  89.    protected void uninstallListeners(JComponent var1) {
  90.       ((Component)var1).removeMouseListener(listener);
  91.       ((Component)var1).removeMouseMotionListener(listener);
  92.       ((Component)var1).removeFocusListener(listener);
  93.       ((AbstractButton)var1).removeChangeListener(listener);
  94.    }
  95.  
  96.    protected void uninstallDefaults(JComponent var1) {
  97.       LookAndFeel.uninstallBorder(var1);
  98.    }
  99.  
  100.    protected BasicButtonListener createListener(JComponent var1) {
  101.       return new BasicButtonListener((AbstractButton)var1);
  102.    }
  103.  
  104.    public void paint(Graphics var1, JComponent var2) {
  105.       AbstractButton var3 = (AbstractButton)var2;
  106.       ButtonModel var4 = var3.getModel();
  107.       Dimension var5 = ((Component)var3).getSize();
  108.       FontMetrics var6 = var1.getFontMetrics();
  109.       Insets var7 = var2.getInsets();
  110.       Rectangle var8 = new Rectangle(var5);
  111.       var8.x += var7.left;
  112.       var8.y += var7.top;
  113.       var8.width -= var7.right + var8.x;
  114.       var8.height -= var7.bottom + var8.y;
  115.       Rectangle var9 = new Rectangle();
  116.       Rectangle var10 = new Rectangle();
  117.       Font var11 = ((Component)var2).getFont();
  118.       var1.setFont(var11);
  119.       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);
  120.       this.setTextShiftOffset(0);
  121.       if (var4.isArmed() && var4.isPressed()) {
  122.          this.paintButtonPressed(var1, var3);
  123.       }
  124.  
  125.       if (var3.getIcon() != null) {
  126.          this.paintIcon(var1, var2, var9);
  127.       }
  128.  
  129.       if (var12 != null && !var12.equals("")) {
  130.          this.paintText(var1, var2, var10, var12);
  131.       }
  132.  
  133.       if (var3.isFocusPainted() && ((JComponent)var3).hasFocus()) {
  134.          this.paintFocus(var1, var5);
  135.       }
  136.  
  137.    }
  138.  
  139.    protected void paintIcon(Graphics var1, JComponent var2, Rectangle var3) {
  140.       AbstractButton var4 = (AbstractButton)var2;
  141.       ButtonModel var5 = var4.getModel();
  142.       Icon var6 = null;
  143.       if (!var5.isEnabled()) {
  144.          var6 = var4.getDisabledIcon();
  145.       } else if (var5.isPressed() && var5.isArmed()) {
  146.          var6 = var4.getPressedIcon();
  147.          if (var6 == null) {
  148.             var6 = var4.getIcon();
  149.          } else {
  150.             this.setTextShiftOffset(0);
  151.          }
  152.       } else if (var4.isRolloverEnabled() && var5.isRollover()) {
  153.          var6 = var4.getRolloverIcon();
  154.       }
  155.  
  156.       if (var6 == null) {
  157.          var6 = var4.getIcon();
  158.       }
  159.  
  160.       if (var5.isPressed() && var5.isArmed()) {
  161.          var6.paintIcon(var2, var1, var3.x + this.getTextShiftOffset(), var3.y + this.getTextShiftOffset());
  162.       } else {
  163.          var6.paintIcon(var2, var1, var3.x, var3.y);
  164.       }
  165.    }
  166.  
  167.    protected void paintText(Graphics var1, JComponent var2, Rectangle var3, String var4) {
  168.       AbstractButton var5 = (AbstractButton)var2;
  169.       ButtonModel var6 = var5.getModel();
  170.       FontMetrics var7 = var1.getFontMetrics();
  171.       if (var6.isEnabled()) {
  172.          var1.setColor(((Component)var5).getForeground());
  173.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x + this.getTextShiftOffset(), var3.y + var7.getAscent() + this.getTextShiftOffset());
  174.       } else {
  175.          var1.setColor(((Component)var5).getBackground().brighter());
  176.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x, var3.y + var7.getAscent());
  177.          var1.setColor(((Component)var5).getBackground().darker());
  178.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x - 1, var3.y + var7.getAscent() - 1);
  179.       }
  180.    }
  181.  
  182.    protected void paintFocus(Graphics var1, Dimension var2) {
  183.    }
  184.  
  185.    protected void paintButtonPressed(Graphics var1, AbstractButton var2) {
  186.    }
  187.  
  188.    protected void setTextShiftOffset(int var1) {
  189.       this.shift_offset = var1;
  190.    }
  191.  
  192.    private int getTextShiftOffset() {
  193.       return this.shift_offset;
  194.    }
  195.  
  196.    public Dimension getMinimumSize(JComponent var1) {
  197.       return this.getPreferredSize(var1);
  198.    }
  199.  
  200.    public Dimension getPreferredSize(JComponent var1) {
  201.       AbstractButton var2 = (AbstractButton)var1;
  202.       return BasicGraphicsUtils.getPreferredButtonSize(var2, 4);
  203.    }
  204.  
  205.    public Dimension getMaximumSize(JComponent var1) {
  206.       return this.getPreferredSize(var1);
  207.    }
  208.  
  209.    public Insets getDefaultMargin(AbstractButton var1) {
  210.       return defaultMargin;
  211.    }
  212.  
  213.    public int getDefaultTextIconGap(AbstractButton var1) {
  214.       return 4;
  215.    }
  216. }
  217.