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

Subversion Repositories openrisc

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 772 jeremybenn
/* MultiTreeUI.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.awt.Rectangle;
43
import java.util.Iterator;
44
import java.util.Vector;
45
 
46
import javax.accessibility.Accessible;
47
import javax.swing.JComponent;
48
import javax.swing.JTree;
49
import javax.swing.LookAndFeel;
50
import javax.swing.UIManager;
51
import javax.swing.plaf.ComponentUI;
52
import javax.swing.plaf.TreeUI;
53
import javax.swing.tree.TreePath;
54
 
55
/**
56
 * A UI delegate that that coordinates multiple {@link TreeUI}
57
 * instances, one from the primary look and feel, and one or more from the
58
 * auxiliary look and feel(s).
59
 *
60
 * @see UIManager#addAuxiliaryLookAndFeel(LookAndFeel)
61
 */
62
public class MultiTreeUI extends TreeUI
63
{
64
 
65
  /** A list of references to the actual component UIs. */
66
  protected Vector uis;
67
 
68
  /**
69
   * Creates a new <code>MultiTreeUI</code> instance.
70
   *
71
   * @see #createUI(JComponent)
72
   */
73
  public MultiTreeUI()
74
  {
75
    uis = new Vector();
76
  }
77
 
78
  /**
79
   * Creates a delegate object for the specified component.  If any auxiliary
80
   * look and feels support this component, a <code>MultiTreeUI</code> is
81
   * returned, otherwise the UI from the default look and feel is returned.
82
   *
83
   * @param target  the component.
84
   *
85
   * @see MultiLookAndFeel#createUIs(ComponentUI, Vector, JComponent)
86
   */
87
  public static ComponentUI createUI(JComponent target)
88
  {
89
    MultiTreeUI mui = new MultiTreeUI();
90
    return MultiLookAndFeel.createUIs(mui, mui.uis, target);
91
  }
92
 
93
  /**
94
   * Calls the {@link ComponentUI#installUI(JComponent)} method for all
95
   * the UI delegates managed by this <code>MultiTreeUI</code>.
96
   *
97
   * @param c  the component.
98
   */
99
  public void installUI(JComponent c)
100
  {
101
    Iterator iterator = uis.iterator();
102
    while (iterator.hasNext())
103
    {
104
      ComponentUI ui = (ComponentUI) iterator.next();
105
      ui.installUI(c);
106
    }
107
  }
108
 
109
  /**
110
   * Calls the {@link ComponentUI#uninstallUI(JComponent)} method for all
111
   * the UI delegates managed by this <code>MultiTreeUI</code>.
112
   *
113
   * @param c  the component.
114
   */
115
  public void uninstallUI(JComponent c)
116
  {
117
    Iterator iterator = uis.iterator();
118
    while (iterator.hasNext())
119
    {
120
      ComponentUI ui = (ComponentUI) iterator.next();
121
      ui.uninstallUI(c);
122
    }
123
  }
124
 
125
  /**
126
   * Returns an array containing the UI delegates managed by this
127
   * <code>MultiTreeUI</code>.  The first item in the array is always
128
   * the UI delegate from the installed default look and feel.
129
   *
130
   * @return An array of UI delegates.
131
   */
132
  public ComponentUI[] getUIs()
133
  {
134
    return MultiLookAndFeel.uisToArray(uis);
135
  }
136
 
137
  /**
138
   * Calls the {@link ComponentUI#contains(JComponent, int, int)} method for all
139
   * the UI delegates managed by this <code>MultiTreeUI</code>,
140
   * returning the result for the UI delegate from the primary look and
141
   * feel.
142
   *
143
   * @param c  the component.
144
   * @param x  the x-coordinate.
145
   * @param y  the y-coordinate.
146
   *
147
   * @return <code>true</code> if the specified (x, y) coordinate falls within
148
   *         the bounds of the component as rendered by the UI delegate in the
149
   *         primary look and feel, and <code>false</code> otherwise.
150
   */
151
  public boolean contains(JComponent c, int x, int y)
152
  {
153
    boolean result = false;
154
    Iterator iterator = uis.iterator();
155
    // first UI delegate provides the return value
156
    if (iterator.hasNext())
157
      {
158
        ComponentUI ui = (ComponentUI) iterator.next();
159
        result = ui.contains(c, x, y);
160
      }
161
    // return values from auxiliary UI delegates are ignored
162
    while (iterator.hasNext())
163
      {
164
        ComponentUI ui = (ComponentUI) iterator.next();
165
        /* boolean ignored = */ ui.contains(c, x, y);
166
      }
167
    return result;
168
  }
169
 
170
  /**
171
   * Calls the {@link ComponentUI#update(Graphics, JComponent)} method for all
172
   * the UI delegates managed by this <code>MultiTreeUI</code>.
173
   *
174
   * @param g  the graphics device.
175
   * @param c  the component.
176
   */
177
  public void update(Graphics g, JComponent c)
178
  {
179
    Iterator iterator = uis.iterator();
180
    while (iterator.hasNext())
181
    {
182
      ComponentUI ui = (ComponentUI) iterator.next();
183
      ui.update(g, c);
184
    }
185
  }
186
 
187
  /**
188
   * Calls the <code>paint(Graphics, JComponent)</code> method for all the UI
189
   * delegates managed by this <code>MultiTreeUI</code>.
190
   *
191
   * @param g  the graphics device.
192
   * @param c  the component.
193
   */
194
  public void paint(Graphics g, JComponent c)
195
  {
196
    Iterator iterator = uis.iterator();
197
    while (iterator.hasNext())
198
    {
199
      ComponentUI ui = (ComponentUI) iterator.next();
200
      ui.paint(g, c);
201
    }
202
  }
203
 
204
  /**
205
   * Calls the {@link ComponentUI#getPreferredSize(JComponent)} method for all
206
   * the UI delegates managed by this <code>MultiTreeUI</code>,
207
   * returning the preferred size for the UI delegate from the primary look and
208
   * feel.
209
   *
210
   * @param c  the component.
211
   *
212
   * @return The preferred size returned by the UI delegate from the primary
213
   *         look and feel.
214
   */
215
  public Dimension getPreferredSize(JComponent c)
216
  {
217
    Dimension result = null;
218
    Iterator iterator = uis.iterator();
219
    // first UI delegate provides the return value
220
    if (iterator.hasNext())
221
      {
222
        ComponentUI ui = (ComponentUI) iterator.next();
223
        result = ui.getPreferredSize(c);
224
      }
225
    // return values from auxiliary UI delegates are ignored
226
    while (iterator.hasNext())
227
      {
228
        ComponentUI ui = (ComponentUI) iterator.next();
229
        /* Dimension ignored = */ ui.getPreferredSize(c);
230
      }
231
    return result;
232
  }
233
 
234
  /**
235
   * Calls the {@link ComponentUI#getMinimumSize(JComponent)} method for all
236
   * the UI delegates managed by this <code>MultiTreeUI</code>,
237
   * returning the minimum size for the UI delegate from the primary look and
238
   * feel.
239
   *
240
   * @param c  the component.
241
   *
242
   * @return The minimum size returned by the UI delegate from the primary
243
   *         look and feel.
244
   */
245
  public Dimension getMinimumSize(JComponent c)
246
  {
247
    Dimension result = null;
248
    Iterator iterator = uis.iterator();
249
    // first UI delegate provides the return value
250
    if (iterator.hasNext())
251
      {
252
        ComponentUI ui = (ComponentUI) iterator.next();
253
        result = ui.getMinimumSize(c);
254
      }
255
    // return values from auxiliary UI delegates are ignored
256
    while (iterator.hasNext())
257
      {
258
        ComponentUI ui = (ComponentUI) iterator.next();
259
        /* Dimension ignored = */ ui.getMinimumSize(c);
260
      }
261
    return result;
262
  }
263
 
264
  /**
265
   * Calls the {@link ComponentUI#getMaximumSize(JComponent)} method for all
266
   * the UI delegates managed by this <code>MultiTreeUI</code>,
267
   * returning the maximum size for the UI delegate from the primary look and
268
   * feel.
269
   *
270
   * @param c  the component.
271
   *
272
   * @return The maximum size returned by the UI delegate from the primary
273
   *         look and feel.
274
   */
275
  public Dimension getMaximumSize(JComponent c)
276
  {
277
    Dimension result = null;
278
    Iterator iterator = uis.iterator();
279
    // first UI delegate provides the return value
280
    if (iterator.hasNext())
281
      {
282
        ComponentUI ui = (ComponentUI) iterator.next();
283
        result = ui.getMaximumSize(c);
284
      }
285
    // return values from auxiliary UI delegates are ignored
286
    while (iterator.hasNext())
287
      {
288
        ComponentUI ui = (ComponentUI) iterator.next();
289
        /* Dimension ignored = */ ui.getMaximumSize(c);
290
      }
291
    return result;
292
  }
293
 
294
  /**
295
   * Calls the {@link ComponentUI#getAccessibleChildrenCount(JComponent)} method
296
   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
297
   * returning the count for the UI delegate from the primary look and
298
   * feel.
299
   *
300
   * @param c  the component.
301
   *
302
   * @return The count returned by the UI delegate from the primary
303
   *         look and feel.
304
   */
305
  public int getAccessibleChildrenCount(JComponent c)
306
  {
307
    int result = 0;
308
    Iterator iterator = uis.iterator();
309
    // first UI delegate provides the return value
310
    if (iterator.hasNext())
311
      {
312
        ComponentUI ui = (ComponentUI) iterator.next();
313
        result = ui.getAccessibleChildrenCount(c);
314
      }
315
    // return values from auxiliary UI delegates are ignored
316
    while (iterator.hasNext())
317
      {
318
        ComponentUI ui = (ComponentUI) iterator.next();
319
        /* int ignored = */ ui.getAccessibleChildrenCount(c);
320
      }
321
    return result;
322
  }
323
 
324
  /**
325
   * Calls the {@link ComponentUI#getAccessibleChild(JComponent, int)} method
326
   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
327
   * returning the child for the UI delegate from the primary look and
328
   * feel.
329
   *
330
   * @param c  the component
331
   * @param i  the child index.
332
   *
333
   * @return The child returned by the UI delegate from the primary
334
   *         look and feel.
335
   */
336
  public Accessible getAccessibleChild(JComponent c, int i)
337
  {
338
    Accessible result = null;
339
    Iterator iterator = uis.iterator();
340
    // first UI delegate provides the return value
341
    if (iterator.hasNext())
342
      {
343
        ComponentUI ui = (ComponentUI) iterator.next();
344
        result = ui.getAccessibleChild(c, i);
345
      }
346
    // return values from auxiliary UI delegates are ignored
347
    while (iterator.hasNext())
348
      {
349
        ComponentUI ui = (ComponentUI) iterator.next();
350
        /* Accessible ignored = */ ui.getAccessibleChild(c, i);
351
      }
352
    return result;
353
  }
354
 
355
  /**
356
   * Calls the {@link TreeUI#getPathBounds(JTree, TreePath)} method
357
   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
358
   * returning the bounds for the UI delegate from the primary look and
359
   * feel.
360
   *
361
   * @param tree  the tree component.
362
   *
363
   * @return The bounds returned by the UI delegate from the primary
364
   *         look and feel.
365
   */
366
  public Rectangle getPathBounds(JTree tree, TreePath path)
367
  {
368
    Rectangle result = null;
369
    Iterator iterator = uis.iterator();
370
    // first UI delegate provides the return value
371
    if (iterator.hasNext())
372
      {
373
        TreeUI ui = (TreeUI) iterator.next();
374
        result = ui.getPathBounds(tree, path);
375
      }
376
    // return values from auxiliary UI delegates are ignored
377
    while (iterator.hasNext())
378
      {
379
        TreeUI ui = (TreeUI) iterator.next();
380
        /* Rectangle ignored = */ ui.getPathBounds(tree, path);
381
      }
382
    return result;
383
  }
384
 
385
  /**
386
   * Calls the {@link TreeUI#getPathForRow(JTree, int)} method
387
   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
388
   * returning the path for the UI delegate from the primary look and
389
   * feel.
390
   *
391
   * @param tree  the tree component.
392
   *
393
   * @return The path returned by the UI delegate from the primary
394
   *         look and feel.
395
   */
396
  public TreePath getPathForRow(JTree tree, int row)
397
  {
398
    TreePath result = null;
399
    Iterator iterator = uis.iterator();
400
    // first UI delegate provides the return value
401
    if (iterator.hasNext())
402
      {
403
        TreeUI ui = (TreeUI) iterator.next();
404
        result = ui.getPathForRow(tree, row);
405
      }
406
    // return values from auxiliary UI delegates are ignored
407
    while (iterator.hasNext())
408
      {
409
        TreeUI ui = (TreeUI) iterator.next();
410
        /* TreePath ignored = */ ui.getPathForRow(tree, row);
411
      }
412
    return result;
413
  }
414
 
415
  /**
416
   * Calls the {@link TreeUI#getRowForPath(JTree, TreePath)} method
417
   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
418
   * returning the row index for the UI delegate from the primary look and
419
   * feel.
420
   *
421
   * @param tree  the tree component.
422
   *
423
   * @return The row index returned by the UI delegate from the primary
424
   *         look and feel.
425
   */
426
  public int getRowForPath(JTree tree, TreePath path)
427
  {
428
    int result = 0;
429
    Iterator iterator = uis.iterator();
430
    // first UI delegate provides the return value
431
    if (iterator.hasNext())
432
      {
433
        TreeUI ui = (TreeUI) iterator.next();
434
        result = ui.getRowForPath(tree, path);
435
      }
436
    // return values from auxiliary UI delegates are ignored
437
    while (iterator.hasNext())
438
      {
439
        TreeUI ui = (TreeUI) iterator.next();
440
        /* int ignored = */ ui.getRowForPath(tree, path);
441
      }
442
    return result;
443
  }
444
 
445
  /**
446
   * Calls the {@link TreeUI#getRowCount(JTree)} method
447
   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
448
   * returning the count for the UI delegate from the primary look and
449
   * feel.
450
   *
451
   * @param tree  the tree component.
452
   *
453
   * @return The count returned by the UI delegate from the primary
454
   *         look and feel.
455
   */
456
  public int getRowCount(JTree tree)
457
  {
458
    int result = 0;
459
    Iterator iterator = uis.iterator();
460
    // first UI delegate provides the return value
461
    if (iterator.hasNext())
462
      {
463
        TreeUI ui = (TreeUI) iterator.next();
464
        result = ui.getRowCount(tree);
465
      }
466
    // return values from auxiliary UI delegates are ignored
467
    while (iterator.hasNext())
468
      {
469
        TreeUI ui = (TreeUI) iterator.next();
470
        /* int ignored = */ ui.getRowCount(tree);
471
      }
472
    return result;
473
  }
474
 
475
  /**
476
   * Calls the {@link TreeUI#getClosestPathForLocation(JTree, int, int)} method
477
   * for all the UI delegates managed by this <code>MultiTreeUI</code>,
478
   * returning the path for the UI delegate from the primary look and
479
   * feel.
480
   *
481
   * @param tree  the tree component.
482
   *
483
   * @return The path returned by the UI delegate from the primary
484
   *         look and feel.
485
   */
486
  public TreePath getClosestPathForLocation(JTree tree, int x, int y)
487
  {
488
    TreePath result = null;
489
    Iterator iterator = uis.iterator();
490
    // first UI delegate provides the return value
491
    if (iterator.hasNext())
492
      {
493
        TreeUI ui = (TreeUI) iterator.next();
494
        result = ui.getClosestPathForLocation(tree, x, y);
495
      }
496
    // return values from auxiliary UI delegates are ignored
497
    while (iterator.hasNext())
498
      {
499
        TreeUI ui = (TreeUI) iterator.next();
500
        /* TreePath ignored = */ ui.getClosestPathForLocation(tree, x, y);
501
      }
502
    return result;
503
  }
504
 
505
  /**
506
   * Calls the {@link TreeUI#isEditing(JTree)} method for all
507
   * the UI delegates managed by this <code>MultiTreeUI</code>,
508
   * returning the result for the UI delegate from the primary look and
509
   * feel.
510
   *
511
   * @param tree  the tree component.
512
   *
513
   * @return The result returned by the UI delegate from the primary
514
   *         look and feel.
515
   */
516
  public boolean isEditing(JTree tree)
517
  {
518
    boolean result = false;
519
    Iterator iterator = uis.iterator();
520
    // first UI delegate provides the return value
521
    if (iterator.hasNext())
522
      {
523
        TreeUI ui = (TreeUI) iterator.next();
524
        result = ui.isEditing(tree);
525
      }
526
    // return values from auxiliary UI delegates are ignored
527
    while (iterator.hasNext())
528
      {
529
        TreeUI ui = (TreeUI) iterator.next();
530
        /* boolean ignored = */ ui.isEditing(tree);
531
      }
532
    return result;
533
  }
534
 
535
  /**
536
   * Calls the {@link TreeUI#stopEditing(JTree)} method for all
537
   * the UI delegates managed by this <code>MultiTreeUI</code>,
538
   * returning the result for the UI delegate from the primary look and
539
   * feel.
540
   *
541
   * @param tree  the tree component.
542
   *
543
   * @return The result returned by the UI delegate from the primary
544
   *         look and feel.
545
   */
546
  public boolean stopEditing(JTree tree)
547
  {
548
    boolean result = false;
549
    Iterator iterator = uis.iterator();
550
    // first UI delegate provides the return value
551
    if (iterator.hasNext())
552
      {
553
        TreeUI ui = (TreeUI) iterator.next();
554
        result = ui.stopEditing(tree);
555
      }
556
    // return values from auxiliary UI delegates are ignored
557
    while (iterator.hasNext())
558
      {
559
        TreeUI ui = (TreeUI) iterator.next();
560
        /* boolean ignored = */ ui.stopEditing(tree);
561
      }
562
    return result;
563
  }
564
 
565
  /**
566
   * Calls the {@link TreeUI#cancelEditing(JTree)} method for
567
   * all the UI delegates managed by this <code>MultiTreeUI</code>.
568
   *
569
   * @param tree  the tree component.
570
   */
571
  public void cancelEditing(JTree tree)
572
  {
573
    Iterator iterator = uis.iterator();
574
    while (iterator.hasNext())
575
    {
576
      TreeUI ui = (TreeUI) iterator.next();
577
      ui.cancelEditing(tree);
578
    }
579
  }
580
 
581
  /**
582
   * Calls the {@link TreeUI#startEditingAtPath(JTree, TreePath)} method for
583
   * all the UI delegates managed by this <code>MultiTreeUI</code>.
584
   *
585
   * @param tree  the tree component.
586
   * @param path  the path.
587
   */
588
  public void startEditingAtPath(JTree tree, TreePath path)
589
  {
590
    Iterator iterator = uis.iterator();
591
    while (iterator.hasNext())
592
    {
593
      TreeUI ui = (TreeUI) iterator.next();
594
      ui.startEditingAtPath(tree, path);
595
    }
596
  }
597
 
598
  /**
599
   * Calls the {@link TreeUI#getEditingPath(JTree)} method for all
600
   * the UI delegates managed by this <code>MultiTreeUI</code>,
601
   * returning the path for the UI delegate from the primary look and
602
   * feel.
603
   *
604
   * @param tree  the tree component.
605
   *
606
   * @return The path returned by the UI delegate from the primary
607
   *         look and feel.
608
   */
609
  public TreePath getEditingPath(JTree tree)
610
  {
611
    TreePath result = null;
612
    Iterator iterator = uis.iterator();
613
    // first UI delegate provides the return value
614
    if (iterator.hasNext())
615
      {
616
        TreeUI ui = (TreeUI) iterator.next();
617
        result = ui.getEditingPath(tree);
618
      }
619
    // return values from auxiliary UI delegates are ignored
620
    while (iterator.hasNext())
621
      {
622
        TreeUI ui = (TreeUI) iterator.next();
623
        /* TreePath ignored = */ ui.getEditingPath(tree);
624
      }
625
    return result;
626
  }
627
 
628
}

powered by: WebSVN 2.1.0

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