home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / plaf / basic / BasicButtonUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  7.7 KB  |  276 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Insets;
  10. import java.awt.Rectangle;
  11. import javax.swing.AbstractButton;
  12. import javax.swing.ButtonModel;
  13. import javax.swing.Icon;
  14. import javax.swing.JComponent;
  15. import javax.swing.LookAndFeel;
  16. import javax.swing.SwingUtilities;
  17. import javax.swing.UIManager;
  18. import javax.swing.border.Border;
  19. import javax.swing.plaf.ButtonUI;
  20. import javax.swing.plaf.ComponentUI;
  21. import javax.swing.plaf.UIResource;
  22. import javax.swing.text.View;
  23.  
  24. public class BasicButtonUI extends ButtonUI {
  25.    private static final BasicButtonUI buttonUI = new BasicButtonUI();
  26.    protected int defaultTextIconGap;
  27.    private int shiftOffset = 0;
  28.    protected int defaultTextShiftOffset;
  29.    private boolean defaults_initialized = false;
  30.    private static final String propertyPrefix = "Button.";
  31.    private Color defaultForeground = null;
  32.    private Color defaultBackground = null;
  33.    private Font defaultFont = null;
  34.    private Border defaultBorder = null;
  35.    private static Rectangle viewRect = new Rectangle();
  36.    private static Rectangle textRect = new Rectangle();
  37.    private static Rectangle iconRect = new Rectangle();
  38.  
  39.    public static ComponentUI createUI(JComponent var0) {
  40.       return buttonUI;
  41.    }
  42.  
  43.    protected String getPropertyPrefix() {
  44.       return "Button.";
  45.    }
  46.  
  47.    public void installUI(JComponent var1) {
  48.       this.installDefaults((AbstractButton)var1);
  49.       this.installListeners((AbstractButton)var1);
  50.       this.installKeyboardActions((AbstractButton)var1);
  51.       BasicHTML.updateRenderer(var1, ((AbstractButton)var1).getText());
  52.    }
  53.  
  54.    protected void installDefaults(AbstractButton var1) {
  55.       String var2 = this.getPropertyPrefix();
  56.       if (!this.defaults_initialized) {
  57.          this.defaultTextIconGap = (Integer)UIManager.get(var2 + "textIconGap");
  58.          this.defaultTextShiftOffset = (Integer)UIManager.get(var2 + "textShiftOffset");
  59.          this.defaults_initialized = true;
  60.       }
  61.  
  62.       if (var1.isContentAreaFilled()) {
  63.          ((JComponent)var1).setOpaque(true);
  64.       } else {
  65.          ((JComponent)var1).setOpaque(false);
  66.       }
  67.  
  68.       if (var1.getMargin() == null || var1.getMargin() instanceof UIResource) {
  69.          var1.setMargin(UIManager.getInsets(var2 + "margin"));
  70.       }
  71.  
  72.       LookAndFeel.installColorsAndFont(var1, var2 + "background", var2 + "foreground", var2 + "font");
  73.       LookAndFeel.installBorder(var1, var2 + "border");
  74.    }
  75.  
  76.    protected void installListeners(AbstractButton var1) {
  77.       BasicButtonListener var2 = this.createButtonListener(var1);
  78.       if (var2 != null) {
  79.          ((JComponent)var1).putClientProperty(this, var2);
  80.          ((Component)var1).addMouseListener(var2);
  81.          ((Component)var1).addMouseMotionListener(var2);
  82.          ((Component)var1).addFocusListener(var2);
  83.          ((JComponent)var1).addPropertyChangeListener(var2);
  84.          var1.addChangeListener(var2);
  85.       }
  86.  
  87.    }
  88.  
  89.    protected void installKeyboardActions(AbstractButton var1) {
  90.       BasicButtonListener var2 = (BasicButtonListener)((JComponent)var1).getClientProperty(this);
  91.       if (var2 != null) {
  92.          var2.installKeyboardActions(var1);
  93.       }
  94.  
  95.    }
  96.  
  97.    public void uninstallUI(JComponent var1) {
  98.       this.uninstallKeyboardActions((AbstractButton)var1);
  99.       this.uninstallListeners((AbstractButton)var1);
  100.       this.uninstallDefaults((AbstractButton)var1);
  101.       BasicHTML.updateRenderer(var1, "");
  102.    }
  103.  
  104.    protected void uninstallKeyboardActions(AbstractButton var1) {
  105.       BasicButtonListener var2 = (BasicButtonListener)((JComponent)var1).getClientProperty(this);
  106.       if (var2 != null) {
  107.          var2.uninstallKeyboardActions(var1);
  108.       }
  109.  
  110.    }
  111.  
  112.    protected void uninstallListeners(AbstractButton var1) {
  113.       BasicButtonListener var2 = (BasicButtonListener)((JComponent)var1).getClientProperty(this);
  114.       ((JComponent)var1).putClientProperty(this, (Object)null);
  115.       if (var2 != null) {
  116.          ((Component)var1).removeMouseListener(var2);
  117.          ((Component)var1).removeMouseListener(var2);
  118.          ((Component)var1).removeMouseMotionListener(var2);
  119.          ((Component)var1).removeFocusListener(var2);
  120.          var1.removeChangeListener(var2);
  121.          ((JComponent)var1).removePropertyChangeListener(var2);
  122.       }
  123.  
  124.    }
  125.  
  126.    protected void uninstallDefaults(AbstractButton var1) {
  127.       LookAndFeel.uninstallBorder(var1);
  128.       this.defaults_initialized = false;
  129.    }
  130.  
  131.    protected BasicButtonListener createButtonListener(AbstractButton var1) {
  132.       return new BasicButtonListener(var1);
  133.    }
  134.  
  135.    public int getDefaultTextIconGap(AbstractButton var1) {
  136.       return this.defaultTextIconGap;
  137.    }
  138.  
  139.    public void paint(Graphics var1, JComponent var2) {
  140.       AbstractButton var3 = (AbstractButton)var2;
  141.       ButtonModel var4 = var3.getModel();
  142.       FontMetrics var5 = var1.getFontMetrics();
  143.       Insets var6 = var2.getInsets();
  144.       viewRect.x = var6.left;
  145.       viewRect.y = var6.top;
  146.       viewRect.width = ((JComponent)var3).getWidth() - (var6.right + viewRect.x);
  147.       viewRect.height = ((JComponent)var3).getHeight() - (var6.bottom + viewRect.y);
  148.       textRect.x = textRect.y = textRect.width = textRect.height = 0;
  149.       iconRect.x = iconRect.y = iconRect.width = iconRect.height = 0;
  150.       Font var7 = ((Component)var2).getFont();
  151.       var1.setFont(var7);
  152.       String var8 = SwingUtilities.layoutCompoundLabel(var2, var5, var3.getText(), var3.getIcon(), var3.getVerticalAlignment(), var3.getHorizontalAlignment(), var3.getVerticalTextPosition(), var3.getHorizontalTextPosition(), viewRect, iconRect, textRect, var3.getText() == null ? 0 : this.defaultTextIconGap);
  153.       this.clearTextShiftOffset();
  154.       if (var4.isArmed() && var4.isPressed()) {
  155.          this.paintButtonPressed(var1, var3);
  156.       }
  157.  
  158.       if (var3.getIcon() != null) {
  159.          this.paintIcon(var1, var2, iconRect);
  160.       }
  161.  
  162.       if (var8 != null && !var8.equals("")) {
  163.          View var9 = (View)var2.getClientProperty("html");
  164.          if (var9 != null) {
  165.             var9.paint(var1, textRect);
  166.          } else {
  167.             this.paintText(var1, var2, textRect, var8);
  168.          }
  169.       }
  170.  
  171.       if (var3.isFocusPainted() && ((JComponent)var3).hasFocus()) {
  172.          this.paintFocus(var1, var3, viewRect, textRect, iconRect);
  173.       }
  174.  
  175.    }
  176.  
  177.    protected void paintIcon(Graphics var1, JComponent var2, Rectangle var3) {
  178.       AbstractButton var4 = (AbstractButton)var2;
  179.       ButtonModel var5 = var4.getModel();
  180.       Icon var6 = var4.getIcon();
  181.       Icon var7 = null;
  182.       if (var6 != null) {
  183.          if (!var5.isEnabled()) {
  184.             if (var5.isSelected()) {
  185.                var7 = var4.getDisabledSelectedIcon();
  186.             } else {
  187.                var7 = var4.getDisabledIcon();
  188.             }
  189.          } else if (var5.isPressed() && var5.isArmed()) {
  190.             var7 = var4.getPressedIcon();
  191.             if (var7 != null) {
  192.                this.clearTextShiftOffset();
  193.             }
  194.          } else if (var4.isRolloverEnabled() && var5.isRollover()) {
  195.             if (var5.isSelected()) {
  196.                var7 = var4.getRolloverSelectedIcon();
  197.             } else {
  198.                var7 = var4.getRolloverIcon();
  199.             }
  200.          } else if (var5.isSelected()) {
  201.             var7 = var4.getSelectedIcon();
  202.          }
  203.  
  204.          if (var7 != null) {
  205.             var6 = var7;
  206.          }
  207.  
  208.          if (var5.isPressed() && var5.isArmed()) {
  209.             var6.paintIcon(var2, var1, var3.x + this.getTextShiftOffset(), var3.y + this.getTextShiftOffset());
  210.          } else {
  211.             var6.paintIcon(var2, var1, var3.x, var3.y);
  212.          }
  213.  
  214.       }
  215.    }
  216.  
  217.    protected void paintText(Graphics var1, JComponent var2, Rectangle var3, String var4) {
  218.       AbstractButton var5 = (AbstractButton)var2;
  219.       ButtonModel var6 = var5.getModel();
  220.       FontMetrics var7 = var1.getFontMetrics();
  221.       if (var6.isEnabled()) {
  222.          var1.setColor(((Component)var5).getForeground());
  223.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x + this.getTextShiftOffset(), var3.y + var7.getAscent() + this.getTextShiftOffset());
  224.       } else {
  225.          var1.setColor(((Component)var5).getBackground().brighter());
  226.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x, var3.y + var7.getAscent());
  227.          var1.setColor(((Component)var5).getBackground().darker());
  228.          BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x - 1, var3.y + var7.getAscent() - 1);
  229.       }
  230.  
  231.    }
  232.  
  233.    protected void paintFocus(Graphics var1, AbstractButton var2, Rectangle var3, Rectangle var4, Rectangle var5) {
  234.    }
  235.  
  236.    protected void paintButtonPressed(Graphics var1, AbstractButton var2) {
  237.    }
  238.  
  239.    protected void clearTextShiftOffset() {
  240.       this.shiftOffset = 0;
  241.    }
  242.  
  243.    protected void setTextShiftOffset() {
  244.       this.shiftOffset = this.defaultTextShiftOffset;
  245.    }
  246.  
  247.    protected int getTextShiftOffset() {
  248.       return this.shiftOffset;
  249.    }
  250.  
  251.    public Dimension getMinimumSize(JComponent var1) {
  252.       Dimension var2 = this.getPreferredSize(var1);
  253.       View var3 = (View)var1.getClientProperty("html");
  254.       if (var3 != null) {
  255.          var2.width = (int)((float)var2.width - (var3.getPreferredSpan(0) - var3.getMinimumSpan(0)));
  256.       }
  257.  
  258.       return var2;
  259.    }
  260.  
  261.    public Dimension getPreferredSize(JComponent var1) {
  262.       AbstractButton var2 = (AbstractButton)var1;
  263.       return BasicGraphicsUtils.getPreferredButtonSize(var2, this.defaultTextIconGap);
  264.    }
  265.  
  266.    public Dimension getMaximumSize(JComponent var1) {
  267.       Dimension var2 = this.getPreferredSize(var1);
  268.       View var3 = (View)var1.getClientProperty("html");
  269.       if (var3 != null) {
  270.          var2.width = (int)((float)var2.width + (var3.getMaximumSpan(0) - var3.getPreferredSpan(0)));
  271.       }
  272.  
  273.       return var2;
  274.    }
  275. }
  276.