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

Subversion Repositories openrisc

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 771 jeremybenn
/* MenuBar.java -- An AWT menu bar class
2
   Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2006
3
   Free Software Foundation, Inc.
4
 
5
This file is part of GNU Classpath.
6
 
7
GNU Classpath is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 2, or (at your option)
10
any later version.
11
 
12
GNU Classpath is distributed in the hope that it will be useful, but
13
WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
General Public License for more details.
16
 
17
You should have received a copy of the GNU General Public License
18
along with GNU Classpath; see the file COPYING.  If not, write to the
19
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20
02110-1301 USA.
21
 
22
Linking this library statically or dynamically with other modules is
23
making a combined work based on this library.  Thus, the terms and
24
conditions of the GNU General Public License cover the whole
25
combination.
26
 
27
As a special exception, the copyright holders of this library give you
28
permission to link this library with independent modules to produce an
29
executable, regardless of the license terms of these independent
30
modules, and to copy and distribute the resulting executable under
31
terms of your choice, provided that you also meet, for each linked
32
independent module, the terms and conditions of the license of that
33
module.  An independent module is a module which is not derived from
34
or based on this library.  If you modify this library, you may extend
35
this exception to your version of the library, but you are not
36
obligated to do so.  If you do not wish to do so, delete this
37
exception statement from your version. */
38
 
39
 
40
package java.awt;
41
 
42
import java.awt.peer.MenuBarPeer;
43
 
44
import java.io.Serializable;
45
import java.util.Enumeration;
46
import java.util.Vector;
47
 
48
import javax.accessibility.Accessible;
49
import javax.accessibility.AccessibleContext;
50
import javax.accessibility.AccessibleRole;
51
 
52
/**
53
  * This class implements a menu bar in the AWT system.
54
  *
55
  * @author Aaron M. Renn (arenn@urbanophile.com)
56
  * @author Tom Tromey (tromey@redhat.com)
57
  * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
58
  */
59
public class MenuBar extends MenuComponent
60
  implements MenuContainer, Serializable, Accessible
61
{
62
 
63
  // Serialization Constant
64
  private static final long serialVersionUID = -4930327919388951260L;
65
 
66
  /**
67
   * The number used to generate the name returned by getName.
68
   */
69
  private static transient long next_menubar_number;
70
 
71
  /**
72
   * @serial The menu used for providing help information
73
   */
74
  private Menu helpMenu;
75
 
76
  /**
77
   * @serial The menus contained in this menu bar.
78
   */
79
  private Vector menus = new Vector();
80
 
81
  /**
82
   * Initializes a new instance of <code>MenuBar</code>.
83
   *
84
   * @throws HeadlessException if GraphicsEnvironment.isHeadless() is true
85
   */
86
  public MenuBar()
87
  {
88
    if (GraphicsEnvironment.isHeadless())
89
      throw new HeadlessException();
90
  }
91
 
92
  /**
93
   * Returns the help menu for this menu bar.  This may be <code>null</code>.
94
   *
95
   * @return the help menu for this menu bar
96
   */
97
  public Menu getHelpMenu()
98
  {
99
    return helpMenu;
100
  }
101
 
102
  /**
103
   * Sets the help menu for this menu bar.
104
   *
105
   * @param menu the new help menu for this menu bar
106
   */
107
  public synchronized void setHelpMenu(Menu menu)
108
  {
109
    MenuBarPeer myPeer = (MenuBarPeer) getPeer ();
110
 
111
    if (helpMenu != null)
112
      {
113
        if (myPeer != null)
114
          helpMenu.removeNotify();
115
        helpMenu.setParent(null);
116
      }
117
    helpMenu = menu;
118
 
119
    MenuContainer parent = menu.getParent();
120
    if (parent != null)
121
      parent.remove(menu);
122
    menu.setParent(this);
123
 
124
    if (myPeer != null)
125
      {
126
        menu.addNotify();
127
        myPeer.addHelpMenu(menu);
128
      }
129
  }
130
 
131
  /**
132
   * Add a menu to this MenuBar.  If the menu has already has a
133
   * parent, it is first removed from its old parent before being
134
   * added.
135
   *
136
   * @param menu the menu to add
137
   *
138
   * @return the menu that was added
139
   */
140
  public synchronized Menu add(Menu menu)
141
  {
142
    MenuBarPeer myPeer = (MenuBarPeer) getPeer ();
143
 
144
    MenuContainer parent = menu.getParent();
145
    if (parent != null)
146
      parent.remove(menu);
147
 
148
    menus.addElement(menu);
149
    menu.setParent(this);
150
 
151
    if (myPeer != null)
152
      {
153
        menu.addNotify();
154
        myPeer.addMenu(menu);
155
      }
156
    return menu;
157
  }
158
 
159
  /**
160
   * Removes the menu at the specified index.
161
   *
162
   * @param index the index of the menu to remove from the menu bar
163
   */
164
  public synchronized void remove(int index)
165
  {
166
    Menu m = (Menu) menus.remove(index);
167
    MenuBarPeer mp = (MenuBarPeer) getPeer();
168
 
169
    if (mp != null)
170
      m.removeNotify();
171
 
172
    m.setParent(null);
173
 
174
    if (mp != null)
175
      mp.delMenu(index);
176
  }
177
 
178
  /**
179
   * Removes the specified menu from the menu bar.
180
   *
181
   * @param menu the menu to remove from the menu bar
182
   */
183
  public void remove(MenuComponent menu)
184
  {
185
    int index = menus.indexOf(menu);
186
    if (index == -1)
187
      return;
188
 
189
    remove(index);
190
  }
191
 
192
  /**
193
   * Returns the number of elements in this menu bar.
194
   *
195
   * @return the number of elements in the menu bar
196
   */
197
  public int getMenuCount()
198
  {
199
    return countMenus();
200
  }
201
 
202
  /**
203
   * Returns the number of elements in this menu bar.
204
   *
205
   * @return the number of elements in the menu bar
206
   *
207
   * @deprecated This method is deprecated in favor of
208
   *             <code>getMenuCount()</code>.
209
   */
210
  public int countMenus()
211
  {
212
    return menus.size() + (getHelpMenu() == null ? 0 : 1);
213
  }
214
 
215
  /**
216
   * Returns the menu at the specified index.
217
   *
218
   * @param index the index of the menu
219
   *
220
   * @return the requested menu
221
   *
222
   * @throws ArrayIndexOutOfBoundsException if the index is not valid
223
   */
224
  public Menu getMenu(int index)
225
  {
226
    return (Menu) menus.elementAt(index);
227
  }
228
 
229
  /**
230
   * Creates this object's native peer.
231
   */
232
  public void addNotify()
233
  {
234
    MenuBarPeer peer = (MenuBarPeer) getPeer();
235
    if (peer == null)
236
      {
237
        peer = getToolkit().createMenuBar(this);
238
        setPeer(peer);
239
      }
240
 
241
    Enumeration e = menus.elements();
242
    while (e.hasMoreElements())
243
      {
244
        Menu mi = (Menu)e.nextElement();
245
        mi.addNotify();
246
        peer.addMenu(mi);
247
      }
248
 
249
    if (helpMenu != null)
250
      {
251
        helpMenu.addNotify();
252
        peer.addHelpMenu(helpMenu);
253
      }
254
  }
255
 
256
  /**
257
   * Destroys this object's native peer.
258
   */
259
  public void removeNotify()
260
  {
261
    Enumeration e = menus.elements();
262
    while (e.hasMoreElements())
263
      {
264
        Menu mi = (Menu) e.nextElement();
265
        mi.removeNotify();
266
      }
267
    super.removeNotify();
268
  }
269
 
270
  /**
271
   * Returns a list of all shortcuts for the menus in this menu bar.
272
   *
273
   * @return a list of all shortcuts for the menus in this menu bar
274
   */
275
  public synchronized Enumeration<MenuShortcut> shortcuts()
276
  {
277
    Vector shortcuts = new Vector();
278
    Enumeration e = menus.elements();
279
 
280
    while (e.hasMoreElements())
281
      {
282
        Menu menu = (Menu)e.nextElement();
283
        if (menu.getShortcut() != null)
284
          shortcuts.addElement(menu.getShortcut());
285
      }
286
 
287
    return shortcuts.elements();
288
  }
289
 
290
  /**
291
   * Returns the menu item for the specified shortcut, or <code>null</code>
292
   * if no such item exists.
293
   *
294
   * @param shortcut the shortcut to return the menu item for
295
   *
296
   * @return the menu item for the specified shortcut
297
   */
298
  public MenuItem getShortcutMenuItem(MenuShortcut shortcut)
299
  {
300
    Enumeration e = menus.elements();
301
 
302
    while (e.hasMoreElements())
303
      {
304
        Menu menu = (Menu) e.nextElement();
305
        MenuShortcut s = menu.getShortcut();
306
        if ((s != null) && s.equals(shortcut))
307
          return menu;
308
      }
309
 
310
    return null;
311
  }
312
 
313
  /**
314
   * Deletes the specified menu shortcut.
315
   *
316
   * @param shortcut the shortcut to delete
317
   */
318
  public void deleteShortcut(MenuShortcut shortcut)
319
  {
320
    MenuItem it;
321
    // This is a slow implementation, but it probably doesn't matter.
322
    while ((it = getShortcutMenuItem (shortcut)) != null)
323
      it.deleteShortcut();
324
  }
325
 
326
  /**
327
   * Gets the AccessibleContext associated with this <code>MenuBar</code>.
328
   * The context is created, if necessary.
329
   *
330
   * @return the associated context
331
   */
332
  public AccessibleContext getAccessibleContext()
333
  {
334
    // Create the context if this is the first request.
335
    if (accessibleContext == null)
336
      accessibleContext = new AccessibleAWTMenuBar();
337
    return accessibleContext;
338
  }
339
 
340
  /**
341
   * Generate a unique name for this <code>MenuBar</code>.
342
   *
343
   * @return A unique name for this <code>MenuBar</code>.
344
   */
345
  String generateName()
346
  {
347
    return "menubar" + getUniqueLong();
348
  }
349
 
350
  private static synchronized long getUniqueLong()
351
  {
352
    return next_menubar_number++;
353
  }
354
 
355
  /**
356
   * This class provides accessibility support for AWT menu bars.
357
   *
358
   * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
359
   */
360
  protected class AccessibleAWTMenuBar
361
    extends AccessibleAWTMenuComponent
362
  {
363
 
364
    /**
365
     * Compatible with JDK 1.4.2 revision 5
366
     */
367
    private static final long serialVersionUID = -8577604491830083815L;
368
 
369
    /**
370
     * This is the default constructor, which simply calls the default
371
     * constructor of the superclass.
372
     */
373
    protected AccessibleAWTMenuBar()
374
    {
375
      super();
376
    }
377
 
378
    /**
379
     * Returns the accessible role relating to the menu bar.
380
     *
381
     * @return <code>AccessibleRole.MENU_BAR</code>
382
     */
383
    public AccessibleRole getAccessibleRole()
384
    {
385
      return AccessibleRole.MENU_BAR;
386
    }
387
 
388
  }
389
 
390
}

powered by: WebSVN 2.1.0

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