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

Subversion Repositories openrisc

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 772 jeremybenn
/* MultiListUI.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.Point;
43
import java.awt.Rectangle;
44
import java.util.Iterator;
45
import java.util.Vector;
46
 
47
import javax.accessibility.Accessible;
48
import javax.swing.JComponent;
49
import javax.swing.JList;
50
import javax.swing.LookAndFeel;
51
import javax.swing.UIManager;
52
import javax.swing.plaf.ComponentUI;
53
import javax.swing.plaf.ListUI;
54
 
55
/**
56
 * A UI delegate that that coordinates multiple {@link ListUI}
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 MultiListUI extends ListUI
63
{
64
 
65
  /** A list of references to the actual component UIs. */
66
  protected Vector uis;
67
 
68
  /**
69
   * Creates a new <code>MultiListUI</code> instance.
70
   *
71
   * @see #createUI(JComponent)
72
   */
73
  public MultiListUI()
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>MultiListUI</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
    MultiListUI mui = new MultiListUI();
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>MultiListUI</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>MultiListUI</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>MultiListUI</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>MultiListUI</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>MultiListUI</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>MultiListUI</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>MultiListUI</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>MultiListUI</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>MultiListUI</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>MultiListUI</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>MultiListUI</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 ListUI#locationToIndex(JList, Point)} method for all
357
   * the UI delegates managed by this <code>MultiListUI</code>,
358
   * returning the index for the UI delegate from the primary look and
359
   * feel.
360
   *
361
   * @param list  the list.
362
   * @param location  the location.
363
   *
364
   * @return The index returned by the UI delegate from the primary
365
   *         look and feel.
366
   */
367
  public int locationToIndex(JList list, Point location)
368
  {
369
    int result = 0;
370
    Iterator iterator = uis.iterator();
371
    // first UI delegate provides the return value
372
    if (iterator.hasNext())
373
      {
374
        ListUI ui = (ListUI) iterator.next();
375
        result = ui.locationToIndex(list, location);
376
      }
377
    // return values from auxiliary UI delegates are ignored
378
    while (iterator.hasNext())
379
      {
380
        ListUI ui = (ListUI) iterator.next();
381
        /* int ignored = */ ui.locationToIndex(list, location);
382
      }
383
    return result;
384
  }
385
 
386
  /**
387
   * Calls the {@link ListUI#indexToLocation(JList, int)} method for all
388
   * the UI delegates managed by this <code>MultiListUI</code>,
389
   * returning the location for the UI delegate from the primary look and
390
   * feel.
391
   *
392
   * @param list  the list.
393
   * @param index  the index.
394
   *
395
   * @return The location returned by the UI delegate from the primary
396
   *         look and feel.
397
   */
398
  public Point indexToLocation(JList list, int index)
399
  {
400
    Point result = null;
401
    Iterator iterator = uis.iterator();
402
    // first UI delegate provides the return value
403
    if (iterator.hasNext())
404
      {
405
        ListUI ui = (ListUI) iterator.next();
406
        result = ui.indexToLocation(list, index);
407
      }
408
    // return values from auxiliary UI delegates are ignored
409
    while (iterator.hasNext())
410
      {
411
        ListUI ui = (ListUI) iterator.next();
412
        /* Point ignored = */ ui.indexToLocation(list, index);
413
      }
414
    return result;
415
  }
416
 
417
  /**
418
   * Calls the {@link ListUI#getCellBounds(JList, int, int)} method for all
419
   * the UI delegates managed by this <code>MultiListUI</code>,
420
   * returning the bounds for the UI delegate from the primary look and
421
   * feel.
422
   *
423
   * @param list  the list.
424
   * @param index1  the first index.
425
   * @param index2  the second index.
426
   *
427
   * @return The bounds returned by the UI delegate from the primary
428
   *         look and feel.
429
   */
430
  public Rectangle getCellBounds(JList list, int index1, int index2)
431
  {
432
    Rectangle result = null;
433
    Iterator iterator = uis.iterator();
434
    // first UI delegate provides the return value
435
    if (iterator.hasNext())
436
      {
437
        ListUI ui = (ListUI) iterator.next();
438
        result = ui.getCellBounds(list, index1, index2);
439
      }
440
    // return values from auxiliary UI delegates are ignored
441
    while (iterator.hasNext())
442
      {
443
        ListUI ui = (ListUI) iterator.next();
444
        /* Rectangle ignored = */ ui.getCellBounds(list, index1, index2);
445
      }
446
    return result;
447
  }
448
 
449
}

powered by: WebSVN 2.1.0

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