OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [java/] [awt/] [CheckboxMenuItem.java] - Blame information for rev 771

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 771 jeremybenn
/* CheckboxMenuItem.java -- A menu option with a checkbox on it.
2
   Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005  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 java.awt;
40
 
41
import java.awt.event.ItemEvent;
42
import java.awt.event.ItemListener;
43
import java.awt.peer.CheckboxMenuItemPeer;
44
import java.util.EventListener;
45
 
46
import javax.accessibility.Accessible;
47
import javax.accessibility.AccessibleAction;
48
import javax.accessibility.AccessibleContext;
49
import javax.accessibility.AccessibleValue;
50
 
51
/**
52
  * This class implements a menu item that has a checkbox on it indicating
53
  * the selected state of some option.
54
  *
55
  * @author Aaron M. Renn (arenn@urbanophile.com)
56
  * @author Tom Tromey (tromey@redhat.com)
57
  */
58
public class CheckboxMenuItem extends MenuItem
59
  implements ItemSelectable, Accessible
60
{
61
 
62
/*
63
 * Static Variables
64
 */
65
 
66
/**
67
 * The number used to generate the name returned by getName.
68
 */
69
private static transient long next_chkmenuitem_number;
70
 
71
// Serialization constant
72
private static final long serialVersionUID = 6190621106981774043L;
73
 
74
/*
75
 * Instance Variables
76
 */
77
 
78
/**
79
  * @serial The state of the checkbox, with <code>true</code> being on and
80
  * <code>false</code> being off.
81
  */
82
private boolean state;
83
 
84
// List of registered ItemListeners
85
private transient ItemListener item_listeners;
86
 
87
/*************************************************************************/
88
 
89
/*
90
 * Constructors
91
 */
92
 
93
/**
94
  * Initializes a new instance of <code>CheckboxMenuItem</code> with no
95
  * label and an initial state of off.
96
  *
97
  * @exception HeadlessException If GraphicsEnvironment.isHeadless()
98
  * returns true.
99
  */
100
public
101
CheckboxMenuItem()
102
{
103
  this("", false);
104
}
105
 
106
/*************************************************************************/
107
 
108
/**
109
  * Initializes a new instance of <code>CheckboxMenuItem</code> with the
110
  * specified label and an initial state of off.
111
  *
112
  * @param label The label of the menu item.
113
  *
114
  * @exception HeadlessException If GraphicsEnvironment.isHeadless()
115
  * returns true.
116
  */
117
public
118
CheckboxMenuItem(String label)
119
{
120
  this(label, false);
121
}
122
 
123
/*************************************************************************/
124
 
125
/**
126
  * Initializes a new instance of <code>CheckboxMenuItem</code> with the
127
  * specified label and initial state.
128
  *
129
  * @param label The label of the menu item.
130
  * @param state The initial state of the menu item, where <code>true</code>
131
  * is on, and <code>false</code> is off.
132
  *
133
  * @exception HeadlessException If GraphicsEnvironment.isHeadless()
134
  * returns true.
135
  */
136
public
137
CheckboxMenuItem(String label, boolean state)
138
{
139
  super(label);
140
  this.state = state;
141
 
142
  if (GraphicsEnvironment.isHeadless())
143
    throw new HeadlessException ();
144
}
145
 
146
/*************************************************************************/
147
 
148
/*
149
 * Instance Methods
150
 */
151
 
152
/**
153
  * Returns the state of this menu item.
154
  *
155
  * @return The state of this menu item.
156
  */
157
public boolean
158
getState()
159
{
160
  return(state);
161
}
162
 
163
/*************************************************************************/
164
 
165
/**
166
  * Sets the state of this menu item.
167
  *
168
  * @param state The initial state of the menu item, where <code>true</code>
169
  * is on, and <code>false</code> is off.
170
  */
171
public synchronized void
172
setState(boolean state)
173
{
174
  this.state = state;
175
  if (peer != null)
176
    {
177
      CheckboxMenuItemPeer cp = (CheckboxMenuItemPeer) peer;
178
      cp.setState (state);
179
    }
180
}
181
 
182
/*************************************************************************/
183
 
184
/**
185
  * Returns an array of length 1 with the menu item label for this object
186
  * if the state is on.  Otherwise <code>null</code> is returned.
187
  *
188
  * @return An array with this menu item's label if it has a state of on,
189
  * or <code>null</code> otherwise.
190
  */
191
public Object[]
192
getSelectedObjects()
193
{
194
  if (state == false)
195
    return(null);
196
 
197
  Object[] obj = new Object[1];
198
  obj[0] = getLabel();
199
 
200
  return(obj);
201
}
202
 
203
/*************************************************************************/
204
 
205
/**
206
  * Create's this object's native peer
207
  */
208
public synchronized void
209
addNotify()
210
{
211
  if (peer == null)
212
    peer = getToolkit().createCheckboxMenuItem(this);
213
 
214
  super.addNotify ();
215
}
216
 
217
/*************************************************************************/
218
 
219
/**
220
  * Adds the specified listener to the list of registered item listeners
221
  * for this object.
222
  *
223
  * @param listener The listener to add.
224
  */
225
public synchronized void
226
addItemListener(ItemListener listener)
227
{
228
  item_listeners = AWTEventMulticaster.add(item_listeners, listener);
229
 
230
  enableEvents(AWTEvent.ITEM_EVENT_MASK);
231
}
232
 
233
/*************************************************************************/
234
 
235
/**
236
  * Removes the specified listener from the list of registered item
237
  * listeners for this object.
238
  *
239
  * @param listener The listener to remove.
240
  */
241
public synchronized void
242
removeItemListener(ItemListener listener)
243
{
244
  item_listeners = AWTEventMulticaster.remove(item_listeners, listener);
245
}
246
 
247
/*************************************************************************/
248
 
249
/**
250
  * Processes the specified event by calling <code>processItemEvent()</code>
251
  * if it is an instance of <code>ItemEvent</code> or calling the superclass
252
  * method otherwise.
253
  *
254
  * @param event The event to process.
255
  */
256
protected void
257
processEvent(AWTEvent event)
258
{
259
  if (event instanceof ItemEvent)
260
    processItemEvent((ItemEvent)event);
261
  else
262
    super.processEvent(event);
263
}
264
 
265
/*************************************************************************/
266
 
267
/**
268
  * Processes the specified event by dispatching it to any registered listeners.
269
  *
270
  * @param event The event to process.
271
  */
272
protected void
273
processItemEvent(ItemEvent event)
274
{
275
  if (item_listeners != null)
276
    item_listeners.itemStateChanged(event);
277
}
278
 
279
void
280
dispatchEventImpl(AWTEvent e)
281
{
282
  if (e instanceof ItemEvent)
283
    {
284
      synchronized (this)
285
        {
286
          state = (((ItemEvent) e).getStateChange() == ItemEvent.SELECTED);
287
        }
288
    }
289
 
290
  if (e.id <= ItemEvent.ITEM_LAST
291
      && e.id >= ItemEvent.ITEM_FIRST
292
      && (item_listeners != null
293
          || (eventMask & AWTEvent.ITEM_EVENT_MASK) != 0))
294
    processEvent(e);
295
  else
296
    super.dispatchEventImpl(e);
297
}
298
 
299
/*************************************************************************/
300
 
301
/**
302
  * Returns a debugging string for this object.
303
  *
304
  * @return A debugging string for this object.
305
  */
306
public String
307
paramString()
308
{
309
  return ("label=" + getLabel() + ",state=" + state
310
          + "," + super.paramString());
311
}
312
 
313
  /**
314
   * Returns an array of all the objects currently registered as FooListeners
315
   * upon this <code>CheckboxMenuItem</code>. FooListeners are registered using
316
   * the addFooListener method.
317
   *
318
   * @exception ClassCastException If listenerType doesn't specify a class or
319
   * interface that implements java.util.EventListener.
320
   */
321
  public <T extends EventListener> T[] getListeners (Class<T> listenerType)
322
  {
323
    if (listenerType == ItemListener.class)
324
      return AWTEventMulticaster.getListeners (item_listeners, listenerType);
325
 
326
    return super.getListeners (listenerType);
327
  }
328
 
329
  /**
330
   * Returns an aray of all item listeners currently registered to this
331
   * <code>CheckBoxMenuItem</code>.
332
   */
333
  public ItemListener[] getItemListeners ()
334
  {
335
    return (ItemListener[]) getListeners (ItemListener.class);
336
  }
337
 
338
 
339
  protected class AccessibleAWTCheckboxMenuItem extends AccessibleAWTMenuItem
340
    implements AccessibleAction, AccessibleValue
341
  {
342
    // I think the base class provides the necessary implementation
343
 
344
    private static final long serialVersionUID = -1122642964303476L;
345
  }
346
 
347
  /**
348
   * Gets the AccessibleContext associated with this <code>CheckboxMenuItem</code>.
349
   * The context is created, if necessary.
350
   *
351
   * @return the associated context
352
   */
353
  public AccessibleContext getAccessibleContext()
354
  {
355
    /* Create the context if this is the first request */
356
    if (accessibleContext == null)
357
      accessibleContext = new AccessibleAWTCheckboxMenuItem();
358
    return accessibleContext;
359
  }
360
 
361
  /**
362
   * Generate a unique name for this <code>CheckboxMenuItem</code>.
363
   *
364
   * @return A unique name for this <code>CheckboxMenuItem</code>.
365
   */
366
  String generateName()
367
  {
368
    return "chkmenuitem" + getUniqueLong();
369
  }
370
 
371
  private static synchronized long getUniqueLong()
372
  {
373
    return next_chkmenuitem_number++;
374
  }
375
 
376
} // class CheckboxMenuItem

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.