diff options
Diffstat (limited to 'libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java')
-rw-r--r-- | libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java | 105 |
1 files changed, 90 insertions, 15 deletions
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java index 38e117b18b2..fbd21241a0d 100644 --- a/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java +++ b/libjava/classpath/javax/swing/plaf/basic/BasicRadioButtonUI.java @@ -38,50 +38,125 @@ exception statement from your version. */ package javax.swing.plaf.basic; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Rectangle; + import javax.swing.AbstractButton; import javax.swing.Icon; import javax.swing.JComponent; +import javax.swing.SwingUtilities; import javax.swing.UIDefaults; import javax.swing.UIManager; import javax.swing.plaf.ComponentUI; +/** + * The BasicLookAndFeel UI implementation for + * {@link javax.swing.JRadioButton}s. + */ public class BasicRadioButtonUI extends BasicToggleButtonUI { - + /** + * The default icon for JRadioButtons. The default icon displays the usual + * RadioButton and is sensible to the selection state of the button, + * and can be used both as normal icon as well as selectedIcon. + */ protected Icon icon; + /** + * Creates and returns a new instance of <code>BasicRadioButtonUI</code>. + * + * @return a new instance of <code>BasicRadioButtonUI</code> + */ public static ComponentUI createUI(final JComponent c) { return new BasicRadioButtonUI(); } + /** + * Creates a new instance of <code>BasicButtonUI</code>. + */ public BasicRadioButtonUI() { icon = getDefaultIcon(); } - public void installUI(final JComponent c) { - super.installUI(c); - if (c instanceof AbstractButton) - { - AbstractButton b = (AbstractButton) c; - b.setIcon(icon); - } + /** + * Installs defaults from the Look & Feel table on the specified + * button. + * + * @param b the button on which to install the defaults + */ + protected void installDefaults(AbstractButton b) + { + super.installDefaults(b); + if (b.getIcon() == null) + b.setIcon(icon); + if (b.getSelectedIcon() == null) + b.setSelectedIcon(icon); } + /** + * Returns the prefix used for UIDefaults properties. This is + * <code>RadioButton</code> in this case. + * + * @return the prefix used for UIDefaults properties + */ + protected String getPropertyPrefix() + { + return "RadioButton."; + } + + /** + * Returns the default icon for JRadioButtons. + * The default icon displays the usual + * RadioButton and is sensible to the selection state of the button, + * and can be used both as normal icon as well as selectedIcon. + * + * @return the default icon for JRadioButtons + */ public Icon getDefaultIcon() { UIDefaults defaults = UIManager.getLookAndFeelDefaults(); - return defaults.getIcon("RadioButton.icon"); + return defaults.getIcon(getPropertyPrefix() + "icon"); } - -} - - - - + /** + * Paints the RadioButton. + * + * @param g the Graphics context to paint with + * @param c the button to paint + */ + public void paint(Graphics g, JComponent c) + { + AbstractButton b = (AbstractButton) c; + Rectangle tr = new Rectangle(); + Rectangle ir = new Rectangle(); + Rectangle vr = new Rectangle(); + Font f = c.getFont(); + g.setFont(f); + Icon currentIcon = null; + if (b.isSelected()) + currentIcon = b.getSelectedIcon(); + else + currentIcon = b.getIcon(); + SwingUtilities.calculateInnerArea(b, vr); + String text = SwingUtilities.layoutCompoundLabel + (c, g.getFontMetrics(f), b.getText(), currentIcon, + b.getVerticalAlignment(), b.getHorizontalAlignment(), + b.getVerticalTextPosition(), b.getHorizontalTextPosition(), + vr, ir, tr, b.getIconTextGap() + defaultTextShiftOffset); + + if (currentIcon != null) + { + currentIcon.paintIcon(c, g, ir.x, ir.y); + } + if (text != null) + paintText(g, b, tr, text); + paintFocus(g, b, vr, tr, ir); + } +} |