OSDN Git Service

2005-04-19 Roman Kennke <roman@kennke.org>
[pf3gnuchains/gcc-fork.git] / libjava / javax / swing / JRadioButtonMenuItem.java
1 /* JRadioButtonMenuItem.java --
2    Copyright (C) 2002, 2004 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., 59 Temple Place, Suite 330, Boston, MA
19 02111-1307 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 java.io.IOException;
42 import java.io.ObjectOutputStream;
43
44 import javax.accessibility.Accessible;
45 import javax.accessibility.AccessibleContext;
46 import javax.accessibility.AccessibleRole;
47
48 /**
49  * This class represents JRadioButtonMenuItem. Its behaviour is very similar
50  * to JRadioButton. Just like JRadioButton, user can check and uncheck this
51  * menu item by clicking on it. JRadioButtonMenuItem uses ToggleButtonModel
52  * to keep track of its selection. If the JRadioButtonMenuItem is included in
53  * the button group, then only one JRadioButtonMenuItem can be selected at
54  * one time.
55  */
56 public class JRadioButtonMenuItem extends JMenuItem implements Accessible
57 {
58   private static final long serialVersionUID = 8482658191548521743L;
59
60   /** name for the UI delegate for this radio button menu item. */
61   private static final String uiClassID = "RadioButtonMenuItemUI";
62
63   /**
64    * Creates a new JRadioButtonMenuItem object.
65    */
66   public JRadioButtonMenuItem()
67   {
68     this(null, null);
69   }
70
71   /**
72    * Creates a new JRadioButtonMenuItem with specified icon
73    *
74    * @param icon Icon to be used for this menu item
75    */
76   public JRadioButtonMenuItem(Icon icon)
77   {
78     this(null, icon);
79   }
80
81   /**
82    * Creates a new JRadioButtonMenuItem with specified label
83    *
84    * @param text Label for this menu item
85    */
86   public JRadioButtonMenuItem(String text)
87   {
88     this(text, null);
89   }
90
91   /**
92    * Creates a new JRadioButtonMenuItem using specified action
93    *
94    * @param action Action for this menu item
95    */
96   public JRadioButtonMenuItem(Action action)
97   {
98     this();
99     setAction(action);
100   }
101
102   /**
103    * Creates a new JRadioButtonMenuItem with specified label and icon
104    *
105    * @param text Label for this menu item
106    * @param icon Icon for this menu item
107    */
108   public JRadioButtonMenuItem(String text, Icon icon)
109   {
110     this(text, icon, false);
111   }
112
113   /**
114    * Creates a new JRadioButtonMenuItem with specified label
115    * and marked selected if 'selected' is true.
116    *
117    * @param text Text for this menu item
118    * @param selected Selected state of this menu item
119    */
120   public JRadioButtonMenuItem(String text, boolean selected)
121   {
122     this(text, null, selected);
123   }
124
125   /**
126    * Creates a new JRadioButtonMenuItem with specified icon
127    * and given selected state
128    *
129    * @param icon Icon for this menu item
130    * @param selected Selected state for this menu item
131    */
132   public JRadioButtonMenuItem(Icon icon, boolean selected)
133   {
134     this(null, icon, selected);
135   }
136
137   /**
138    * Creates a new JRadioButtonMenuItem with specified label,
139    * icon and selected state.
140    *
141    * @param text Label for this menu item
142    * @param icon Icon to be use for this menu item
143    * @param selected selected state of this menu item
144    */
145   public JRadioButtonMenuItem(String text, Icon icon, boolean selected)
146   {
147     super(text, icon);
148     setModel(new JToggleButton.ToggleButtonModel());
149     model.setSelected(selected);
150   }
151
152   private void writeObject(ObjectOutputStream stream) throws IOException
153   {
154   }
155
156   /**
157    * This method returns a name to identify which look and feel class will be
158    * the UI delegate for the menuItem.
159    *
160    * @return The Look and Feel classID. "JRadioButtonMenuItemUI"
161    */
162   public String getUIClassID()
163   {
164     return uiClassID;
165   }
166
167   /**
168    * This method overrides JComponent.requestFocus with an empty
169    * implementation, since JRadioButtonMenuItems should not
170    * receve focus in general.
171    */
172   public void requestFocus()
173   {
174     //  Should do nothing here
175   }
176
177   /**
178    * A string that describes this JRadioButtonMenuItem. Normally only used
179    * for debugging.
180    *
181    * @return A string describing this JRadioButtonMenuItem
182    */
183   protected String paramString()
184   {
185     return "JRadioButtonMenuItem";
186   }
187
188   public AccessibleContext getAccessibleContext()
189   {
190     if (accessibleContext == null)
191       accessibleContext = new AccessibleJRadioButtonMenuItem();
192
193     return accessibleContext;
194   }
195
196   protected class AccessibleJRadioButtonMenuItem extends AccessibleJMenuItem
197   {
198     private static final long serialVersionUID = 4381471510145292179L;
199
200     /**
201      * Creates a new AccessibleJRadioButtonMenuItem object.
202      */
203     protected AccessibleJRadioButtonMenuItem()
204     {
205     }
206
207     public AccessibleRole getAccessibleRole()
208     {
209       return AccessibleRole.RADIO_BUTTON;
210     }
211   }
212 }