Frames | No Frames |
1: /* JRadioButtonMenuItem.java -- 2: Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: 39: package javax.swing; 40: 41: import javax.accessibility.Accessible; 42: import javax.accessibility.AccessibleContext; 43: import javax.accessibility.AccessibleRole; 44: 45: /** 46: * This class represents JRadioButtonMenuItem. Its behaviour is very similar 47: * to JRadioButton. Just like JRadioButton, user can check and uncheck this 48: * menu item by clicking on it. JRadioButtonMenuItem uses ToggleButtonModel 49: * to keep track of its selection. If the JRadioButtonMenuItem is included in 50: * the button group, then only one JRadioButtonMenuItem can be selected at 51: * one time. 52: */ 53: public class JRadioButtonMenuItem extends JMenuItem implements Accessible 54: { 55: private static final long serialVersionUID = 8482658191548521743L; 56: 57: /** name for the UI delegate for this radio button menu item. */ 58: private static final String uiClassID = "RadioButtonMenuItemUI"; 59: 60: /** 61: * Creates a new JRadioButtonMenuItem object. 62: */ 63: public JRadioButtonMenuItem() 64: { 65: this(null, null); 66: } 67: 68: /** 69: * Creates a new JRadioButtonMenuItem with specified icon 70: * 71: * @param icon Icon to be used for this menu item 72: */ 73: public JRadioButtonMenuItem(Icon icon) 74: { 75: this(null, icon); 76: } 77: 78: /** 79: * Creates a new JRadioButtonMenuItem with specified label 80: * 81: * @param text Label for this menu item 82: */ 83: public JRadioButtonMenuItem(String text) 84: { 85: this(text, null); 86: } 87: 88: /** 89: * Creates a new JRadioButtonMenuItem using specified action 90: * 91: * @param action Action for this menu item 92: */ 93: public JRadioButtonMenuItem(Action action) 94: { 95: this(); 96: setAction(action); 97: } 98: 99: /** 100: * Creates a new JRadioButtonMenuItem with specified label and icon 101: * 102: * @param text Label for this menu item 103: * @param icon Icon for this menu item 104: */ 105: public JRadioButtonMenuItem(String text, Icon icon) 106: { 107: this(text, icon, false); 108: } 109: 110: /** 111: * Creates a new JRadioButtonMenuItem with specified label 112: * and marked selected if 'selected' is true. 113: * 114: * @param text Text for this menu item 115: * @param selected Selected state of this menu item 116: */ 117: public JRadioButtonMenuItem(String text, boolean selected) 118: { 119: this(text, null, selected); 120: } 121: 122: /** 123: * Creates a new JRadioButtonMenuItem with specified icon 124: * and given selected state 125: * 126: * @param icon Icon for this menu item 127: * @param selected Selected state for this menu item 128: */ 129: public JRadioButtonMenuItem(Icon icon, boolean selected) 130: { 131: this(null, icon, selected); 132: } 133: 134: /** 135: * Creates a new JRadioButtonMenuItem with specified label, 136: * icon and selected state. 137: * 138: * @param text Label for this menu item 139: * @param icon Icon to be use for this menu item 140: * @param selected selected state of this menu item 141: */ 142: public JRadioButtonMenuItem(String text, Icon icon, boolean selected) 143: { 144: super(text, icon); 145: setModel(new JToggleButton.ToggleButtonModel()); 146: model.setSelected(selected); 147: setFocusable(false); 148: } 149: 150: /** 151: * This method returns a name to identify which look and feel class will be 152: * the UI delegate for the menuItem. 153: * 154: * @return The Look and Feel classID. "JRadioButtonMenuItemUI" 155: */ 156: public String getUIClassID() 157: { 158: return uiClassID; 159: } 160: 161: /** 162: * This method overrides JComponent.requestFocus with an empty 163: * implementation, since JRadioButtonMenuItems should not 164: * receve focus in general. 165: */ 166: public void requestFocus() 167: { 168: // Should do nothing here 169: } 170: 171: /** 172: * Returns a string describing the attributes for the 173: * <code>JRadioButtonMenuItem</code> component, for use in debugging. The 174: * return value is guaranteed to be non-<code>null</code>, but the format of 175: * the string may vary between implementations. 176: * 177: * @return A string describing the attributes of the 178: * <code>JRadioButtonMenuItem</code>. 179: */ 180: protected String paramString() 181: { 182: // calling super seems to be sufficient here... 183: return super.paramString(); 184: } 185: 186: /** 187: * Returns the object that provides accessibility features for this 188: * <code>JRadioButtonMenuItem</code> component. 189: * 190: * @return The accessible context (an instance of 191: * {@link AccessibleJRadioButtonMenuItem}). 192: */ 193: public AccessibleContext getAccessibleContext() 194: { 195: if (accessibleContext == null) 196: accessibleContext = new AccessibleJRadioButtonMenuItem(); 197: 198: return accessibleContext; 199: } 200: 201: /** 202: * Provides the accessibility features for the 203: * <code>JRadioButtonMenuItem</code> component. 204: * 205: * @see JRadioButtonMenuItem#getAccessibleContext() 206: */ 207: protected class AccessibleJRadioButtonMenuItem extends AccessibleJMenuItem 208: { 209: private static final long serialVersionUID = 4381471510145292179L; 210: 211: /** 212: * Creates a new <code>AccessibleJRadioButtonMenuItem</code> instance. 213: */ 214: protected AccessibleJRadioButtonMenuItem() 215: { 216: // Nothing to do here. 217: } 218: 219: /** 220: * Returns the accessible role for the <code>JRadioButtonMenuItem</code> 221: * component. 222: * 223: * @return {@link AccessibleRole#RADIO_BUTTON}. 224: */ 225: public AccessibleRole getAccessibleRole() 226: { 227: return AccessibleRole.RADIO_BUTTON; 228: } 229: } 230: }