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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libjava/] [classpath/] [javax/] [swing/] [plaf/] [basic/] [BasicMenuBarUI.java] - Blame information for rev 14

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 jlechner
/* BasicMenuBarUI.java --
2
   Copyright (C) 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 javax.swing.plaf.basic;
40
 
41
import java.awt.Dimension;
42
import java.awt.event.ContainerEvent;
43
import java.awt.event.ContainerListener;
44
import java.awt.event.MouseEvent;
45
import java.beans.PropertyChangeEvent;
46
import java.beans.PropertyChangeListener;
47
 
48
import javax.swing.BoxLayout;
49
import javax.swing.JComponent;
50
import javax.swing.JMenu;
51
import javax.swing.JMenuBar;
52
import javax.swing.LookAndFeel;
53
import javax.swing.MenuElement;
54
import javax.swing.event.ChangeEvent;
55
import javax.swing.event.ChangeListener;
56
import javax.swing.event.MouseInputListener;
57
import javax.swing.plaf.ComponentUI;
58
import javax.swing.plaf.MenuBarUI;
59
 
60
/**
61
 * UI Delegate for JMenuBar.
62
 */
63
public class BasicMenuBarUI extends MenuBarUI
64
{
65
  protected ChangeListener changeListener;
66
 
67
  /*ContainerListener that listens to the ContainerEvents fired from menu bar*/
68
  protected ContainerListener containerListener;
69
 
70
  /*Property change listeners that listener to PropertyChangeEvent from menu bar*/
71
  protected PropertyChangeListener propertyChangeListener;
72
 
73
  /* menu bar for which this UI delegate is for*/
74
  protected JMenuBar menuBar;
75
 
76
  /* MouseListener that listens to the mouseEvents fired from menu bar*/
77
  private MouseInputListener mouseListener;
78
 
79
  /**
80
   * Creates a new BasicMenuBarUI object.
81
   */
82
  public BasicMenuBarUI()
83
  {
84
    changeListener = createChangeListener();
85
    containerListener = createContainerListener();
86
    propertyChangeListener = new PropertyChangeHandler();
87
    mouseListener = new MouseInputHandler();
88
  }
89
 
90
  /**
91
   * Creates ChangeListener
92
   *
93
   * @return The ChangeListener
94
   */
95
  protected ChangeListener createChangeListener()
96
  {
97
    return new ChangeHandler();
98
  }
99
 
100
  /**
101
   * Creates ContainerListener() to listen for ContainerEvents
102
   * fired by JMenuBar.
103
   *
104
   * @return The ContainerListener
105
   */
106
  protected ContainerListener createContainerListener()
107
  {
108
    return new ContainerHandler();
109
  }
110
 
111
  /**
112
   * Factory method to create a BasicMenuBarUI for the given {@link
113
   * JComponent}, which should be a {@link JMenuBar}.
114
   *
115
   * @param x The {@link JComponent} a UI is being created for.
116
   *
117
   * @return A BasicMenuBarUI for the {@link JComponent}.
118
   */
119
  public static ComponentUI createUI(JComponent x)
120
  {
121
    return new BasicMenuBarUI();
122
  }
123
 
124
  /**
125
   * Returns maximum size for the specified menu bar
126
   *
127
   * @param c component for which to get maximum size
128
   *
129
   * @return  Maximum size for the specified menu bar
130
   */
131
  public Dimension getMaximumSize(JComponent c)
132
  {
133
    // let layout manager calculate its size
134
    return null;
135
  }
136
 
137
  /**
138
   * Returns maximum allowed size of JMenuBar.
139
   *
140
   * @param c menuBar for which to return maximum size
141
   *
142
   * @return Maximum size of the give menu bar.
143
   */
144
  public Dimension getMinimumSize(JComponent c)
145
  {
146
    // let layout manager calculate its size
147
    return null;
148
  }
149
 
150
  /**
151
   * Returns preferred size of JMenuBar.
152
   *
153
   * @param c menuBar for which to return preferred size
154
   *
155
   * @return Preferred size of the give menu bar.
156
   */
157
  public Dimension getPreferredSize(JComponent c)
158
  {
159
    // let layout manager calculate its size
160
    return null;
161
  }
162
 
163
  /**
164
   * Initializes any default properties that this UI has from the defaults for
165
   * the Basic look and feel.
166
   */
167
  protected void installDefaults()
168
  {
169
    LookAndFeel.installBorder(menuBar, "MenuBar.border");
170
    LookAndFeel.installColorsAndFont(menuBar, "MenuBar.background",
171
                                     "MenuBar.foreground", "MenuBar.font");
172
    menuBar.setOpaque(true);
173
  }
174
 
175
  /**
176
   * This method installs the keyboard actions for the JMenuBar.
177
   */
178
  protected void installKeyboardActions()
179
  {
180
    // FIXME: implement
181
  }
182
 
183
  /**
184
   * This method installs the listeners needed for this UI to function.
185
   */
186
  protected void installListeners()
187
  {
188
    menuBar.addContainerListener(containerListener);
189
    menuBar.addPropertyChangeListener(propertyChangeListener);
190
    menuBar.addMouseListener(mouseListener);
191
  }
192
 
193
  /**
194
  * Installs and initializes all fields for this UI delegate. Any properties
195
  * of the UI that need to be initialized and/or set to defaults will be
196
  * done now. It will also install any listeners necessary.
197
  *
198
  * @param c The {@link JComponent} that is having this UI installed.
199
  */
200
  public void installUI(JComponent c)
201
  {
202
    super.installUI(c);
203
    menuBar = (JMenuBar) c;
204
    menuBar.setLayout(new BoxLayout(menuBar, BoxLayout.X_AXIS));
205
    installDefaults();
206
    installListeners();
207
    installKeyboardActions();
208
  }
209
 
210
  /**
211
   * This method uninstalls the defaults and nulls any objects created during
212
   * install.
213
   */
214
  protected void uninstallDefaults()
215
  {
216
    menuBar.setBackground(null);
217
    menuBar.setBorder(null);
218
    menuBar.setFont(null);
219
    menuBar.setForeground(null);
220
  }
221
 
222
  /**
223
   * This method reverses the work done in installKeyboardActions.
224
   */
225
  protected void uninstallKeyboardActions()
226
  {
227
    // FIXME: implement. 
228
  }
229
 
230
  /**
231
   * Unregisters all the listeners that this UI delegate was using.
232
   */
233
  protected void uninstallListeners()
234
  {
235
    menuBar.removeContainerListener(containerListener);
236
    menuBar.removePropertyChangeListener(propertyChangeListener);
237
    menuBar.removeMouseListener(mouseListener);
238
  }
239
 
240
  /**
241
   * Performs the opposite of installUI. Any properties or resources that need
242
   * to be cleaned up will be done now. It will also uninstall any listeners
243
   * it has. In addition, any properties of this UI will be nulled.
244
   *
245
   * @param c The {@link JComponent} that is having this UI uninstalled.
246
   */
247
  public void uninstallUI(JComponent c)
248
  {
249
    uninstallDefaults();
250
    uninstallListeners();
251
    uninstallKeyboardActions();
252
    menuBar = null;
253
  }
254
 
255
  protected class ChangeHandler implements ChangeListener
256
  {
257
    public void stateChanged(ChangeEvent event)
258
    {
259
      // TODO: What should be done here, if anything?
260
    }
261
  }
262
 
263
  /**
264
   * This class handles ContainerEvents fired by JMenuBar. It revalidates
265
   * and repaints menu bar whenever menu is added or removed from it.
266
   */
267
  protected class ContainerHandler implements ContainerListener
268
  {
269
    /**
270
     * This method is called whenever menu is added to the menu bar
271
     *
272
     * @param e The ContainerEvent.
273
     */
274
    public void componentAdded(ContainerEvent e)
275
    {
276
      menuBar.revalidate();
277
      menuBar.repaint();
278
    }
279
 
280
    /**
281
     * This method is called whenever menu is removed from the menu bar.
282
     *
283
     * @param e The ContainerEvent.
284
     */
285
    public void componentRemoved(ContainerEvent e)
286
    {
287
      menuBar.revalidate();
288
      menuBar.repaint();
289
    }
290
  }
291
 
292
  /**
293
   * This class handles PropertyChangeEvents fired from the JMenuBar
294
   */
295
  protected class PropertyChangeHandler implements PropertyChangeListener
296
  {
297
    /**
298
     * This method is called whenever one of the properties of the MenuBar
299
     * changes.
300
     *
301
     * @param e The PropertyChangeEvent.
302
     */
303
    public void propertyChange(PropertyChangeEvent e)
304
    {
305
      if (e.getPropertyName().equals("borderPainted"))
306
        menuBar.repaint();
307
      if (e.getPropertyName().equals("margin"))
308
        menuBar.repaint();
309
    }
310
  }
311
 
312
  private class MouseInputHandler implements MouseInputListener
313
  {
314
    /**
315
     * Handles mouse clicked event
316
     *
317
     * @param e Mouse event
318
     */
319
    public void mouseClicked(MouseEvent e)
320
    {
321
      MenuElement[] me = menuBar.getSubElements();
322
 
323
      for (int i = 0; i < me.length; i++)
324
        {
325
          JMenu menu = menuBar.getMenu(i);
326
          if (menu != null)
327
            menu.setSelected(false);
328
        }
329
    }
330
 
331
    /**
332
     * Handles mouse pressed event
333
     *
334
     * @param e Mouse event
335
     */
336
    public void mousePressed(MouseEvent e)
337
    {
338
      // TODO: What should be done here, if anything?
339
    }
340
 
341
    /**
342
     * Handles mouse released event
343
     *
344
     * @param e Mouse event
345
     */
346
    public void mouseReleased(MouseEvent e)
347
    {
348
      // TODO: What should be done here, if anything?
349
    }
350
 
351
    /**
352
     * Handles mouse exited event
353
     *
354
     * @param e Mouse event
355
     */
356
    public void mouseExited(MouseEvent e)
357
    {
358
      // TODO: What should be done here, if anything?
359
    }
360
 
361
    /**
362
     * Handles mouse dragged event
363
     *
364
     * @param e Mouse event
365
     */
366
    public void mouseDragged(MouseEvent e)
367
    {
368
      // TODO: What should be done here, if anything?
369
    }
370
 
371
    /**
372
     * Handles mouse moved event
373
     *
374
     * @param e Mouse event
375
     */
376
    public void mouseMoved(MouseEvent e)
377
    {
378
      // TODO: What should be done here, if anything?
379
    }
380
 
381
    /**
382
     * Handles mouse entered event
383
     *
384
     * @param e Mouse event
385
     */
386
    public void mouseEntered(MouseEvent e)
387
    {
388
      // TODO: What should be done here, if anything?
389
    }
390
  }
391
}

powered by: WebSVN 2.1.0

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