Index: javax/swing/JRadioButton.java =================================================================== RCS file: /cvs/gcc/gcc/libjava/javax/swing/JRadioButton.java,v retrieving revision 1.3.2.4 diff -u -r1.3.2.4 JRadioButton.java --- javax/swing/JRadioButton.java 11 Aug 2004 13:57:35 -0000 1.3.2.4 +++ javax/swing/JRadioButton.java 27 Sep 2004 06:01:31 -0000 @@ -39,70 +39,219 @@ package javax.swing; import javax.accessibility.AccessibleContext; +import javax.accessibility.AccessibleRole; +import javax.swing.plaf.ButtonUI; +/** + * The JRadioButton component provides a visually selectable + * button with mutually exclusive behaviour within a ButtonGroup. + * A series of radio buttons can be used to provide options to the user, + * where the user can only select one of the available options. The state + * of the button is provided by the superclass, JToggleButton. + * JRadioButton adds the additional behaviour, that if two + * or more radio buttons are grouped together, the selection of one implies + * the deselection of the other buttons within the group. + *

+ * + * Buttons are grouped by adding each instance to a ButtonGroup. + * The existence of such a grouping is not reflected visually, so other means + * should be used to denote this. For instance, the grouped buttons can be placed + * within the same panel, possibly with an appropriate border to denote + * the connection between the components. + * + * @author Michael Koch + * @author Graydon Hoare + * @author Andrew John Hughes + * @see JToggleButton + * @see ButtonGroup + * @since 1.2 + */ public class JRadioButton extends JToggleButton { + /** + * Compatible with Sun's JDK. + */ private static final long serialVersionUID = 7751949583255506856L; + /** + * This class provides accessibility support for the toggle button. + */ + protected class AccessibleJRadioButton + extends AccessibleJToggleButton + { + + /** + * Constructor for the accessible toggle button. + */ + protected AccessibleJRadioButton() + { + /* Call the superclass to register for events */ + super(); + } + + /** + * Returns the accessible role for the toggle button. + * + * @return An instance of AccessibleRole, describing + * the role of the toggle button. + */ + public AccessibleRole getAccessibleRole() + { + return AccessibleRole.RADIO_BUTTON; + } + + } + + /** + * Constructs an unselected radio button with no text or icon. + */ public JRadioButton() { - this(null, null); + this(null, null, false); } + /** + * Constructs a radio button using the labelling, state + * and icon specified by the supplied action. + * + * @param a the action to use to define the properties of the button. + */ public JRadioButton(Action a) { this(); setAction(a); } + /** + * Constructs an unselected radio button with the supplied icon + * and no text. + * + * @param icon the icon to use. + */ public JRadioButton(Icon icon) { - this(null, icon); + this(null, icon, false); } + /** + * Constructs a radio button with the supplied icon and state. + * + * @param icon the icon to use. + * @param selected if true, the radio button is initially in the + * selected state. Otherwise, the button is unselected. + */ public JRadioButton(Icon icon, boolean selected) { this(null, icon, selected); } + /** + * Constructs an unselected radio button using the supplied text + * and no icon. + * + * @param text the text to use. + */ public JRadioButton(String text) { - this(text, null); + this(text, null, false); } + /** + * Constructs a radio button with the supplied text and state. + * + * @param text the text to use. + * @param selected if true, the radio button is initially in the + * selected state. Otherwise, the button is unselected. + */ public JRadioButton(String text, boolean selected) { this(text, null, selected); } + /** + * Constructs an unselected radio button with the supplied text + * and icon. + * + * @param text the text to use. + * @param icon the icon to use. + */ public JRadioButton(String text, Icon icon) { - super(text, icon); + this(text, icon, false); + } + + /** + * Constructs a radio button with the supplied text, icon and state. + * + * @param text the text to use. + * @param icon the icon to use. + * @param selected if true, the radio button is initially in the + * selected state. Otherwise, the button is unselected. + */ + public JRadioButton(String text, Icon icon, boolean selected) + { + super(text, icon, selected); borderPainted = false; contentAreaFilled = false; } - public JRadioButton(String text, Icon icon, boolean selected) + /** + * Returns the accessible context for this JRadioButton, + * in the form of an instance of AccessibleJRadioButton. + * The context is created, if necessary. + * + * @return the associated context + */ + public AccessibleContext getAccessibleContext() + { + /* Create the context if this is the first request */ + if (accessibleContext == null) + { + /* Create the context */ + accessibleContext = new AccessibleJRadioButton(); + } + return accessibleContext; + } + + /** + * Returns a string specifying the name of the Look and Feel UI class + * that renders this component. + * + * @return the Look and Feel UI class for JRadioButtons + * as a String. + */ + public String getUIClassID() { + return "RadioButtonUI"; } - - public AccessibleContext getAccessibleContext() - { - //Gets the AccessibleContext associated with this JRadioButton. - return null; - } - public String getUIClassID() - { - //Returns a string that specifies the name of the Look and Feel - //class that renders this component. - return "RadioButtonUI"; - } + /** + * Returns a string representation of this component for debugging use. + * Users should not depend on anything as regards the content or formatting + * of this string, except for the fact that the returned string may never be + * null (only empty). + * + * @return the component in String form for debugging. + */ + protected String paramString() + { + return "JRadioButton"; + } - protected String paramString() - { - return "JRadioButton"; - } + /** + * This method resets the radio button's UI delegate to the default UI for + * the current look and feel. + */ + public void updateUI() + { + /* + I can't see any difference between this and the superclass one, + but Sun reimplements it... there is no RadioButtonUI class for it + to be cast to. + */ + setUI((ButtonUI) UIManager.getUI(this)); + } + }