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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [javax/] [swing/] [plaf/] [multi/] [MultiSplitPaneUI.java] - Blame information for rev 775

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 772 jeremybenn
/* MultiSplitPaneUI.java --
2
   Copyright (C) 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
package javax.swing.plaf.multi;
39
 
40
import java.awt.Dimension;
41
import java.awt.Graphics;
42
import java.util.Iterator;
43
import java.util.Vector;
44
 
45
import javax.accessibility.Accessible;
46
import javax.swing.JComponent;
47
import javax.swing.JSplitPane;
48
import javax.swing.LookAndFeel;
49
import javax.swing.UIManager;
50
import javax.swing.plaf.ComponentUI;
51
import javax.swing.plaf.SplitPaneUI;
52
 
53
/**
54
 * A UI delegate that that coordinates multiple {@link SplitPaneUI}
55
 * instances, one from the primary look and feel, and one or more from the
56
 * auxiliary look and feel(s).
57
 *
58
 * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
59
 */
60
public class MultiSplitPaneUI extends SplitPaneUI
61
{
62
 
63
  /** A list of references to the actual component UIs. */
64
  protected Vector uis;
65
 
66
  /**
67
   * Creates a new <code>MultiSplitPaneUI</code> instance.
68
   *
69
   * @see #createUI(JComponent)
70
   */
71
  public MultiSplitPaneUI()
72
  {
73
    uis = new Vector();
74
  }
75
 
76
  /**
77
   * Creates a delegate object for the specified component.  If any auxiliary
78
   * look and feels support this component, a <code>MultiSplitPaneUI</code> is
79
   * returned, otherwise the UI from the default look and feel is returned.
80
   *
81
   * @param target  the component.
82
   *
83
   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
84
   */
85
  public static ComponentUI createUI(JComponent target)
86
  {
87
    MultiSplitPaneUI mui = new MultiSplitPaneUI();
88
    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
89
  }
90
 
91
  /**
92
   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
93
   * the UI delegates managed by this <code>MultiSplitPaneUI</code>.
94
   *
95
   * @param c  the component.
96
   */
97
  public void installUI(JComponent c)
98
  {
99
    Iterator iterator = uis.iterator();
100
    while (iterator.hasNext())
101
    {
102
      ComponentUI ui = (ComponentUI) iterator.next();
103
      ui.installUI(c);
104
    }
105
  }
106
 
107
  /**
108
   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
109
   * the UI delegates managed by this <code>MultiSplitPaneUI</code>.
110
   *
111
   * @param c  the component.
112
   */
113
  public void uninstallUI(JComponent c)
114
  {
115
    Iterator iterator = uis.iterator();
116
    while (iterator.hasNext())
117
    {
118
      ComponentUI ui = (ComponentUI) iterator.next();
119
      ui.uninstallUI(c);
120
    }
121
  }
122
 
123
  /**
124
   * Returns an array containing the UI delegates managed by this
125
   * <code>MultiSplitPaneUI</code>.  The first item in the array is always
126
   * the UI delegate from the installed default look and feel.
127
   *
128
   * @return An array of UI delegates.
129
   */
130
  public ComponentUI[] getUIs()
131
  {
132
    return MultiLookAndFeel.uisToArray(uis);
133
  }
134
 
135
  /**
136
   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
137
   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
138
   * returning the result for the UI delegate from the primary look and
139
   * feel.
140
   *
141
   * @param c  the component.
142
   * @param x  the x-coordinate.
143
   * @param y  the y-coordinate.
144
   *
145
   * @return <code>true</code> if the specified (x, y) coordinate falls within
146
   *         the bounds of the component as rendered by the UI delegate in the
147
   *         primary look and feel, and <code>false</code> otherwise.
148
   */
149
  public boolean contains(JComponent c, int x, int y)
150
  {
151
    boolean result = false;
152
    Iterator iterator = uis.iterator();
153
    // first UI delegate provides the return value
154
    if (iterator.hasNext())
155
      {
156
        ComponentUI ui = (ComponentUI) iterator.next();
157
        result = ui.contains(c, x, y);
158
      }
159
    // return values from auxiliary UI delegates are ignored
160
    while (iterator.hasNext())
161
      {
162
        ComponentUI ui = (ComponentUI) iterator.next();
163
        /* boolean ignored = */ ui.contains(c, x, y);
164
      }
165
    return result;
166
  }
167
 
168
  /**
169
   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
170
   * the UI delegates managed by this <code>MultiSplitPaneUI</code>.
171
   *
172
   * @param g  the graphics device.
173
   * @param c  the component.
174
   */
175
  public void update(Graphics g, JComponent c)
176
  {
177
    Iterator iterator = uis.iterator();
178
    while (iterator.hasNext())
179
    {
180
      ComponentUI ui = (ComponentUI) iterator.next();
181
      ui.update(g, c);
182
    }
183
  }
184
 
185
  /**
186
   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
187
   * delegates managed by this <code>MultiSplitPaneUI</code>.
188
   *
189
   * @param g  the graphics device.
190
   * @param c  the component.
191
   */
192
  public void paint(Graphics g, JComponent c)
193
  {
194
    Iterator iterator = uis.iterator();
195
    while (iterator.hasNext())
196
    {
197
      ComponentUI ui = (ComponentUI) iterator.next();
198
      ui.paint(g, c);
199
    }
200
  }
201
 
202
  /**
203
   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
204
   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
205
   * returning the preferred size for the UI delegate from the primary look and
206
   * feel.
207
   *
208
   * @param c  the component.
209
   *
210
   * @return The preferred size returned by the UI delegate from the primary
211
   *         look and feel.
212
   */
213
  public Dimension getPreferredSize(JComponent c)
214
  {
215
    Dimension result = null;
216
    Iterator iterator = uis.iterator();
217
    // first UI delegate provides the return value
218
    if (iterator.hasNext())
219
      {
220
        ComponentUI ui = (ComponentUI) iterator.next();
221
        result = ui.getPreferredSize(c);
222
      }
223
    // return values from auxiliary UI delegates are ignored
224
    while (iterator.hasNext())
225
      {
226
        ComponentUI ui = (ComponentUI) iterator.next();
227
        /* Dimension ignored = */ ui.getPreferredSize(c);
228
      }
229
    return result;
230
  }
231
 
232
  /**
233
   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
234
   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
235
   * returning the minimum size for the UI delegate from the primary look and
236
   * feel.
237
   *
238
   * @param c  the component.
239
   *
240
   * @return The minimum size returned by the UI delegate from the primary
241
   *         look and feel.
242
   */
243
  public Dimension getMinimumSize(JComponent c)
244
  {
245
    Dimension result = null;
246
    Iterator iterator = uis.iterator();
247
    // first UI delegate provides the return value
248
    if (iterator.hasNext())
249
      {
250
        ComponentUI ui = (ComponentUI) iterator.next();
251
        result = ui.getMinimumSize(c);
252
      }
253
    // return values from auxiliary UI delegates are ignored
254
    while (iterator.hasNext())
255
      {
256
        ComponentUI ui = (ComponentUI) iterator.next();
257
        /* Dimension ignored = */ ui.getMinimumSize(c);
258
      }
259
    return result;
260
  }
261
 
262
  /**
263
   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
264
   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
265
   * returning the maximum size for the UI delegate from the primary look and
266
   * feel.
267
   *
268
   * @param c  the component.
269
   *
270
   * @return The maximum size returned by the UI delegate from the primary
271
   *         look and feel.
272
   */
273
  public Dimension getMaximumSize(JComponent c)
274
  {
275
    Dimension result = null;
276
    Iterator iterator = uis.iterator();
277
    // first UI delegate provides the return value
278
    if (iterator.hasNext())
279
      {
280
        ComponentUI ui = (ComponentUI) iterator.next();
281
        result = ui.getMaximumSize(c);
282
      }
283
    // return values from auxiliary UI delegates are ignored
284
    while (iterator.hasNext())
285
      {
286
        ComponentUI ui = (ComponentUI) iterator.next();
287
        /* Dimension ignored = */ ui.getMaximumSize(c);
288
      }
289
    return result;
290
  }
291
 
292
  /**
293
   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
294
   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>,
295
   * returning the count for the UI delegate from the primary look and
296
   * feel.
297
   *
298
   * @param c  the component.
299
   *
300
   * @return The count returned by the UI delegate from the primary
301
   *         look and feel.
302
   */
303
  public int getAccessibleChildrenCount(JComponent c)
304
  {
305
    int result = 0;
306
    Iterator iterator = uis.iterator();
307
    // first UI delegate provides the return value
308
    if (iterator.hasNext())
309
      {
310
        ComponentUI ui = (ComponentUI) iterator.next();
311
        result = ui.getAccessibleChildrenCount(c);
312
      }
313
    // return values from auxiliary UI delegates are ignored
314
    while (iterator.hasNext())
315
      {
316
        ComponentUI ui = (ComponentUI) iterator.next();
317
        /* int ignored = */ ui.getAccessibleChildrenCount(c);
318
      }
319
    return result;
320
  }
321
 
322
  /**
323
   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
324
   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>,
325
   * returning the child for the UI delegate from the primary look and
326
   * feel.
327
   *
328
   * @param c  the component
329
   * @param i  the child index.
330
   *
331
   * @return The child returned by the UI delegate from the primary
332
   *         look and feel.
333
   */
334
  public Accessible getAccessibleChild(JComponent c, int i)
335
  {
336
    Accessible result = null;
337
    Iterator iterator = uis.iterator();
338
    // first UI delegate provides the return value
339
    if (iterator.hasNext())
340
      {
341
        ComponentUI ui = (ComponentUI) iterator.next();
342
        result = ui.getAccessibleChild(c, i);
343
      }
344
    // return values from auxiliary UI delegates are ignored
345
    while (iterator.hasNext())
346
      {
347
        ComponentUI ui = (ComponentUI) iterator.next();
348
        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
349
      }
350
    return result;
351
  }
352
 
353
  /**
354
   * Calls the {@link SplitPaneUI#resetToPreferredSizes(JSplitPane)} method
355
   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>.
356
   *
357
   * @param pane  the component.
358
   */
359
  public void resetToPreferredSizes(JSplitPane pane)
360
  {
361
    Iterator iterator = uis.iterator();
362
    while (iterator.hasNext())
363
    {
364
      SplitPaneUI ui = (SplitPaneUI) iterator.next();
365
      ui.resetToPreferredSizes(pane);
366
    }
367
  }
368
 
369
  /**
370
   * Calls the {@link SplitPaneUI#setDividerLocation(JSplitPane, int)} method
371
   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>.
372
   *
373
   * @param pane  the component.
374
   * @param location  the location.
375
   */
376
  public void setDividerLocation(JSplitPane pane, int location)
377
  {
378
    Iterator iterator = uis.iterator();
379
    while (iterator.hasNext())
380
    {
381
      SplitPaneUI ui = (SplitPaneUI) iterator.next();
382
      ui.setDividerLocation(pane, location);
383
    }
384
  }
385
 
386
  /**
387
   * Calls the {@link SplitPaneUI#getDividerLocation(JSplitPane)} method for all
388
   * the UI delegates managed by this <code>MultiSplitPaneUI</code>,
389
   * returning the location for the UI delegate from the primary look and
390
   * feel.
391
   *
392
   * @param pane  the component.
393
   *
394
   * @return The location returned by the UI delegate from the primary
395
   *         look and feel.
396
   */
397
  public int getDividerLocation(JSplitPane pane)
398
  {
399
    int result = 0;
400
    Iterator iterator = uis.iterator();
401
    // first UI delegate provides the return value
402
    if (iterator.hasNext())
403
      {
404
        SplitPaneUI ui = (SplitPaneUI) iterator.next();
405
        result = ui.getDividerLocation(pane);
406
      }
407
    // return values from auxiliary UI delegates are ignored
408
    while (iterator.hasNext())
409
      {
410
        SplitPaneUI ui = (SplitPaneUI) iterator.next();
411
        /* int ignored = */ ui.getDividerLocation(pane);
412
      }
413
    return result;
414
  }
415
 
416
  /**
417
   * Calls the {@link SplitPaneUI#getMinimumDividerLocation(JSplitPane)} method
418
   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>,
419
   * returning the location for the UI delegate from the primary look and
420
   * feel.
421
   *
422
   * @param pane  the component.
423
   *
424
   * @return The location returned by the UI delegate from the primary
425
   *         look and feel.
426
   */
427
  public int getMinimumDividerLocation(JSplitPane pane)
428
  {
429
    int result = 0;
430
    Iterator iterator = uis.iterator();
431
    // first UI delegate provides the return value
432
    if (iterator.hasNext())
433
      {
434
        SplitPaneUI ui = (SplitPaneUI) iterator.next();
435
        result = ui.getMinimumDividerLocation(pane);
436
      }
437
    // return values from auxiliary UI delegates are ignored
438
    while (iterator.hasNext())
439
      {
440
        SplitPaneUI ui = (SplitPaneUI) iterator.next();
441
        /* int ignored = */ ui.getMinimumDividerLocation(pane);
442
      }
443
    return result;
444
  }
445
 
446
  /**
447
   * Calls the {@link SplitPaneUI#getMaximumDividerLocation(JSplitPane)} method
448
   * for all the UI delegates managed by this <code>MultiSplitPaneUI</code>,
449
   * returning the location for the UI delegate from the primary look and
450
   * feel.
451
   *
452
   * @param pane  the component.
453
   *
454
   * @return The location returned by the UI delegate from the primary
455
   *         look and feel.
456
   */
457
  public int getMaximumDividerLocation(JSplitPane pane)
458
  {
459
    int result = 0;
460
    Iterator iterator = uis.iterator();
461
    // first UI delegate provides the return value
462
    if (iterator.hasNext())
463
      {
464
        SplitPaneUI ui = (SplitPaneUI) iterator.next();
465
        result = ui.getMaximumDividerLocation(pane);
466
      }
467
    // return values from auxiliary UI delegates are ignored
468
    while (iterator.hasNext())
469
      {
470
        SplitPaneUI ui = (SplitPaneUI) iterator.next();
471
        /* int ignored = */ ui.getMaximumDividerLocation(pane);
472
      }
473
    return result;
474
  }
475
 
476
  /**
477
   * Calls the {@link SplitPaneUI#finishedPaintingChildren(JSplitPane,
478
   * Graphics)} method for all the UI delegates managed by this
479
   * <code>MultiSplitPaneUI</code>.
480
   *
481
   * @param pane  the component.
482
   * @param g  the graphics device.
483
   */
484
  public void finishedPaintingChildren(JSplitPane pane, Graphics g)
485
  {
486
    Iterator iterator = uis.iterator();
487
    while (iterator.hasNext())
488
    {
489
      SplitPaneUI ui = (SplitPaneUI) iterator.next();
490
      ui.finishedPaintingChildren(pane, g);
491
    }
492
  }
493
 
494
}

powered by: WebSVN 2.1.0

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