home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / plaf / basic / BasicButtonUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  7.8 KB  |  239 lines

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