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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [javax/] [swing/] [plaf/] [BorderUIResource.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
/* BorderUIResource.java
2
   Copyright (C) 2002, 2003, 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;
40
 
41
import java.awt.Color;
42
import java.awt.Component;
43
import java.awt.Font;
44
import java.awt.Graphics;
45
import java.awt.Insets;
46
import java.io.Serializable;
47
 
48
import javax.swing.Icon;
49
import javax.swing.border.BevelBorder;
50
import javax.swing.border.Border;
51
import javax.swing.border.CompoundBorder;
52
import javax.swing.border.EmptyBorder;
53
import javax.swing.border.EtchedBorder;
54
import javax.swing.border.LineBorder;
55
import javax.swing.border.MatteBorder;
56
import javax.swing.border.TitledBorder;
57
 
58
/**
59
 * A wrapper for {@link javax.swing.border.Border} that also
60
 * implements the {@link UIResource} marker interface.  This is useful
61
 * for implementing pluggable look-and-feels: When switching the
62
 * current LookAndFeel, only those borders are replaced that are
63
 * marked as {@link UIResource}.  For this reason, a look-and-feel
64
 * should always install borders that implement
65
 * <code>UIResource</code>, such as the borders provided by this
66
 * class.
67
 *
68
 * @serial
69
 * @serialField delegate Border the <code>Border</code> wrapped
70
 *
71
 * @author Brian Jones (cbj@gnu.org)
72
 * @author Sascha Brawer (brawer@dandelis.ch)
73
 */
74
public class BorderUIResource implements Border, UIResource, Serializable
75
{
76
  /**
77
   * Verified using the <code>serialver</code> tool
78
   * of Apple/Sun JDK 1.3.1 on MacOS X 10.1.5.
79
   */
80
  static final long serialVersionUID = -3440553684010079691L;
81
 
82
 
83
  /**
84
   * A shared instance of an {@link EtchedBorderUIResource}, or
85
   * <code>null</code> if the {@link #getEtchedBorderUIResource()}
86
   * method has not yet been called.
87
   */
88
  private static Border etchedBorderUIResource;
89
 
90
 
91
  /**
92
   * A shared instance of a {@link BevelBorderUIResource} whose
93
   * <code>bevelType</code> is {@link
94
   * javax.swing.border.BevelBorder#LOWERED}, or <code>null</code> if
95
   * the {@link #getLoweredBevelBorderUIResource()} has not yet been
96
   * called.
97
   */
98
  private static Border loweredBevelBorderUIResource;
99
 
100
 
101
  /**
102
   * A shared instance of a {@link BevelBorderUIResource} whose
103
   * <code>bevelType</code> is {@link
104
   * javax.swing.border.BevelBorder#RAISED}, or <code>null</code> if
105
   * the {@link #getRaisedBevelBorderUIResource()} has not yet been
106
   * called.
107
   */
108
  private static Border raisedBevelBorderUIResource;
109
 
110
 
111
  /**
112
   * A shared instance of a {@link LineBorderUIResource} for
113
   * a one-pixel thick black line, or <code>null</code> if
114
   * the {@link #getBlackLineBorderUIResource()} has not yet been
115
   * called.
116
   */
117
  private static Border blackLineBorderUIResource;
118
 
119
 
120
  /**
121
   * Returns a shared instance of an etched border which also
122
   * is marked as an {@link UIResource}.
123
   *
124
   * @see javax.swing.border.EtchedBorder
125
   */
126
  public static Border getEtchedBorderUIResource()
127
  {
128
    /* Swing is not designed to be thread-safe, so there is no
129
     * need to synchronize the access to the global variable.
130
     */
131
    if (etchedBorderUIResource == null)
132
      etchedBorderUIResource = new EtchedBorderUIResource();
133
    return etchedBorderUIResource;
134
  }
135
 
136
 
137
  /**
138
   * Returns a shared instance of {@link BevelBorderUIResource} whose
139
   * <code>bevelType</code> is {@link
140
   * javax.swing.border.BevelBorder#LOWERED}.
141
   *
142
   * @see javax.swing.border.BevelBorder
143
   */
144
  public static Border getLoweredBevelBorderUIResource()
145
  {
146
    /* Swing is not designed to be thread-safe, so there is no
147
     * need to synchronize the access to the global variable.
148
     */
149
    if (loweredBevelBorderUIResource == null)
150
      loweredBevelBorderUIResource = new BevelBorderUIResource(
151
        BevelBorder.LOWERED);
152
    return loweredBevelBorderUIResource;
153
  }
154
 
155
 
156
  /**
157
   * Returns a shared instance of {@link BevelBorderUIResource} whose
158
   * <code>bevelType</code> is {@link
159
   * javax.swing.border.BevelBorder#RAISED}.
160
   *
161
   * @see javax.swing.border.BevelBorder
162
   */
163
  public static Border getRaisedBevelBorderUIResource()
164
  {
165
    /* Swing is not designed to be thread-safe, so there is no
166
     * need to synchronize the access to the global variable.
167
     */
168
    if (raisedBevelBorderUIResource == null)
169
      raisedBevelBorderUIResource = new BevelBorderUIResource(
170
        BevelBorder.RAISED);
171
    return raisedBevelBorderUIResource;
172
  }
173
 
174
 
175
  /**
176
   * Returns a shared instance of {@link LineBorderUIResource} for
177
   * a black, one-pixel width border.
178
   *
179
   * @see javax.swing.border.LineBorder
180
   */
181
  public static Border getBlackLineBorderUIResource()
182
  {
183
    /* Swing is not designed to be thread-safe, so there is no
184
     * need to synchronize the access to the global variable.
185
     */
186
    if (blackLineBorderUIResource == null)
187
      blackLineBorderUIResource = new LineBorderUIResource(Color.black);
188
    return blackLineBorderUIResource;
189
  }
190
 
191
 
192
  /**
193
   * The wrapped border.
194
   */
195
  private Border delegate;
196
 
197
 
198
  /**
199
   * Constructs a <code>BorderUIResource</code> for wrapping
200
   * a <code>Border</code> object.
201
   *
202
   * @param delegate the border to be wrapped.
203
   */
204
  public BorderUIResource(Border delegate)
205
  {
206
    if (delegate == null)
207
      throw new IllegalArgumentException();
208
 
209
    this.delegate = delegate;
210
  }
211
 
212
 
213
  /**
214
   * Paints the border around an enclosed component by calling
215
   * the <code>paintBorder</code> method of the wrapped delegate.
216
   *
217
   * @param c the component whose border is to be painted.
218
   * @param g the graphics for painting.
219
   * @param x the horizontal position for painting the border.
220
   * @param y the vertical position for painting the border.
221
   * @param width the width of the available area for painting the border.
222
   * @param height the height of the available area for painting the border.
223
   */
224
  public void paintBorder(Component c, Graphics g,
225
                          int x, int y, int width, int height)
226
  {
227
    delegate.paintBorder(c, g, x, y, width, height);
228
  }
229
 
230
 
231
  /**
232
   * Measures the width of this border by calling the
233
   * <code>getBorderInsets</code> method of the wrapped
234
   * delegate.
235
   *
236
   * @param c the component whose border is to be measured.
237
   *
238
   * @return an Insets object whose <code>left</code>, <code>right</code>,
239
   *         <code>top</code> and <code>bottom</code> fields indicate the
240
   *         width of the border at the respective edge.
241
   */
242
  public Insets getBorderInsets(Component c)
243
  {
244
    return delegate.getBorderInsets(c);
245
  }
246
 
247
 
248
  /**
249
   * Determines whether this border fills every pixel in its area
250
   * when painting by calling the <code>isBorderOpaque</code>
251
   * method of the wrapped delegate.
252
   *
253
   * @return <code>true</code> if the border is fully opaque, or
254
   *         <code>false</code> if some pixels of the background
255
   *         can shine through the border.
256
   */
257
  public boolean isBorderOpaque()
258
  {
259
    return delegate.isBorderOpaque();
260
  }
261
 
262
 
263
  /**
264
   * A {@link javax.swing.border.BevelBorder} that also implements the
265
   * {@link UIResource} marker interface.  This is useful for
266
   * implementing pluggable look-and-feels: When switching the current
267
   * LookAndFeel, only those borders are replaced that are marked as
268
   * {@link UIResource}.  For this reason, a look-and-feel should
269
   * always install borders that implement <code>UIResource</code>,
270
   * such as the borders provided by this class.
271
   *
272
   * @author Brian Jones (cbj@gnu.org)
273
   * @author Sascha Brawer (brawer@dandelis.ch)
274
   */
275
  public static class BevelBorderUIResource
276
    extends BevelBorder
277
    implements UIResource, Serializable
278
  {
279
    private static final long serialVersionUID = -1275542891108351642L;
280
 
281
    /**
282
     * Constructs a BevelBorderUIResource whose colors will be derived
283
     * from the background of the enclosed component. The background
284
     * color is retrieved each time the border is painted, so a border
285
     * constructed by this method will automatically reflect a change
286
     * to the component&#x2019;s background color.
287
     *
288
     * <p><img src="../border/doc-files/BevelBorder-1.png"
289
     * width="500" height="150"
290
     * alt="[An illustration showing raised and lowered BevelBorders]" /></p>
291
     *
292
     * @param bevelType the desired appearance of the border. The value
293
     *        must be either {@link javax.swing.border.BevelBorder#RAISED}
294
     *        or {@link javax.swing.border.BevelBorder#LOWERED}.
295
     *
296
     * @throws IllegalArgumentException if <code>bevelType</code> has
297
     *         an unsupported value.
298
     */
299
    public BevelBorderUIResource(int bevelType)
300
    {
301
      super(bevelType);
302
    }
303
 
304
 
305
    /**
306
     * Constructs a BevelBorderUIResource given its appearance type
307
     * and two colors for its highlight and shadow.
308
     *
309
     * <p><img src="../border/doc-files/BevelBorder-2.png" width="500"
310
     * height="150" alt="[An illustration showing BevelBorders that were
311
     * constructed with this method]" /></p>
312
     *
313
     * @param bevelType the desired appearance of the border. The value
314
     *        must be either {@link javax.swing.border.BevelBorder#RAISED}
315
     *        or {@link javax.swing.border.BevelBorder#LOWERED}.
316
     *
317
     * @param highlight the color that will be used for the inner side
318
     *        of the highlighted edges (top and left if if
319
     *        <code>bevelType</code> is {@link
320
     *        javax.swing.border.BevelBorder#RAISED}; bottom and right
321
     *        otherwise). The color for the outer side is a brightened
322
     *        version of this color.
323
     *
324
     * @param shadow the color that will be used for the outer side of
325
     *        the shadowed edges (bottom and right if
326
     *        <code>bevelType</code> is {@link
327
     *        javax.swing.border.BevelBorder#RAISED}; top and left
328
     *        otherwise). The color for the inner side is a brightened
329
     *        version of this color.
330
     *
331
     * @throws IllegalArgumentException if <code>bevelType</code> has
332
     *         an unsupported value.
333
     *
334
     * @throws NullPointerException if <code>highlight</code> or
335
     *         <code>shadow</code> is <code>null</code>.
336
     */
337
    public BevelBorderUIResource(int bevelType,
338
                                 Color highlight,
339
                                 Color shadow)
340
    {
341
      super(bevelType, highlight, shadow);
342
    }
343
 
344
 
345
    /**
346
     * Constructs a BevelBorderUIResource given its appearance type
347
     * and all its colors.
348
     *
349
     * <p><img src="../border/doc-files/BevelBorder-3.png" width="500"
350
     * height="150" alt="[An illustration showing BevelBorders that
351
     * were constructed with this method]" /></p>
352
     *
353
     * @param bevelType the desired appearance of the border. The value
354
     *        must be either {@link javax.swing.border.BevelBorder#RAISED}
355
     *        or {@link javax.swing.border.BevelBorder#LOWERED}.
356
     *
357
     * @param highlightOuter the color that will be used for the outer
358
     *        side of the highlighted edges (top and left if
359
     *        <code>bevelType</code> is {@link
360
     *        javax.swing.border.BevelBorder#RAISED}; bottom and right
361
     *        otherwise).
362
     *
363
     * @param highlightInner the color that will be used for the inner
364
     *        side of the highlighted edges.
365
     *
366
     * @param shadowOuter the color that will be used for the outer
367
     *        side of the shadowed edges (bottom and right if
368
     *        <code>bevelType</code> is {@link
369
     *        javax.swing.border.BevelBorder#RAISED}; top and left
370
     *        otherwise).
371
     *
372
     * @param shadowInner the color that will be used for the inner
373
     *        side of the shadowed edges.
374
     *
375
     * @throws IllegalArgumentException if <code>bevelType</code> has
376
     *         an unsupported value.
377
     *
378
     * @throws NullPointerException if one of the passed colors
379
     *         is <code>null</code>.
380
     */
381
    public BevelBorderUIResource(int bevelType,
382
                                 Color highlightOuter,
383
                                 Color highlightInner,
384
                                 Color shadowOuter,
385
                                 Color shadowInner)
386
    {
387
      super(bevelType,
388
            highlightOuter, highlightInner,
389
            shadowOuter, shadowInner);
390
    }
391
  }
392
 
393
 
394
  /**
395
   * A {@link javax.swing.border.CompoundBorder} that also implements the
396
   * {@link UIResource} marker interface.  This is useful for
397
   * implementing pluggable look-and-feels: When switching the current
398
   * LookAndFeel, only those borders are replaced that are marked as
399
   * {@link UIResource}.  For this reason, a look-and-feel should
400
   * always install borders that implement <code>UIResource</code>,
401
   * such as the borders provided by this class.
402
   *
403
   * @author Brian Jones (cbj@gnu.org)
404
   * @author Sascha Brawer (brawer@dandelis.ch)
405
   */
406
  public static class CompoundBorderUIResource
407
    extends CompoundBorder
408
    implements UIResource, Serializable
409
  {
410
    private static final long serialVersionUID = 7550017084975167341L;
411
 
412
    /**
413
     * Constructs a CompoundBorderUIResource with the specified inside
414
     * and outside borders.
415
     *
416
     * @param outsideBorder the outside border, which is painted to the
417
     *        outside of both <code>insideBorder</code> and the enclosed
418
     *        component. It is acceptable to pass <code>null</code>, in
419
     *        which case no outside border is painted.
420
     *
421
     * @param insideBorder the inside border, which is painted to
422
     *        between <code>outsideBorder</code> and the enclosed
423
     *        component. It is acceptable to pass <code>null</code>, in
424
     *        which case no inside border is painted.
425
     */
426
    public CompoundBorderUIResource(Border outsideBorder,
427
                                    Border insideBorder)
428
    {
429
      super(outsideBorder, insideBorder);
430
    }
431
  }
432
 
433
 
434
  /**
435
   * An {@link javax.swing.border.EmptyBorder} that also implements the
436
   * {@link UIResource} marker interface.  This is useful for
437
   * implementing pluggable look-and-feels: When switching the current
438
   * LookAndFeel, only those borders are replaced that are marked as
439
   * {@link UIResource}.  For this reason, a look-and-feel should
440
   * always install borders that implement <code>UIResource</code>,
441
   * such as the borders provided by this class.
442
   *
443
   * <p><img src="../border/doc-files/EmptyBorder-1.png"
444
   * width="290" height="200"
445
   * alt="[An illustration of EmptyBorder]" /></p>
446
   *
447
   * @author Brian Jones (cbj@gnu.org)
448
   * @author Sascha Brawer (brawer@dandelis.ch)
449
   */
450
  public static class EmptyBorderUIResource
451
    extends EmptyBorder
452
    implements UIResource, Serializable
453
  {
454
    private static final long serialVersionUID = -4914187529340071708L;
455
 
456
    /**
457
     * Constructs an empty border given the number of pixels required
458
     * on each side.
459
     *
460
     * @param top the number of pixels that the border will need
461
     *        for its top edge.
462
     *
463
     * @param left the number of pixels that the border will need
464
     *        for its left edge.
465
     *
466
     * @param bottom the number of pixels that the border will need
467
     *        for its bottom edge.
468
     *
469
     * @param right the number of pixels that the border will need
470
     *        for its right edge.
471
     */
472
    public EmptyBorderUIResource(int top, int left, int bottom, int right)
473
    {
474
      super(top, left, bottom, right);
475
    }
476
 
477
 
478
    /**
479
     * Constructs an empty border given the number of pixels required
480
     * on each side, passed in an Insets object.
481
     *
482
     * @param insets the Insets for the new border.
483
     */
484
    public EmptyBorderUIResource(Insets insets)
485
    {
486
      super(insets);
487
    }
488
  }
489
 
490
 
491
  /**
492
   * An {@link javax.swing.border.EtchedBorder} that also implements the
493
   * {@link UIResource} marker interface.  This is useful for
494
   * implementing pluggable look-and-feels: When switching the current
495
   * LookAndFeel, only those borders are replaced that are marked as
496
   * {@link UIResource}.  For this reason, a look-and-feel should
497
   * always install borders that implement <code>UIResource</code>,
498
   * such as the borders provided by this class.
499
   *
500
   * <p><img src="../border/doc-files/EtchedBorder-1.png" width="500"
501
   * height="200" alt="[An illustration of the two EtchedBorder
502
   * variants]" /></p>
503
   *
504
   * @author Brian Jones (cbj@gnu.org)
505
   * @author Sascha Brawer (brawer@dandelis.ch)
506
   */
507
  public static class EtchedBorderUIResource
508
    extends EtchedBorder
509
    implements UIResource, Serializable
510
  {
511
    private static final long serialVersionUID = -8186391754165296656L;
512
 
513
    /**
514
     * Constructs an EtchedBorderUIResource that appears lowered into
515
     * the surface. The colors will be derived from the background
516
     * color of the enclosed Component when the border gets painted.
517
     */
518
    public EtchedBorderUIResource()
519
    {
520
      super();
521
    }
522
 
523
 
524
    /**
525
     * Constructs an EtchedBorderUIResource with the specified
526
     * appearance. The colors will be derived from the background
527
     * color of the enclosed Component when the border gets painted.
528
     *
529
     * <p><img src="../border/doc-files/EtchedBorder-1.png"
530
     * width="500" height="200" alt="[An illustration of the two
531
     * EtchedBorder variants]" /></p>
532
     *
533
     * @param etchType the desired appearance of the border. The value
534
     *        must be either {@link javax.swing.border.EtchedBorder#RAISED}
535
     *        or {@link javax.swing.border.EtchedBorder#LOWERED}.
536
     *
537
     * @throws IllegalArgumentException if <code>etchType</code> has
538
     *         an unsupported value.
539
     */
540
    public EtchedBorderUIResource(int etchType)
541
    {
542
      super(etchType);
543
    }
544
 
545
 
546
    /**
547
     * Constructs a lowered EtchedBorderUIResource, explicitly
548
     * selecting the colors that will be used for highlight and
549
     * shadow.
550
     *
551
     * @param highlight the color that will be used for painting
552
     *        the highlight part of the border.
553
     *
554
     * @param shadow the color that will be used for painting
555
     *        the shadow part of the border.
556
     *
557
     * @see EtchedBorderUIResource#EtchedBorderUIResource(int, Color, Color)
558
     */
559
    public EtchedBorderUIResource(Color highlight, Color shadow)
560
    {
561
      super(highlight, shadow);
562
    }
563
 
564
 
565
    /**
566
     * Constructs an EtchedBorderUIResource with the specified
567
     * appearance, explicitly selecting the colors that will be used
568
     * for highlight and shadow.
569
     *
570
     * <p><img src="../border/doc-files/EtchedBorder-2.png" width="500"
571
     * height="200" alt="[An illustration that shows which pixels get
572
     * painted in what color]" /></p>
573
     *
574
     * @param etchType the desired appearance of the border. The value
575
     *        must be either {@link javax.swing.border.EtchedBorder#RAISED}
576
     *        or {@link javax.swing.border.EtchedBorder#LOWERED}.
577
     *
578
     * @param highlight the color that will be used for painting
579
     *        the highlight part of the border.
580
     *
581
     * @param shadow the color that will be used for painting
582
     *        the shadow part of the border.
583
     *
584
     * @throws IllegalArgumentException if <code>etchType</code> has
585
     *         an unsupported value.
586
     */
587
    public EtchedBorderUIResource(int etchType,
588
                                  Color highlight, Color shadow)
589
    {
590
      super(etchType, highlight, shadow);
591
    }
592
  }
593
 
594
 
595
  /**
596
   * A {@link javax.swing.border.LineBorder} that also implements the
597
   * {@link UIResource} marker interface.  This is useful for
598
   * implementing pluggable look-and-feels: When switching the current
599
   * LookAndFeel, only those borders are replaced that are marked as
600
   * {@link UIResource}.  For this reason, a look-and-feel should
601
   * always install borders that implement <code>UIResource</code>,
602
   * such as the borders provided by this class.
603
   *
604
   * <p><img src="../border/doc-files/LineBorder-1.png" width="500"
605
   * height="200" alt="[An illustration of two LineBorders]" /></p>
606
   *
607
   * @author Brian Jones (cbj@gnu.org)
608
   * @author Sascha Brawer (brawer@dandelis.ch)
609
   */
610
  public static class LineBorderUIResource
611
    extends LineBorder
612
    implements UIResource, Serializable
613
  {
614
    private static final long serialVersionUID = -6171232338180172310L;
615
 
616
    /**
617
     * Constructs a LineBorderUIResource given its color.  The border
618
     * will be one pixel thick and have plain corners.
619
     *
620
     * @param color the color for drawing the border.
621
     */
622
    public LineBorderUIResource(Color color)
623
    {
624
      super(color);
625
    }
626
 
627
 
628
    /**
629
     * Constructs a LineBorder given its color and thickness.  The
630
     * border will have plain corners.
631
     *
632
     * @param color the color for drawing the border.
633
     * @param thickness the width of the line in pixels.
634
     */
635
    public LineBorderUIResource(Color color, int thickness)
636
    {
637
      super(color, thickness);
638
    }
639
 
640
 
641
    /* Note: Since JDK1.3, javax.swing.border.LineBorder also has a
642
     * constructor which accepts a value for the roundedCorners
643
     * property. However, as of JDK1.4.1, the LineBorderUIResource
644
     * subclass does not have a corresponding constructor.
645
     *
646
     * A request for enhancing the Swing API has been filed with Sun:
647
     * http://developer.java.sun.com/developer/bugParade/bugs/4879999.html
648
     */
649
  }
650
 
651
 
652
  /**
653
   * A {@link javax.swing.border.MatteBorder} that also implements the
654
   * {@link UIResource} marker interface.  This is useful for
655
   * implementing pluggable look-and-feels: When switching the current
656
   * LookAndFeel, only those borders are replaced that are marked as
657
   * {@link UIResource}.  For this reason, a look-and-feel should
658
   * always install borders that implement <code>UIResource</code>,
659
   * such as the borders provided by this class.
660
   *
661
   * <p><img src="../border/doc-files/MatteBorder-1.png" width="500"
662
   * height="150" alt="[An illustration of two MatteBorders]" /></p>
663
   *
664
   * @author Brian Jones (cbj@gnu.org)
665
   * @author Sascha Brawer (brawer@dandelis.ch)
666
   */
667
  public static class MatteBorderUIResource
668
    extends MatteBorder
669
    implements UIResource, Serializable
670
  {
671
    private static final long serialVersionUID = -8107923147541851122L;
672
 
673
    /**
674
     * Constructs a MatteBorderUIResource given the width on each side
675
     * and a fill color.
676
     *
677
     * <p><img src="../border/doc-files/MatteBorder-2.png" width="500"
678
     * height="150" alt="[A picture of a MatteBorder made by this
679
     * constructor]" /></p>
680
     *
681
     * @param top the width of the border at its top edge.
682
     * @param left the width of the border at its left edge.
683
     * @param bottom the width of the border at its bottom edge.
684
     * @param right the width of the border at its right edge.
685
     * @param color the color for filling the border.
686
     */
687
    public MatteBorderUIResource(int top, int left,
688
                                 int bottom, int right,
689
                                 Color color)
690
    {
691
      super(top, left, bottom, right, color);
692
    }
693
 
694
 
695
    /**
696
     * Constructs a MatteBorderUIResource given the width on each side
697
     * and an icon for tiling the border area.
698
     *
699
     * <p><img src="../border/doc-files/MatteBorder-4.png" width="500"
700
     * height="150" alt="[A picture of a MatteBorder made by this
701
     * constructor]" /></p>
702
     *
703
     * @param top the width of the border at its top edge.
704
     * @param left the width of the border at its left edge.
705
     * @param bottom the width of the border at its bottom edge.
706
     * @param right the width of the border at its right edge.
707
     * @param tileIcon an icon for tiling the border area.
708
     */
709
    public MatteBorderUIResource(int top, int left,
710
                                 int bottom, int right,
711
                                 Icon tileIcon)
712
    {
713
      super(top, left, bottom, right, tileIcon);
714
    }
715
 
716
 
717
    /**
718
     * Constructs a MatteBorderUIResource given an icon for tiling the
719
     * border area. The icon width is used for the border insets at
720
     * the left and right edge, the icon height for the top and bottom
721
     * edge.
722
     *
723
     * <p><img src="../border/doc-files/MatteBorder-6.png" width="500"
724
     * height="150" alt="[A picture of a MatteBorder made by this
725
     * constructor]" /></p>
726
     *
727
     * @param tileIcon an icon for tiling the border area.
728
     */
729
    public MatteBorderUIResource(Icon tileIcon)
730
    {
731
      super(tileIcon);
732
    }
733
  }
734
 
735
 
736
  /**
737
   * A {@link javax.swing.border.TitledBorder} that also implements the
738
   * {@link UIResource} marker interface.  This is useful for
739
   * implementing pluggable look-and-feels: When switching the current
740
   * LookAndFeel, only those borders are replaced that are marked as
741
   * {@link UIResource}.  For this reason, a look-and-feel should
742
   * always install borders that implement <code>UIResource</code>,
743
   * such as the borders provided by this class.
744
   *
745
   * @author Brian Jones (cbj@gnu.org)
746
   * @author Sascha Brawer (brawer@dandelis.ch)
747
   */
748
  public static class TitledBorderUIResource
749
    extends TitledBorder
750
    implements UIResource, Serializable
751
  {
752
    private static final long serialVersionUID = 7667113547406407427L;
753
 
754
    /**
755
     * Constructs a TitledBorderUIResource given the text of its title.
756
     *
757
     * @param title the title text, or <code>null</code> to use no
758
     *        title text.
759
     */
760
    public TitledBorderUIResource(String title)
761
    {
762
      super(title);
763
    }
764
 
765
 
766
    /**
767
     * Constructs an initially untitled TitledBorderUIResource
768
     * given another border.
769
     *
770
     * @param border the border underneath the title, or
771
     *        <code>null</code> to use a default from
772
     *        the current look and feel.
773
     */
774
    public TitledBorderUIResource(Border border)
775
    {
776
      super(border);
777
    }
778
 
779
 
780
    /**
781
     * Constructs a TitledBorder given its border and title text.
782
     *
783
     * @param border the border underneath the title, or
784
     *        <code>null</code> to use a default from
785
     *        the current look and feel.
786
     *
787
     * @param title the title text, or <code>null</code>
788
     *        to use no title text.
789
     */
790
    public TitledBorderUIResource(Border border, String title)
791
    {
792
      super(border, title);
793
    }
794
 
795
 
796
    /**
797
     * Constructs a TitledBorderUIResource given its border, title
798
     * text, horizontal alignment, and vertical position.
799
     *
800
     * @param border the border underneath the title, or
801
     *        <code>null</code> to use a default
802
     *        from the current look and feel.
803
     *
804
     * @param title the title text, or <code>null</code>
805
     *        to use no title text.
806
     *
807
     * @param titleJustification the horizontal alignment of the title
808
     *        text in relation to the border. The value must be one of
809
     *        {@link javax.swing.border.TitledBorder#LEFT},
810
     *        {@link javax.swing.border.TitledBorder#CENTER},
811
     *        {@link javax.swing.border.TitledBorder#RIGHT},
812
     *        {@link javax.swing.border.TitledBorder#LEADING},
813
     *        {@link javax.swing.border.TitledBorder#TRAILING}, or
814
     *        {@link javax.swing.border.TitledBorder#DEFAULT_JUSTIFICATION}.
815
     *
816
     * @param titlePosition the vertical position of the title text
817
     *        in relation to the border. The value must be one of
818
     *        {@link javax.swing.border.TitledBorder#ABOVE_TOP},
819
     *        {@link javax.swing.border.TitledBorder#TOP},
820
     *        {@link javax.swing.border.TitledBorder#BELOW_TOP},
821
     *        {@link javax.swing.border.TitledBorder#ABOVE_BOTTOM},
822
     *        {@link javax.swing.border.TitledBorder#BOTTOM},
823
     *        {@link javax.swing.border.TitledBorder#BELOW_BOTTOM},
824
     *        or {@link javax.swing.border.TitledBorder#DEFAULT_POSITION}.
825
     *
826
     * @throws IllegalArgumentException if <code>titleJustification</code>
827
     *         or <code>titlePosition</code> have an unsupported value.
828
     */
829
    public TitledBorderUIResource(Border border, String title,
830
                                  int titleJustification,
831
                                  int titlePosition)
832
    {
833
      super(border, title, titleJustification, titlePosition);
834
    }
835
 
836
 
837
    /**
838
     * Constructs a TitledBorder given its border, title text,
839
     * horizontal alignment, vertical position, and font.
840
     *
841
     * @param border the border underneath the title, or
842
     *        <code>null</code> to use a default
843
     *        from the current look and feel.
844
     *
845
     * @param title the title text, or <code>null</code>
846
     *        to use no title text.
847
     *
848
     * @param titleJustification the horizontal alignment of the title
849
     *        text in relation to the border. The value must be one of
850
     *        {@link javax.swing.border.TitledBorder#LEFT},
851
     *        {@link javax.swing.border.TitledBorder#CENTER},
852
     *        {@link javax.swing.border.TitledBorder#RIGHT},
853
     *        {@link javax.swing.border.TitledBorder#LEADING},
854
     *        {@link javax.swing.border.TitledBorder#TRAILING}, or
855
     *        {@link javax.swing.border.TitledBorder#DEFAULT_JUSTIFICATION}.
856
     *
857
     * @param titlePosition the vertical position of the title text
858
     *        in relation to the border. The value must be one of
859
     *        {@link javax.swing.border.TitledBorder#ABOVE_TOP},
860
     *        {@link javax.swing.border.TitledBorder#TOP},
861
     *        {@link javax.swing.border.TitledBorder#BELOW_TOP},
862
     *        {@link javax.swing.border.TitledBorder#ABOVE_BOTTOM},
863
     *        {@link javax.swing.border.TitledBorder#BOTTOM},
864
     *        {@link javax.swing.border.TitledBorder#BELOW_BOTTOM},
865
     *        or {@link javax.swing.border.TitledBorder#DEFAULT_POSITION}.
866
     *
867
     * @param titleFont the font for the title text, or <code>null</code>
868
     *        to use a default from the current look and feel.
869
     *
870
     * @throws IllegalArgumentException if <code>titleJustification</code>
871
     *         or <code>titlePosition</code> have an unsupported value.
872
     */
873
    public TitledBorderUIResource(Border border, String title,
874
                                  int titleJustification,
875
                                  int titlePosition,
876
                                  Font titleFont)
877
    {
878
      super(border, title, titleJustification, titlePosition,
879
            titleFont);
880
    }
881
 
882
 
883
    /**
884
     * Constructs a TitledBorder given its border, title text,
885
     * horizontal alignment, vertical position, font, and color.
886
     *
887
     * @param border the border underneath the title, or
888
     *        <code>null</code> to use a default
889
     *        from the current look and feel.
890
     *
891
     * @param title the title text, or <code>null</code>
892
     *        to use no title text.
893
     *
894
     * @param titleJustification the horizontal alignment of the title
895
     *        text in relation to the border. The value must be one of
896
     *        {@link javax.swing.border.TitledBorder#LEFT},
897
     *        {@link javax.swing.border.TitledBorder#CENTER},
898
     *        {@link javax.swing.border.TitledBorder#RIGHT},
899
     *        {@link javax.swing.border.TitledBorder#LEADING},
900
     *        {@link javax.swing.border.TitledBorder#TRAILING}, or
901
     *        {@link javax.swing.border.TitledBorder#DEFAULT_JUSTIFICATION}.
902
     *
903
     * @param titlePosition the vertical position of the title text
904
     *        in relation to the border. The value must be one of
905
     *        {@link javax.swing.border.TitledBorder#ABOVE_TOP},
906
     *        {@link javax.swing.border.TitledBorder#TOP},
907
     *        {@link javax.swing.border.TitledBorder#BELOW_TOP},
908
     *        {@link javax.swing.border.TitledBorder#ABOVE_BOTTOM},
909
     *        {@link javax.swing.border.TitledBorder#BOTTOM},
910
     *        {@link javax.swing.border.TitledBorder#BELOW_BOTTOM},
911
     *        or {@link javax.swing.border.TitledBorder#DEFAULT_POSITION}.
912
     *
913
     * @param titleFont the font for the title text, or <code>null</code>
914
     *        to use a default from the current look and feel.
915
     *
916
     * @param titleColor the color for the title text, or <code>null</code>
917
     *        to use a default from the current look and feel.
918
     *
919
     * @throws IllegalArgumentException if <code>titleJustification</code>
920
     *         or <code>titlePosition</code> have an unsupported value.
921
     */
922
    public TitledBorderUIResource(Border border, String title,
923
                                  int titleJustification, int titlePosition,
924
                                  Font titleFont, Color titleColor)
925
    {
926
      super(border, title, titleJustification, titlePosition,
927
            titleFont, titleColor);
928
    }
929
  }
930
}

powered by: WebSVN 2.1.0

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