History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/javax/swing/JCheckBoxMenuItem.java (1 of 18352 files). Show all

Unified · Split

java/pkg/javax/swing/JCheckBoxMenuItem.java+307−0
@@ -0,0 +1,307 @@
1+/*
2+ * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+package javax.swing;
26+
27+import java.util.EventListener;
28+
29+import java.awt.*;
30+import java.awt.event.*;
31+import java.awt.image.*;
32+
33+import java.io.ObjectOutputStream;
34+import java.io.ObjectInputStream;
35+import java.io.IOException;
36+
37+import javax.swing.plaf.*;
38+import javax.accessibility.*;
39+
40+
41+/**
42+ * A menu item that can be selected or deselected. If selected, the menu
43+ * item typically appears with a checkmark next to it. If unselected or
44+ * deselected, the menu item appears without a checkmark. Like a regular
45+ * menu item, a check box menu item can have either text or a graphic
46+ * icon associated with it, or both.
47+ * <p>
48+ * Either <code>isSelected</code>/<code>setSelected</code> or
49+ * <code>getState</code>/<code>setState</code> can be used
50+ * to determine/specify the menu item's selection state. The
51+ * preferred methods are <code>isSelected</code> and
52+ * <code>setSelected</code>, which work for all menus and buttons.
53+ * The <code>getState</code> and <code>setState</code> methods exist for
54+ * compatibility with other component sets.
55+ * <p>
56+ * Menu items can be configured, and to some degree controlled, by
57+ * <code><a href="Action.html">Action</a></code>s. Using an
58+ * <code>Action</code> with a menu item has many benefits beyond directly
59+ * configuring a menu item. Refer to <a href="Action.html#buttonActions">
60+ * Swing Components Supporting <code>Action</code></a> for more
61+ * details, and you can find more information in <a
62+ * href="http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html">How
63+ * to Use Actions</a>, a section in <em>The Java Tutorial</em>.
64+ * <p>
65+ * For further information and examples of using check box menu items,
66+ * see <a
67+ href="http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html">How to Use Menus</a>,
68+ * a section in <em>The Java Tutorial.</em>
69+ * <p>
70+ * <strong>Warning:</strong> Swing is not thread safe. For more
71+ * information see <a
72+ * href="package-summary.html#threading">Swing's Threading
73+ * Policy</a>.
74+ * <p>
75+ * <strong>Warning:</strong>
76+ * Serialized objects of this class will not be compatible with
77+ * future Swing releases. The current serialization support is
78+ * appropriate for short term storage or RMI between applications running
79+ * the same version of Swing. As of 1.4, support for long term storage
80+ * of all JavaBeans<sup><font size="-2">TM</font></sup>
81+ * has been added to the <code>java.beans</code> package.
82+ * Please see {@link java.beans.XMLEncoder}.
83+ *
84+ * @beaninfo
85+ * attribute: isContainer false
86+ * description: A menu item which can be selected or deselected.
87+ *
88+ * @author Georges Saab
89+ * @author David Karlton
90+ */
91+public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
92+ Accessible
93+{
94+ /**
95+ * @see #getUIClassID
96+ * @see #readObject
97+ */
98+ private static final String uiClassID = "CheckBoxMenuItemUI";
99+
100+ /**
101+ * Creates an initially unselected check box menu item with no set text or icon.
102+ */
103+ public JCheckBoxMenuItem() {
104+ this(null, null, false);
105+ }
106+
107+ /**
108+ * Creates an initially unselected check box menu item with an icon.
109+ *
110+ * @param icon the icon of the CheckBoxMenuItem.
111+ */
112+ public JCheckBoxMenuItem(Icon icon) {
113+ this(null, icon, false);
114+ }
115+
116+ /**
117+ * Creates an initially unselected check box menu item with text.
118+ *
119+ * @param text the text of the CheckBoxMenuItem
120+ */
121+ public JCheckBoxMenuItem(String text) {
122+ this(text, null, false);
123+ }
124+
125+ /**
126+ * Creates a menu item whose properties are taken from the
127+ * Action supplied.
128+ *
129+ * @since 1.3
130+ */
131+ public JCheckBoxMenuItem(Action a) {
132+ this();
133+ setAction(a);
134+ }
135+
136+ /**
137+ * Creates an initially unselected check box menu item with the specified text and icon.
138+ *
139+ * @param text the text of the CheckBoxMenuItem
140+ * @param icon the icon of the CheckBoxMenuItem
141+ */
142+ public JCheckBoxMenuItem(String text, Icon icon) {
143+ this(text, icon, false);
144+ }
145+
146+ /**
147+ * Creates a check box menu item with the specified text and selection state.
148+ *
149+ * @param text the text of the check box menu item.
150+ * @param b the selected state of the check box menu item
151+ */
152+ public JCheckBoxMenuItem(String text, boolean b) {
153+ this(text, null, b);
154+ }
155+
156+ /**
157+ * Creates a check box menu item with the specified text, icon, and selection state.
158+ *
159+ * @param text the text of the check box menu item
160+ * @param icon the icon of the check box menu item
161+ * @param b the selected state of the check box menu item
162+ */
163+ public JCheckBoxMenuItem(String text, Icon icon, boolean b) {
164+ super(text, icon);
165+ setModel(new JToggleButton.ToggleButtonModel());
166+ setSelected(b);
167+ setFocusable(false);
168+ }
169+
170+ /**
171+ * Returns the name of the L&F class
172+ * that renders this component.
173+ *
174+ * @return "CheckBoxMenuItemUI"
175+ * @see JComponent#getUIClassID
176+ * @see UIDefaults#getUI
177+ */
178+ public String getUIClassID() {
179+ return uiClassID;
180+ }
181+
182+ /**
183+ * Returns the selected-state of the item. This method
184+ * exists for AWT compatibility only. New code should
185+ * use isSelected() instead.
186+ *
187+ * @return true if the item is selected
188+ */
189+ public boolean getState() {
190+ return isSelected();
191+ }
192+
193+ /**
194+ * Sets the selected-state of the item. This method
195+ * exists for AWT compatibility only. New code should
196+ * use setSelected() instead.
197+ *
198+ * @param b a boolean value indicating the item's
199+ * selected-state, where true=selected
200+ * @beaninfo
201+ * description: The selection state of the check box menu item
202+ * hidden: true
203+ */
204+ public synchronized void setState(boolean b) {
205+ setSelected(b);
206+ }
207+
208+
209+ /**
210+ * Returns an array (length 1) containing the check box menu item
211+ * label or null if the check box is not selected.
212+ *
213+ * @return an array containing one Object -- the text of the menu item
214+ * -- if the item is selected; otherwise null
215+ */
216+ public Object[] getSelectedObjects() {
217+ if (isSelected() == false)
218+ return null;
219+ Object[] selectedObjects = new Object[1];
220+ selectedObjects[0] = getText();
221+ return selectedObjects;
222+ }
223+
224+ /**
225+ * See readObject() and writeObject() in JComponent for more
226+ * information about serialization in Swing.
227+ */
228+ private void writeObject(ObjectOutputStream s) throws IOException {
229+ s.defaultWriteObject();
230+ if (getUIClassID().equals(uiClassID)) {
231+ byte count = JComponent.getWriteObjCounter(this);
232+ JComponent.setWriteObjCounter(this, --count);
233+ if (count == 0 && ui != null) {
234+ ui.installUI(this);
235+ }
236+ }
237+ }
238+
239+
240+ /**
241+ * Returns a string representation of this JCheckBoxMenuItem. This method
242+ * is intended to be used only for debugging purposes, and the
243+ * content and format of the returned string may vary between
244+ * implementations. The returned string may be empty but may not
245+ * be <code>null</code>.
246+ *
247+ * @return a string representation of this JCheckBoxMenuItem.
248+ */
249+ protected String paramString() {
250+ return super.paramString();
251+ }
252+
253+ /**
254+ * Overriden to return true, JCheckBoxMenuItem supports
255+ * the selected state.
256+ */
257+ boolean shouldUpdateSelectedStateFromAction() {
258+ return true;
259+ }
260+
261+/////////////////
262+// Accessibility support
263+////////////////
264+
265+ /**
266+ * Gets the AccessibleContext associated with this JCheckBoxMenuItem.
267+ * For JCheckBoxMenuItems, the AccessibleContext takes the form of an
268+ * AccessibleJCheckBoxMenuItem.
269+ * A new AccessibleJCheckBoxMenuItem instance is created if necessary.
270+ *
271+ * @return an AccessibleJCheckBoxMenuItem that serves as the
272+ * AccessibleContext of this AccessibleJCheckBoxMenuItem
273+ */
274+ public AccessibleContext getAccessibleContext() {
275+ if (accessibleContext == null) {
276+ accessibleContext = new AccessibleJCheckBoxMenuItem();
277+ }
278+ return accessibleContext;
279+ }
280+
281+ /**
282+ * This class implements accessibility support for the
283+ * <code>JCheckBoxMenuItem</code> class. It provides an implementation
284+ * of the Java Accessibility API appropriate to checkbox menu item
285+ * user-interface elements.
286+ * <p>
287+ * <strong>Warning:</strong>
288+ * Serialized objects of this class will not be compatible with
289+ * future Swing releases. The current serialization support is
290+ * appropriate for short term storage or RMI between applications running
291+ * the same version of Swing. As of 1.4, support for long term storage
292+ * of all JavaBeans<sup><font size="-2">TM</font></sup>
293+ * has been added to the <code>java.beans</code> package.
294+ * Please see {@link java.beans.XMLEncoder}.
295+ */
296+ protected class AccessibleJCheckBoxMenuItem extends AccessibleJMenuItem {
297+ /**
298+ * Get the role of this object.
299+ *
300+ * @return an instance of AccessibleRole describing the role of the
301+ * object
302+ */
303+ public AccessibleRole getAccessibleRole() {
304+ return AccessibleRole.CHECK_BOX;
305+ }
306+ } // inner class AccessibleJCheckBoxMenuItem
307+}