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 / BasicRadioButtonUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  5.1 KB  |  136 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.ComponentUI;
  11. import com.sun.java.swing.plaf.ToggleButtonUI;
  12. import java.awt.Component;
  13. import java.awt.Container;
  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 BasicRadioButtonUI extends BasicToggleButtonUI implements Serializable {
  23.    protected static final Insets defaultMargin = new Insets(2, 2, 2, 2);
  24.    protected Icon icon;
  25.    protected static ToggleButtonUI radioButtonUI;
  26.    ButtonModel model;
  27.  
  28.    public static ComponentUI createUI(JComponent var0) {
  29.       if (radioButtonUI == null) {
  30.          radioButtonUI = new BasicRadioButtonUI();
  31.       }
  32.  
  33.       return radioButtonUI;
  34.    }
  35.  
  36.    protected void installDefaults(JComponent var1) {
  37.       super.installDefaults(var1);
  38.       this.icon = this.createIcon();
  39.       LookAndFeel.installColorsAndFont(var1, "RadioButton.background", "RadioButton.foreground", "RadioButton.font");
  40.    }
  41.  
  42.    public synchronized void paint(Graphics var1, JComponent var2) {
  43.       AbstractButton var3 = (AbstractButton)var2;
  44.       this.model = var3.getModel();
  45.       Dimension var4 = ((Component)var2).getSize();
  46.       Font var5 = ((Component)var2).getFont();
  47.       var1.setFont(var5);
  48.       FontMetrics var6 = var1.getFontMetrics();
  49.       Rectangle var7 = new Rectangle(var4);
  50.       Rectangle var8 = new Rectangle();
  51.       Rectangle var9 = new Rectangle();
  52.       Icon var10 = var3.getIcon();
  53.       String var11 = SwingUtilities.layoutCompoundLabel(var6, var3.getText(), var10 != null ? var10 : this.icon, var3.getVerticalAlignment(), var3.getHorizontalAlignment(), var3.getVerticalTextPosition(), var3.getHorizontalTextPosition(), var7, var8, var9, ((BasicToggleButtonUI)this).getDefaultTextIconGap(var3));
  54.       if (var2.isOpaque()) {
  55.          var1.setColor(((Component)var3).getBackground());
  56.          var1.fillRect(0, 0, var4.width, var4.height);
  57.       }
  58.  
  59.       if (var10 != null) {
  60.          if (!this.model.isEnabled()) {
  61.             var10 = var3.getDisabledIcon();
  62.          } else if (this.model.isPressed() && this.model.isArmed()) {
  63.             var10 = var3.getPressedIcon();
  64.             if (var10 == null) {
  65.                var10 = var3.getSelectedIcon();
  66.             }
  67.          } else if (this.model.isSelected()) {
  68.             var10 = var3.getSelectedIcon();
  69.          } else if (var3.isRolloverEnabled() && this.model.isRollover()) {
  70.             var10 = var3.getRolloverIcon();
  71.          }
  72.  
  73.          if (var10 == null) {
  74.             var10 = var3.getIcon();
  75.          }
  76.  
  77.          var10.paintIcon(var2, var1, var8.x, var8.y);
  78.       } else {
  79.          this.icon.paintIcon(var2, var1, var8.x, var8.y);
  80.       }
  81.  
  82.       if (var11 != null) {
  83.          if (this.model.isEnabled()) {
  84.             var1.setColor(((Component)var3).getForeground());
  85.             BasicGraphicsUtils.drawString(var1, var11, this.model.getMnemonic(), var9.x, var9.y + var6.getAscent());
  86.          } else {
  87.             var1.setColor(((Component)var3).getBackground().brighter());
  88.             BasicGraphicsUtils.drawString(var1, var11, this.model.getMnemonic(), var9.x + 1, var9.y + var6.getAscent() + 1);
  89.             var1.setColor(((Component)var3).getBackground().darker());
  90.             BasicGraphicsUtils.drawString(var1, var11, this.model.getMnemonic(), var9.x, var9.y + var6.getAscent());
  91.          }
  92.  
  93.          if (((JComponent)var3).hasFocus() && var3.isFocusPainted() && var9.width > 0 && var9.height > 0) {
  94.             this.paintFocus(var1, var9, var4);
  95.          }
  96.       }
  97.  
  98.    }
  99.  
  100.    protected void paintFocus(Graphics var1, Rectangle var2, Dimension var3) {
  101.    }
  102.  
  103.    public Icon createIcon() {
  104.       return UIManager.getIcon("RadioButton.icon");
  105.    }
  106.  
  107.    public Dimension getPreferredSize(JComponent var1) {
  108.       if (((Container)var1).getComponentCount() > 0) {
  109.          return null;
  110.       } else {
  111.          AbstractButton var2 = (AbstractButton)var1;
  112.          String var3 = var2.getText();
  113.          Icon var4 = var2.getIcon();
  114.          if (var4 == null) {
  115.             var4 = this.icon;
  116.          }
  117.  
  118.          Font var5 = ((Component)var2).getFont();
  119.          FontMetrics var6 = ((Component)var2).getToolkit().getFontMetrics(var5);
  120.          Rectangle var7 = new Rectangle();
  121.          Rectangle var8 = new Rectangle();
  122.          Rectangle var9 = new Rectangle(32767, 32767);
  123.          SwingUtilities.layoutCompoundLabel(var6, var3, var4, var2.getVerticalAlignment(), var2.getHorizontalAlignment(), var2.getVerticalTextPosition(), var2.getHorizontalTextPosition(), var9, var7, var8, var3 == null ? 0 : ((BasicToggleButtonUI)this).getDefaultTextIconGap(var2));
  124.          Rectangle var10 = var7.union(var8);
  125.          Insets var11 = ((JComponent)var2).getInsets();
  126.          var10.width += var11.left + var11.right;
  127.          var10.height += var11.top + var11.bottom;
  128.          return var10.getSize();
  129.       }
  130.    }
  131.  
  132.    public Insets getDefaultMargin(AbstractButton var1) {
  133.       return defaultMargin;
  134.    }
  135. }
  136.