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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libjava/] [classpath/] [java/] [awt/] [Menu.java] - Blame information for rev 14

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 jlechner
/* Menu.java -- A Java AWT Menu
2
   Copyright (C) 1999, 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., 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.peer.MenuPeer;
42
import java.io.Serializable;
43
import java.util.Enumeration;
44
import java.util.Vector;
45
 
46
import javax.accessibility.AccessibleContext;
47
import javax.accessibility.AccessibleRole;
48
 
49
/**
50
  * This class represents a pull down or tear off menu in Java's AWT.
51
  *
52
  * @author Aaron M. Renn (arenn@urbanophile.com)
53
  */
54
public class Menu extends MenuItem implements MenuContainer, Serializable
55
{
56
 
57
/*
58
 * Static Variables
59
 */
60
 
61
// Serialization Constant
62
private static final long serialVersionUID = -8809584163345499784L;
63
 
64
/*************************************************************************/
65
 
66
/*
67
 * Instance Variables
68
 */
69
 
70
/**
71
  * @serial The actual items in the menu
72
  */
73
private Vector items = new Vector();
74
 
75
/**
76
  * @serial Flag indicating whether or not this menu is a tear off
77
  */
78
private boolean tearOff;
79
 
80
/**
81
  * @serial Indicates whether or not this is a help menu.
82
  */
83
private boolean isHelpMenu;
84
 
85
  /*
86
   * @serial Unused in this implementation, but present in Sun's
87
   * serialization spec.  Value obtained via reflection.
88
   */
89
  private int menuSerializedDataVersion = 1;
90
 
91
static final transient String separatorLabel = "-";
92
 
93
/*************************************************************************/
94
 
95
/*
96
 * Constructors
97
 */
98
 
99
/**
100
  * Initializes a new instance of <code>Menu</code> with no label and that
101
  * is not a tearoff;
102
  *
103
  * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
104
  */
105
public
106
Menu()
107
{
108
}
109
 
110
/*************************************************************************/
111
 
112
/**
113
  * Initializes a new instance of <code>Menu</code> that is not a tearoff and
114
  * that has the specified label.
115
  *
116
  * @param label The menu label.
117
  *
118
  * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
119
  */
120
public
121
Menu(String label)
122
{
123
  this(label, false);
124
}
125
 
126
/*************************************************************************/
127
 
128
/**
129
  * Initializes a new instance of <code>Menu</code> with the specified
130
  * label and tearoff status.
131
  *
132
  * @param label The label for this menu
133
  * @param isTearOff <code>true</code> if this menu is a tear off menu,
134
  * <code>false</code> otherwise.
135
  *
136
  * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
137
  */
138
public
139
Menu(String label, boolean isTearOff)
140
{
141
  super(label);
142
 
143
  tearOff = isTearOff;
144
 
145
  if (label.equals("Help"))
146
    isHelpMenu = true;
147
 
148
  if (GraphicsEnvironment.isHeadless())
149
    throw new HeadlessException ();
150
}
151
 
152
/*************************************************************************/
153
 
154
/*
155
 * Instance Methods
156
 */
157
 
158
/**
159
  * Tests whether or not this menu is a tearoff.
160
  *
161
  * @return <code>true</code> if this menu is a tearoff, <code>false</code>
162
  * otherwise.
163
  */
164
public boolean
165
isTearOff()
166
{
167
  return(tearOff);
168
}
169
 
170
/*************************************************************************/
171
 
172
/**
173
  * Returns the number of items in this menu.
174
  *
175
  * @return The number of items in this menu.
176
  */
177
public int
178
getItemCount()
179
{
180
  return countItems ();
181
}
182
 
183
/**
184
 * Returns the number of items in this menu.
185
 *
186
 * @return The number of items in this menu.
187
 *
188
 * @deprecated As of JDK 1.1, replaced by getItemCount().
189
 */
190
public int countItems ()
191
{
192
  return items.size ();
193
}
194
 
195
/*************************************************************************/
196
 
197
/**
198
  * Returns the item at the specified index.
199
  *
200
  * @return The item at the specified index.
201
  *
202
  * @exception ArrayIndexOutOfBoundsException If the index value is not valid.
203
  */
204
public MenuItem
205
getItem(int index)
206
{
207
  return((MenuItem)items.elementAt(index));
208
}
209
 
210
/*************************************************************************/
211
 
212
/**
213
  * Adds the specified item to this menu.  If it was previously part of
214
  * another menu, it is first removed from that menu.
215
  *
216
  * @param item The new item to add.
217
  *
218
  * @return The item that was added.
219
  */
220
public MenuItem
221
add(MenuItem item)
222
{
223
  items.addElement(item);
224
  if (item.parent != null)
225
    {
226
      item.parent.remove(item);
227
    }
228
  item.parent = this;
229
 
230
  if (peer != null)
231
    {
232
      MenuPeer mp = (MenuPeer) peer;
233
      mp.addItem(item);
234
    }
235
 
236
  return item;
237
}
238
 
239
/*************************************************************************/
240
 
241
/**
242
  * Add an item with the specified label to this menu.
243
  *
244
  * @param label The label of the menu item to add.
245
  */
246
public void
247
add(String label)
248
{
249
  add(new MenuItem(label));
250
}
251
 
252
/*************************************************************************/
253
 
254
/**
255
  * Inserts the specified menu item into this menu at the specified index.
256
  *
257
  * @param item The menu item to add.
258
  * @param index The index of the menu item.
259
  *
260
  * @exception IllegalArgumentException If the index is less than zero.
261
  * @exception ArrayIndexOutOfBoundsException If the index is otherwise invalid.
262
  */
263
public void
264
insert(MenuItem item, int index)
265
{
266
  if (index < 0)
267
    throw new IllegalArgumentException("Index is less than zero");
268
 
269
  MenuPeer peer = (MenuPeer) getPeer();
270
  if (peer == null)
271
    return;
272
 
273
  int count = getItemCount ();
274
 
275
  if (index >= count)
276
    peer.addItem (item);
277
  else
278
    {
279
      for (int i = count - 1; i >= index; i--)
280
        peer.delItem (i);
281
 
282
      peer.addItem (item);
283
 
284
      for (int i = index; i < count; i++)
285
        peer.addItem ((MenuItem) items.elementAt (i));
286
    }
287
 
288
  items.insertElementAt(item, index);
289
}
290
 
291
/*************************************************************************/
292
 
293
/**
294
  * Inserts an item with the specified label into this menu at the specified index.
295
  *
296
  * @param label The label of the item to add.
297
  * @param index The index of the menu item.
298
  *
299
  * @exception IllegalArgumentException If the index is less than zero.
300
  * @exception ArrayIndexOutOfBoundsException If the index is otherwise invalid.
301
  */
302
public void
303
insert(String label, int index)
304
{
305
  insert(new MenuItem(label), index);
306
}
307
 
308
/*************************************************************************/
309
 
310
/**
311
  * Adds a separator bar at the current menu location.
312
  */
313
public void
314
addSeparator()
315
{
316
  add(new MenuItem(separatorLabel));
317
}
318
 
319
/*************************************************************************/
320
 
321
/**
322
  * Inserts a separator bar at the specified index value.
323
  *
324
  * @param index The index at which to insert a separator bar.
325
  *
326
  * @exception IllegalArgumentException If the index is less than zero.
327
  * @exception ArrayIndexOutOfBoundsException If the index is otherwise invalid.
328
  */
329
public void
330
insertSeparator(int index)
331
{
332
  insert(new MenuItem(separatorLabel), index);
333
}
334
 
335
/*************************************************************************/
336
 
337
/**
338
  * Deletes the item at the specified index from this menu.
339
  *
340
  * @param index The index of the item to remove.
341
  *
342
  * @exception ArrayIndexOutOfBoundsException If the index is otherwise invalid.
343
  */
344
public synchronized void
345
remove(int index)
346
{
347
  items.removeElementAt(index);
348
 
349
  MenuPeer mp = (MenuPeer)getPeer();
350
  if (mp != null)
351
    mp.delItem(index);
352
}
353
 
354
/*************************************************************************/
355
 
356
/**
357
  * Removes the specifed item from the menu.  If the specified component
358
  * does not exist, this method does nothing.
359
  *
360
  * @param item The component to remove.
361
  */
362
public void
363
remove(MenuComponent item)
364
{
365
  int index = items.indexOf(item);
366
  if (index == -1)
367
    return;
368
 
369
  remove(index);
370
}
371
 
372
/*************************************************************************/
373
 
374
/**
375
  * Removes all the elements from this menu.
376
  */
377
public synchronized void
378
removeAll()
379
{
380
  int count = getItemCount();
381
  for(int i = 0; i < count; i++)
382
    {
383
      // We must always remove item 0.
384
      remove(0);
385
    }
386
}
387
 
388
/*************************************************************************/
389
 
390
/**
391
  * Creates the native peer for this object.
392
  */
393
public void
394
addNotify()
395
{
396
  if (peer == null)
397
    peer = getToolkit().createMenu(this);
398
  Enumeration e = items.elements();
399
  while (e.hasMoreElements())
400
  {
401
    MenuItem mi = (MenuItem)e.nextElement();
402
    mi.addNotify();
403
  }
404
  super.addNotify ();
405
}
406
 
407
/*************************************************************************/
408
 
409
/**
410
  * Destroys the native peer for this object.
411
  */
412
public void
413
removeNotify()
414
{
415
  Enumeration e = items.elements();
416
  while (e.hasMoreElements())
417
  {
418
    MenuItem mi = (MenuItem) e.nextElement();
419
    mi.removeNotify();
420
  }
421
  super.removeNotify();
422
}
423
 
424
/*************************************************************************/
425
 
426
/**
427
  * Returns a debugging string for this menu.
428
  *
429
  * @return A debugging string for this menu.
430
  */
431
public String
432
paramString()
433
{
434
  return (",tearOff=" + tearOff + ",isHelpMenu=" + isHelpMenu
435
          + super.paramString());
436
}
437
 
438
  /**
439
   * Basic Accessibility class for Menu.  Details get provided in derived
440
   * classes.
441
   */
442
  protected class AccessibleAWTMenu extends AccessibleAWTMenuItem
443
  {
444
    private static final long serialVersionUID = 5228160894980069094L;
445
 
446
    protected AccessibleAWTMenu()
447
    {
448
    }
449
 
450
    public AccessibleRole getAccessibleRole()
451
    {
452
      return AccessibleRole.MENU;
453
    }
454
  }
455
 
456
  /**
457
   * Gets the AccessibleContext associated with this <code>Menu</code>.
458
   * The context is created, if necessary.
459
   *
460
   * @return the associated context
461
   */
462
  public AccessibleContext getAccessibleContext()
463
  {
464
    /* Create the context if this is the first request */
465
    if (accessibleContext == null)
466
      accessibleContext = new AccessibleAWTMenu();
467
    return accessibleContext;
468
  }
469
 
470
} // class Menu

powered by: WebSVN 2.1.0

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