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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [javax/] [swing/] [plaf/] [basic/] [BasicDesktopPaneUI.java] - Blame information for rev 772

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 772 jeremybenn
/* BasicDesktopPaneUI.java --
2
   Copyright (C) 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 javax.swing.plaf.basic;
40
 
41
import java.awt.Color;
42
import java.awt.Dimension;
43
import java.awt.event.ActionEvent;
44
import java.beans.PropertyVetoException;
45
 
46
import javax.swing.AbstractAction;
47
import javax.swing.DefaultDesktopManager;
48
import javax.swing.DesktopManager;
49
import javax.swing.JComponent;
50
import javax.swing.JDesktopPane;
51
import javax.swing.JInternalFrame;
52
import javax.swing.KeyStroke;
53
import javax.swing.UIManager;
54
import javax.swing.plaf.ComponentUI;
55
import javax.swing.plaf.DesktopPaneUI;
56
import javax.swing.plaf.UIResource;
57
 
58
/**
59
 * This class is the UI delegate for JDesktopPane for the Basic look and feel.
60
 */
61
public class BasicDesktopPaneUI extends DesktopPaneUI
62
{
63
  /**
64
   * This helper class is used to handle key events that cause JInternalFrames
65
   * to be closed.
66
   */
67
  protected class CloseAction extends AbstractAction
68
  {
69
    /**
70
     * This method is called when the action is performed.
71
     *
72
     * @param e The ActionEvent.
73
     */
74
    public void actionPerformed(ActionEvent e)
75
    {
76
      if (desktop.getSelectedFrame() != null)
77
        {
78
          try
79
            {
80
              desktop.getSelectedFrame().setClosed(true);
81
            }
82
          catch (PropertyVetoException pve)
83
            {
84
              // We do nothing if the attempts has been vetoed.
85
            }
86
        }
87
    }
88
 
89
    /**
90
     * This method returns whether the action is enabled.
91
     *
92
     * @return Whether the action is enabled.
93
     */
94
    public boolean isEnabled()
95
    {
96
      if (desktop.getSelectedFrame() != null)
97
        return desktop.getSelectedFrame().isClosable();
98
      return false;
99
    }
100
  }
101
 
102
  /**
103
   * This helper class is used to handle key events that cause JInternalFrames
104
   * to be maximized.
105
   */
106
  protected class MaximizeAction extends AbstractAction
107
  {
108
    /**
109
     * This method is called when the action is performed.
110
     *
111
     * @param e The ActionEvent.
112
     */
113
    public void actionPerformed(ActionEvent e)
114
    {
115
      if (desktop.getSelectedFrame() != null)
116
        {
117
          try
118
            {
119
              desktop.getSelectedFrame().setMaximum(true);
120
            }
121
          catch (PropertyVetoException pve)
122
            {
123
              // We do nothing if the attempts has been vetoed.
124
            }
125
        }
126
    }
127
 
128
    /**
129
     * This method returns whether the action is enabled.
130
     *
131
     * @return Whether the action is enabled.
132
     */
133
    public boolean isEnabled()
134
    {
135
      if (desktop.getSelectedFrame() != null)
136
        return desktop.getSelectedFrame().isMaximizable();
137
      return false;
138
    }
139
  }
140
 
141
  /**
142
   * This helper class is used to handle key events that cause JInternalFrames
143
   * to be minimized.
144
   */
145
  protected class MinimizeAction extends AbstractAction
146
  {
147
    /**
148
     * This method is called when the action is performed.
149
     *
150
     * @param e The ActionEvent.
151
     */
152
    public void actionPerformed(ActionEvent e)
153
    {
154
      if (desktop.getSelectedFrame() != null)
155
        {
156
          try
157
            {
158
              desktop.getSelectedFrame().setIcon(true);
159
            }
160
          catch (PropertyVetoException pve)
161
            {
162
              // We do nothing if the attempt has been vetoed.
163
            }
164
        }
165
    }
166
 
167
    /**
168
     * This method returns whether the action is enabled.
169
     *
170
     * @return Whether the action is enabled.
171
     */
172
    public boolean isEnabled()
173
    {
174
      if (desktop.getSelectedFrame() != null)
175
        return desktop.getSelectedFrame().isIconifiable();
176
      return false;
177
    }
178
  }
179
 
180
  /**
181
   * This helper class is used to handle key events that pass the SELECTED
182
   * property to the next JInternalFrame in the JDesktopPane's list of
183
   * children.
184
   */
185
  protected class NavigateAction extends AbstractAction
186
  {
187
    /**
188
     * This method is called when the action is performed.
189
     *
190
     * @param e The ActionEvent.
191
     */
192
    public void actionPerformed(ActionEvent e)
193
    {
194
      // This is supposed to set the next selected frame.
195
      JInternalFrame[] frames = desktop.getAllFrames();
196
      if (frames.length == 0)
197
        return;
198
 
199
      JInternalFrame sFrame = frames[0];
200
      if (desktop.getSelectedFrame() != null)
201
        sFrame = desktop.getSelectedFrame();
202
 
203
      int i = 0;
204
      for (; i < frames.length; i++)
205
        if (frames[i] == sFrame)
206
          break;
207
 
208
      // FIXME: Navigate actions go reverse too.
209
      if (i == frames.length)
210
        i = 0;
211
 
212
      desktop.setSelectedFrame(frames[i]);
213
    }
214
 
215
    /**
216
     * This method returns whether the action is enabled.
217
     *
218
     * @return Whether this action is enabled.
219
     */
220
    public boolean isEnabled()
221
    {
222
      // Always true.
223
      return true;
224
    }
225
  }
226
 
227
  /**
228
   * This helper class is used to restore the JInternalFrame to its original
229
   * size before maximizing or iconifying.
230
   */
231
  protected class OpenAction extends AbstractAction
232
  {
233
    /**
234
     * This method is called when the action is performed.
235
     *
236
     * @param e The ActionEvent.
237
     */
238
    public void actionPerformed(ActionEvent e)
239
    {
240
      JInternalFrame frame = desktop.getSelectedFrame();
241
      if (frame != null)
242
        {
243
          try
244
            {
245
              if (frame.isIcon())
246
                frame.setIcon(false);
247
              else if (frame.isMaximum())
248
                frame.setMaximum(false);
249
            }
250
          catch (PropertyVetoException pve)
251
            {
252
              // We do nothing if the attempt has been vetoed.
253
            }
254
        }
255
    }
256
 
257
    /**
258
     * This method returns whether the action is enabled.
259
     *
260
     * @return Whether this action is enabled.
261
     */
262
    public boolean isEnabled()
263
    {
264
      // JInternalFrames are always restorable.
265
      return true;
266
    }
267
  }
268
 
269
  /**
270
   * The KeyStroke associated with closing JInternalFrames.
271
   * @deprecated
272
   */
273
  protected KeyStroke closeKey;
274
 
275
  /**
276
   * The KeyStroke associated with maximizing JInternalFrames.
277
   * @deprecated
278
   */
279
  protected KeyStroke maximizeKey;
280
 
281
  /**
282
   * The KeyStroke associated with minimizing JInternalFrames.
283
   * @deprecated
284
   */
285
  protected KeyStroke minimizeKey;
286
 
287
  /**
288
   * The KeyStroke associated with navigating (forward?) through
289
   * JInternalFrames.
290
   * @deprecated
291
   */
292
  protected KeyStroke navigateKey;
293
 
294
  /**
295
   * The KeyStroke associated with navigating (backward?) through
296
   * JInternalFrames.
297
   * @deprecated
298
   */
299
  protected KeyStroke navigateKey2;
300
 
301
  /** The default desktop manager used with JDesktopPane. */
302
  protected DesktopManager desktopManager;
303
 
304
  /** The JDesktopPane this UI is used with. */
305
  protected JDesktopPane desktop;
306
 
307
  /**
308
   * Creates a new BasicDesktopPaneUI object.
309
   */
310
  public BasicDesktopPaneUI()
311
  {
312
    // Nothing to do here.
313
  }
314
 
315
  /**
316
   * This method creates a BasicDesktopPaneUI for the given JComponent.
317
   *
318
   * @param c The JComponent to create a UI for.
319
   *
320
   * @return A new BasicDesktopPaneUI.
321
   */
322
  public static ComponentUI createUI(JComponent c)
323
  {
324
    return new BasicDesktopPaneUI();
325
  }
326
 
327
  /**
328
   * This method returns the maximum size for the given JComponent.
329
   *
330
   * @param c The JComponent to find a maximum size for.
331
   *
332
   * @return The maximum size for the given JComponent.
333
   */
334
  public Dimension getMaximumSize(JComponent c)
335
  {
336
    return getPreferredSize(c);
337
  }
338
 
339
  /**
340
   * This method returns the minimum size for the given JComponent.
341
   *
342
   * @param c The JComponent to find a minimum size for.
343
   *
344
   * @return The minimum size for the given JComponent.
345
   */
346
  public Dimension getMinimumSize(JComponent c)
347
  {
348
    return getPreferredSize(c);
349
  }
350
 
351
  /**
352
   * This method returns the preferred size for the given JComponent.
353
   *
354
   * @param c The JComponent to find a preferred size for.
355
   *
356
   * @return The preferred size for the given JComponent.
357
   */
358
  public Dimension getPreferredSize(JComponent c)
359
  {
360
    // return null because JDesktopPanes don't have preferred sizes.
361
    return null;
362
  }
363
 
364
  /**
365
   * This method installs the defaults for the JDesktopPane provided by the
366
   * current look and feel.
367
   */
368
  protected void installDefaults()
369
  {
370
    Color bg = desktop.getBackground();
371
    if (bg == null || bg instanceof UIResource)
372
      desktop.setBackground(UIManager.getColor("desktop"));
373
  }
374
 
375
  /**
376
   * This method installs the desktop manager for the JDesktopPane.
377
   */
378
  protected void installDesktopManager()
379
  {
380
    desktopManager = new DefaultDesktopManager();
381
    desktop.setDesktopManager(desktopManager);
382
  }
383
 
384
  /**
385
   * This method installs the keyboard actions for the JDesktopPane.
386
   */
387
  protected void installKeyboardActions()
388
  {
389
    // FIXME: create actions and keystrokes.
390
    registerKeyboardActions();
391
  }
392
 
393
  /**
394
   * This method installs the UI for the given JComponent.
395
   *
396
   * @param c The JComponent to install this UI for.
397
   */
398
  public void installUI(JComponent c)
399
  {
400
    if (c instanceof JDesktopPane)
401
      {
402
        desktop = (JDesktopPane) c;
403
 
404
        installDefaults();
405
        installDesktopManager();
406
        installKeyboardActions();
407
      }
408
  }
409
 
410
  /**
411
   * This method registers the actions to the appropriate Action and Input
412
   * maps.
413
   */
414
  protected void registerKeyboardActions()
415
  {
416
    // FIXME: Do the binding.
417
    // XXX: the gtk windows tend to intercept a lot of the
418
    // key events for themselves. must figure a way past that
419
    // before binding
420
  }
421
 
422
  /**
423
   * This method reverses the work done by the installDefaults method.
424
   */
425
  protected void uninstallDefaults()
426
  {
427
    desktop.setBackground(null);
428
  }
429
 
430
  /**
431
   * This method reverses the work done by the installDesktopManager method.
432
   */
433
  protected void uninstallDesktopManager()
434
  {
435
    desktopManager = null;
436
    desktop.setDesktopManager(null);
437
  }
438
 
439
  /**
440
   * This method reverses the work done by the installKeyboardActions method.
441
   */
442
  protected void uninstallKeyboardActions()
443
  {
444
    unregisterKeyboardActions();
445
    // FIXME: null the actions and keystrokes.
446
  }
447
 
448
  /**
449
   * This method reverses the work done by the registerKeyboardActions method.
450
   */
451
  protected void unregisterKeyboardActions()
452
  {
453
    // FIXME: unmap the keystrokes
454
  }
455
 
456
  /**
457
   * This method uninstalls the UI for the given JComponent. It should reverse
458
   * all the work done by the installUI method.
459
   *
460
   * @param c The JComponent to uninstall this UI for.
461
   */
462
  public void uninstallUI(JComponent c)
463
  {
464
    uninstallKeyboardActions();
465
    uninstallDesktopManager();
466
    uninstallDefaults();
467
 
468
    desktop = null;
469
  }
470
}

powered by: WebSVN 2.1.0

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