001 /* StyleConstants.java --
002 Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
003
004 This file is part of GNU Classpath.
005
006 GNU Classpath is free software; you can redistribute it and/or modify
007 it under the terms of the GNU General Public License as published by
008 the Free Software Foundation; either version 2, or (at your option)
009 any later version.
010
011 GNU Classpath is distributed in the hope that it will be useful, but
012 WITHOUT ANY WARRANTY; without even the implied warranty of
013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014 General Public License for more details.
015
016 You should have received a copy of the GNU General Public License
017 along with GNU Classpath; see the file COPYING. If not, write to the
018 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
019 02110-1301 USA.
020
021 Linking this library statically or dynamically with other modules is
022 making a combined work based on this library. Thus, the terms and
023 conditions of the GNU General Public License cover the whole
024 combination.
025
026 As a special exception, the copyright holders of this library give you
027 permission to link this library with independent modules to produce an
028 executable, regardless of the license terms of these independent
029 modules, and to copy and distribute the resulting executable under
030 terms of your choice, provided that you also meet, for each linked
031 independent module, the terms and conditions of the license of that
032 module. An independent module is a module which is not derived from
033 or based on this library. If you modify this library, you may extend
034 this exception to your version of the library, but you are not
035 obligated to do so. If you do not wish to do so, delete this
036 exception statement from your version. */
037
038
039 package javax.swing.text;
040
041 import java.awt.Color;
042 import java.awt.Component;
043 import java.util.ArrayList;
044
045 import javax.swing.Icon;
046
047 /**
048 * Represents standard attribute keys. This class also contains a set of
049 * useful static utility methods for querying and populating an
050 * {@link AttributeSet}.
051 *
052 * @since 1.2
053 */
054 public class StyleConstants
055 {
056 /**
057 * A value representing left alignment for the
058 * {@link ParagraphConstants#Alignment} attribute.
059 */
060 public static final int ALIGN_LEFT = 0;
061
062 /**
063 * A value representing center alignment for the
064 * {@link ParagraphConstants#Alignment} attribute.
065 */
066 public static final int ALIGN_CENTER = 1;
067
068 /**
069 * A value representing right alignment for the
070 * {@link ParagraphConstants#Alignment} attribute.
071 */
072 public static final int ALIGN_RIGHT = 2;
073
074 /**
075 * A value representing ful justification for the
076 * {@link ParagraphConstants#Alignment} attribute.
077 */
078 public static final int ALIGN_JUSTIFIED = 3;
079
080 /** An alias for {@link CharacterConstants#Background}. */
081 public static final Object Background = CharacterConstants.Background;
082
083 /** An alias for {@link CharacterConstants#BidiLevel}. */
084 public static final Object BidiLevel = CharacterConstants.BidiLevel;
085
086 /** An alias for {@link CharacterConstants#Bold}. */
087 public static final Object Bold = CharacterConstants.Bold;
088
089 /** An alias for {@link CharacterConstants#ComponentAttribute}. */
090 public static final Object ComponentAttribute
091 = CharacterConstants.ComponentAttribute;
092
093 /** An alias for {@link CharacterConstants#Family}. */
094 public static final Object Family = CharacterConstants.Family;
095
096 /** An alias for {@link CharacterConstants#Family}. */
097 public static final Object FontFamily = CharacterConstants.Family;
098
099 /** An alias for {@link CharacterConstants#Size}. */
100 public static final Object FontSize = CharacterConstants.Size;
101
102 /** An alias for {@link CharacterConstants#Foreground}. */
103 public static final Object Foreground = CharacterConstants.Foreground;
104
105 /** An alias for {@link CharacterConstants#IconAttribute}. */
106 public static final Object IconAttribute = CharacterConstants.IconAttribute;
107
108 /** An alias for {@link CharacterConstants#Italic}. */
109 public static final Object Italic = CharacterConstants.Italic;
110
111 /** An alias for {@link CharacterConstants#Size}. */
112 public static final Object Size = CharacterConstants.Size;
113
114 /** An alias for {@link CharacterConstants#StrikeThrough}. */
115 public static final Object StrikeThrough = CharacterConstants.StrikeThrough;
116
117 /** An alias for {@link CharacterConstants#Subscript}. */
118 public static final Object Subscript = CharacterConstants.Subscript;
119
120 /** An alias for {@link CharacterConstants#Superscript}. */
121 public static final Object Superscript = CharacterConstants.Superscript;
122
123 /** An alias for {@link CharacterConstants#Underline}. */
124 public static final Object Underline = CharacterConstants.Underline;
125
126 /** An alias for {@link ParagraphConstants#Alignment}. */
127 public static final Object Alignment = ParagraphConstants.Alignment;
128
129 /** An alias for {@link ParagraphConstants#FirstLineIndent}. */
130 public static final Object FirstLineIndent
131 = ParagraphConstants.FirstLineIndent;
132
133 /** An alias for {@link ParagraphConstants#LeftIndent}. */
134 public static final Object LeftIndent = ParagraphConstants.LeftIndent;
135
136 /** An alias for {@link ParagraphConstants#LineSpacing}. */
137 public static final Object LineSpacing = ParagraphConstants.LineSpacing;
138
139 /** An alias for {@link ParagraphConstants#Orientation}. */
140 public static final Object Orientation = ParagraphConstants.Orientation;
141
142 /** An alias for {@link ParagraphConstants#RightIndent}. */
143 public static final Object RightIndent = ParagraphConstants.RightIndent;
144
145 /** An alias for {@link ParagraphConstants#SpaceAbove}. */
146 public static final Object SpaceAbove = ParagraphConstants.SpaceAbove;
147
148 /** An alias for {@link ParagraphConstants#SpaceBelow}. */
149 public static final Object SpaceBelow = ParagraphConstants.SpaceBelow;
150
151 /** An alias for {@link ParagraphConstants#TabSet}. */
152 public static final Object TabSet = ParagraphConstants.TabSet;
153
154 public static final String ComponentElementName = "component";
155
156 public static final String IconElementName = "icon";
157
158 public static final Object ComposedTextAttribute
159 = new StyleConstants("composed text");
160
161 public static final Object ModelAttribute = new StyleConstants("model");
162
163 public static final Object NameAttribute = new StyleConstants("name");
164
165 public static final Object ResolveAttribute = new StyleConstants("resolver");
166
167 /**
168 * All StyleConstants keys. This is used in StyleContext to register
169 * all known keys as static attribute keys for serialization.
170 */
171 static ArrayList keys;
172
173 String keyname;
174
175 // Package-private to avoid accessor constructor for use by
176 // subclasses.
177 StyleConstants(String k)
178 {
179 keyname = k;
180 if (keys == null)
181 keys = new ArrayList();
182 keys.add(this);
183 }
184
185 /**
186 * Returns a string representation of the attribute key.
187 *
188 * @return A string representation of the attribute key.
189 */
190 public String toString()
191 {
192 return keyname;
193 }
194
195 /**
196 * Returns the alignment specified in the given attributes, or
197 * {@link #ALIGN_LEFT} if no alignment is specified.
198 *
199 * @param a the attribute set (<code>null</code> not permitted).
200 *
201 * @return The alignment (typically one of {@link #ALIGN_LEFT},
202 * {@link #ALIGN_RIGHT}, {@link #ALIGN_CENTER} or
203 * {@link #ALIGN_JUSTIFIED}).
204 *
205 * @see #setAlignment(MutableAttributeSet, int)
206 */
207 public static int getAlignment(AttributeSet a)
208 {
209 Integer i = (Integer) a.getAttribute(Alignment);
210 if (i != null)
211 return i.intValue();
212 else
213 return ALIGN_LEFT;
214 }
215
216 /**
217 * Returns the background color specified in the given attributes, or
218 * {@link Color#BLACK} if no background color is specified.
219 *
220 * @param a the attribute set (<code>null</code> not permitted).
221 *
222 * @return The background color.
223 *
224 * @see #setBackground(MutableAttributeSet, Color)
225 */
226 public static Color getBackground(AttributeSet a)
227 {
228 Color c = (Color) a.getAttribute(Background);
229 if (c != null)
230 return c;
231 else
232 return Color.BLACK;
233 }
234
235 /**
236 * Returns the bidi level specified in the given attributes, or
237 * <code>0</code> if no bidi level is specified.
238 *
239 * @param a the attribute set (<code>null</code> not permitted).
240 *
241 * @return The bidi level.
242 *
243 * @see #setBidiLevel(MutableAttributeSet, int)
244 */
245 public static int getBidiLevel(AttributeSet a)
246 {
247 Integer i = (Integer) a.getAttribute(BidiLevel);
248 if (i != null)
249 return i.intValue();
250 else
251 return 0;
252 }
253
254 /**
255 * Returns the component specified in the given attributes, or
256 * <code>null</code> if no component is specified.
257 *
258 * @param a the attribute set (<code>null</code> not permitted).
259 *
260 * @return The component (possibly <code>null</code>).
261 *
262 * @see #setComponent(MutableAttributeSet, Component)
263 */
264 public static Component getComponent(AttributeSet a)
265 {
266 Component c = (Component) a.getAttribute(ComponentAttribute);
267 if (c != null)
268 return c;
269 else
270 return null;
271 }
272
273 /**
274 * Returns the indentation specified in the given attributes, or
275 * <code>0.0f</code> if no indentation is specified.
276 *
277 * @param a the attribute set (<code>null</code> not permitted).
278 *
279 * @return The indentation.
280 *
281 * @see #setFirstLineIndent(MutableAttributeSet, float)
282 */
283 public static float getFirstLineIndent(AttributeSet a)
284 {
285 Float f = (Float) a.getAttribute(FirstLineIndent);
286 if (f != null)
287 return f.floatValue();
288 else
289 return 0.0f;
290 }
291
292 /**
293 * Returns the font family specified in the given attributes, or
294 * <code>Monospaced</code> if no font family is specified.
295 *
296 * @param a the attribute set (<code>null</code> not permitted).
297 *
298 * @return The font family.
299 *
300 * @see #setFontFamily(MutableAttributeSet, String)
301 */
302 public static String getFontFamily(AttributeSet a)
303 {
304 String ff = (String) a.getAttribute(FontFamily);
305 if (ff != null)
306 return ff;
307 else
308 return "Monospaced";
309 }
310
311 /**
312 * Returns the font size specified in the given attributes, or
313 * <code>12</code> if no font size is specified.
314 *
315 * @param a the attribute set (<code>null</code> not permitted).
316 *
317 * @return The font size.
318 *
319 * @see #setFontSize(MutableAttributeSet, int)
320 */
321 public static int getFontSize(AttributeSet a)
322 {
323 Integer i = (Integer) a.getAttribute(FontSize);
324 if (i != null)
325 return i.intValue();
326 else
327 return 12;
328 }
329
330 /**
331 * Returns the foreground color specified in the given attributes, or
332 * {@link Color#BLACK} if no foreground color is specified.
333 *
334 * @param a the attribute set (<code>null</code> not permitted).
335 *
336 * @return The foreground color.
337 *
338 * @see #setForeground(MutableAttributeSet, Color)
339 */
340 public static Color getForeground(AttributeSet a)
341 {
342 Color c = (Color) a.getAttribute(Foreground);
343 if (c != null)
344 return c;
345 else
346 return Color.BLACK;
347 }
348
349 /**
350 * Returns the icon specified in the given attributes, or
351 * <code>null</code> if no icon is specified.
352 *
353 * @param a the attribute set (<code>null</code> not permitted).
354 *
355 * @return The icon (possibly <code>null</code>).
356 *
357 * @see #setIcon(MutableAttributeSet, Icon)
358 */
359 public static Icon getIcon(AttributeSet a)
360 {
361 return (Icon) a.getAttribute(IconAttribute);
362 }
363
364 /**
365 * Returns the left indentation specified in the given attributes, or
366 * <code>0.0f</code> if no left indentation is specified.
367 *
368 * @param a the attribute set (<code>null</code> not permitted).
369 *
370 * @return The left indentation.
371 *
372 * @see #setLeftIndent(MutableAttributeSet, float)
373 */
374 public static float getLeftIndent(AttributeSet a)
375 {
376 Float f = (Float) a.getAttribute(LeftIndent);
377 if (f != null)
378 return f.floatValue();
379 else
380 return 0.0f;
381 }
382
383 /**
384 * Returns the line spacing specified in the given attributes, or
385 * <code>0.0f</code> if no line spacing is specified.
386 *
387 * @param a the attribute set (<code>null</code> not permitted).
388 *
389 * @return The line spacing.
390 *
391 * @see #setLineSpacing(MutableAttributeSet, float)
392 */
393 public static float getLineSpacing(AttributeSet a)
394 {
395 Float f = (Float) a.getAttribute(LineSpacing);
396 if (f != null)
397 return f.floatValue();
398 else
399 return 0.0f;
400 }
401
402 /**
403 * Returns the right indentation specified in the given attributes, or
404 * <code>0.0f</code> if no right indentation is specified.
405 *
406 * @param a the attribute set (<code>null</code> not permitted).
407 *
408 * @return The right indentation.
409 *
410 * @see #setRightIndent(MutableAttributeSet, float)
411 */
412 public static float getRightIndent(AttributeSet a)
413 {
414 Float f = (Float) a.getAttribute(RightIndent);
415 if (f != null)
416 return f.floatValue();
417 else
418 return 0.0f;
419 }
420
421 /**
422 * Returns the 'space above' specified in the given attributes, or
423 * <code>0.0f</code> if no 'space above' is specified.
424 *
425 * @param a the attribute set (<code>null</code> not permitted).
426 *
427 * @return The 'space above'.
428 *
429 * @see #setSpaceAbove(MutableAttributeSet, float)
430 */
431 public static float getSpaceAbove(AttributeSet a)
432 {
433 Float f = (Float) a.getAttribute(SpaceAbove);
434 if (f != null)
435 return f.floatValue();
436 else
437 return 0.0f;
438 }
439
440 /**
441 * Returns the 'space below' specified in the given attributes, or
442 * <code>0.0f</code> if no 'space below' is specified.
443 *
444 * @param a the attribute set (<code>null</code> not permitted).
445 *
446 * @return The 'space below'.
447 *
448 * @see #setSpaceBelow(MutableAttributeSet, float)
449 */
450 public static float getSpaceBelow(AttributeSet a)
451 {
452 Float f = (Float) a.getAttribute(SpaceBelow);
453 if (f != null)
454 return f.floatValue();
455 else
456 return 0.0f;
457 }
458
459 /**
460 * Returns the tab set specified in the given attributes, or
461 * <code>null</code> if no tab set is specified.
462 *
463 * @param a the attribute set (<code>null</code> not permitted).
464 *
465 * @return The tab set.
466 *
467 * @see #setTabSet(MutableAttributeSet, javax.swing.text.TabSet)
468 */
469 public static javax.swing.text.TabSet getTabSet(AttributeSet a)
470 {
471 // I'm guessing that the fully qualified class name is to differentiate
472 // between the TabSet class and the TabSet (attribute) instance on some
473 // compiler...
474 return (javax.swing.text.TabSet) a.getAttribute(StyleConstants.TabSet);
475 }
476
477 /**
478 * Returns the value of the bold flag in the given attributes, or
479 * <code>false</code> if no bold flag is specified.
480 *
481 * @param a the attribute set (<code>null</code> not permitted).
482 *
483 * @return The bold flag.
484 *
485 * @see #setBold(MutableAttributeSet, boolean)
486 */
487 public static boolean isBold(AttributeSet a)
488 {
489 Boolean b = (Boolean) a.getAttribute(Bold);
490 if (b != null)
491 return b.booleanValue();
492 else
493 return false;
494 }
495
496 /**
497 * Returns the value of the italic flag in the given attributes, or
498 * <code>false</code> if no italic flag is specified.
499 *
500 * @param a the attribute set (<code>null</code> not permitted).
501 *
502 * @return The italic flag.
503 *
504 * @see #setItalic(MutableAttributeSet, boolean)
505 */
506 public static boolean isItalic(AttributeSet a)
507 {
508 Boolean b = (Boolean) a.getAttribute(Italic);
509 if (b != null)
510 return b.booleanValue();
511 else
512 return false;
513 }
514
515 /**
516 * Returns the value of the strike-through flag in the given attributes, or
517 * <code>false</code> if no strike-through flag is specified.
518 *
519 * @param a the attribute set (<code>null</code> not permitted).
520 *
521 * @return The strike-through flag.
522 *
523 * @see #setStrikeThrough(MutableAttributeSet, boolean)
524 */
525 public static boolean isStrikeThrough(AttributeSet a)
526 {
527 Boolean b = (Boolean) a.getAttribute(StrikeThrough);
528 if (b != null)
529 return b.booleanValue();
530 else
531 return false;
532 }
533
534 /**
535 * Returns the value of the subscript flag in the given attributes, or
536 * <code>false</code> if no subscript flag is specified.
537 *
538 * @param a the attribute set (<code>null</code> not permitted).
539 *
540 * @return The subscript flag.
541 *
542 * @see #setSubscript(MutableAttributeSet, boolean)
543 */
544 public static boolean isSubscript(AttributeSet a)
545 {
546 Boolean b = (Boolean) a.getAttribute(Subscript);
547 if (b != null)
548 return b.booleanValue();
549 else
550 return false;
551 }
552
553 /**
554 * Returns the value of the superscript flag in the given attributes, or
555 * <code>false</code> if no superscript flag is specified.
556 *
557 * @param a the attribute set (<code>null</code> not permitted).
558 *
559 * @return The superscript flag.
560 *
561 * @see #setSuperscript(MutableAttributeSet, boolean)
562 */
563 public static boolean isSuperscript(AttributeSet a)
564 {
565 Boolean b = (Boolean) a.getAttribute(Superscript);
566 if (b != null)
567 return b.booleanValue();
568 else
569 return false;
570 }
571
572 /**
573 * Returns the value of the underline flag in the given attributes, or
574 * <code>false</code> if no underline flag is specified.
575 *
576 * @param a the attribute set (<code>null</code> not permitted).
577 *
578 * @return The underline flag.
579 *
580 * @see #setUnderline(MutableAttributeSet, boolean)
581 */
582 public static boolean isUnderline(AttributeSet a)
583 {
584 Boolean b = (Boolean) a.getAttribute(Underline);
585 if (b != null)
586 return b.booleanValue();
587 else
588 return false;
589 }
590
591 /**
592 * Adds an alignment attribute to the specified set.
593 *
594 * @param a the attribute set (<code>null</code> not permitted).
595 * @param align the alignment (typically one of
596 * {@link StyleConstants#ALIGN_LEFT},
597 * {@link StyleConstants#ALIGN_RIGHT},
598 * {@link StyleConstants#ALIGN_CENTER} or
599 * {@link StyleConstants#ALIGN_JUSTIFIED}).
600 *
601 * @throws NullPointerException if <code>a</code> is <code>null</code>.
602 *
603 * @see #getAlignment(AttributeSet)
604 */
605 public static void setAlignment(MutableAttributeSet a, int align)
606 {
607 a.addAttribute(Alignment, new Integer(align));
608 }
609
610 /**
611 * Adds a background attribute to the specified set.
612 *
613 * @param a the attribute set (<code>null</code> not permitted).
614 * @param bg the background (<code>null</code> not permitted).
615 *
616 * @throws NullPointerException if either argument is <code>null</code>.
617 *
618 * @see #getBackground(AttributeSet)
619 */
620 public static void setBackground(MutableAttributeSet a, Color bg)
621 {
622 a.addAttribute(Background, bg);
623 }
624
625 /**
626 * Adds a bidi-level attribute to the specified set.
627 *
628 * @param a the attribute set (<code>null</code> not permitted).
629 * @param lev the level.
630 *
631 * @throws NullPointerException if <code>a</code> is <code>null</code>.
632 *
633 * @see #getBidiLevel(AttributeSet)
634 */
635 public static void setBidiLevel(MutableAttributeSet a, int lev)
636 {
637 a.addAttribute(BidiLevel, new Integer(lev));
638 }
639
640 /**
641 * Adds a bold attribute to the specified set.
642 *
643 * @param a the attribute set (<code>null</code> not permitted).
644 * @param b the new value of the bold attribute.
645 *
646 * @throws NullPointerException if <code>a</code> is <code>null</code>.
647 *
648 * @see #isBold(AttributeSet)
649 */
650 public static void setBold(MutableAttributeSet a, boolean b)
651 {
652 a.addAttribute(Bold, Boolean.valueOf(b));
653 }
654
655 /**
656 * Adds a component attribute to the specified set.
657 *
658 * @param a the attribute set (<code>null</code> not permitted).
659 * @param c the component (<code>null</code> not permitted).
660 *
661 * @throws NullPointerException if either argument is <code>null</code>.
662 *
663 * @see #getComponent(AttributeSet)
664 */
665 public static void setComponent(MutableAttributeSet a, Component c)
666 {
667 a.addAttribute(ComponentAttribute, c);
668 }
669
670 /**
671 * Adds a first line indentation attribute to the specified set.
672 *
673 * @param a the attribute set (<code>null</code> not permitted).
674 * @param i the indentation.
675 *
676 * @throws NullPointerException if <code>a</code> is <code>null</code>.
677 *
678 * @see #getFirstLineIndent(AttributeSet)
679 */
680 public static void setFirstLineIndent(MutableAttributeSet a, float i)
681 {
682 a.addAttribute(FirstLineIndent, new Float(i));
683 }
684
685 /**
686 * Adds a font family attribute to the specified set.
687 *
688 * @param a the attribute set (<code>null</code> not permitted).
689 * @param fam the font family name (<code>null</code> not permitted).
690 *
691 * @throws NullPointerException if either argument is <code>null</code>.
692 *
693 * @see #getFontFamily(AttributeSet)
694 */
695 public static void setFontFamily(MutableAttributeSet a, String fam)
696 {
697 a.addAttribute(FontFamily, fam);
698 }
699
700 /**
701 * Adds a font size attribute to the specified set.
702 *
703 * @param a the attribute set (<code>null</code> not permitted).
704 * @param s the font size (in points).
705 *
706 * @throws NullPointerException if <code>a</code> is <code>null</code>.
707 *
708 * @see #getFontSize(AttributeSet)
709 */
710 public static void setFontSize(MutableAttributeSet a, int s)
711 {
712 a.addAttribute(FontSize, new Integer(s));
713 }
714
715 /**
716 * Adds a foreground color attribute to the specified set.
717 *
718 * @param a the attribute set (<code>null</code> not permitted).
719 * @param fg the foreground color (<code>null</code> not permitted).
720 *
721 * @throws NullPointerException if either argument is <code>null</code>.
722 *
723 * @see #getForeground(AttributeSet)
724 */
725 public static void setForeground(MutableAttributeSet a, Color fg)
726 {
727 a.addAttribute(Foreground, fg);
728 }
729
730 /**
731 * Adds an icon attribute to the specified set.
732 *
733 * @param a the attribute set (<code>null</code> not permitted).
734 * @param c the icon (<code>null</code> not permitted).
735 *
736 * @throws NullPointerException if either argument is <code>null</code>.
737 *
738 * @see #getIcon(AttributeSet)
739 */
740 public static void setIcon(MutableAttributeSet a, Icon c)
741 {
742 a.addAttribute(AbstractDocument.ElementNameAttribute, IconElementName);
743 a.addAttribute(IconAttribute, c);
744 }
745
746 /**
747 * Adds an italic attribute to the specified set.
748 *
749 * @param a the attribute set (<code>null</code> not permitted).
750 * @param b the new value of the italic attribute.
751 *
752 * @throws NullPointerException if <code>a</code> is <code>null</code>.
753 *
754 * @see #isItalic(AttributeSet)
755 */
756 public static void setItalic(MutableAttributeSet a, boolean b)
757 {
758 a.addAttribute(Italic, Boolean.valueOf(b));
759 }
760
761 /**
762 * Adds a left indentation attribute to the specified set.
763 *
764 * @param a the attribute set (<code>null</code> not permitted).
765 * @param i the indentation.
766 *
767 * @throws NullPointerException if <code>a</code> is <code>null</code>.
768 *
769 * @see #getLeftIndent(AttributeSet)
770 */
771 public static void setLeftIndent(MutableAttributeSet a, float i)
772 {
773 a.addAttribute(LeftIndent, new Float(i));
774 }
775
776 /**
777 * Adds a line spacing attribute to the specified set.
778 *
779 * @param a the attribute set (<code>null</code> not permitted).
780 * @param i the line spacing.
781 *
782 * @throws NullPointerException if <code>a</code> is <code>null</code>.
783 *
784 * @see #getLineSpacing(AttributeSet)
785 */
786 public static void setLineSpacing(MutableAttributeSet a, float i)
787 {
788 a.addAttribute(LineSpacing, new Float(i));
789 }
790
791 /**
792 * Adds a right indentation attribute to the specified set.
793 *
794 * @param a the attribute set (<code>null</code> not permitted).
795 * @param i the right indentation.
796 *
797 * @throws NullPointerException if <code>a</code> is <code>null</code>.
798 *
799 * @see #getRightIndent(AttributeSet)
800 */
801 public static void setRightIndent(MutableAttributeSet a, float i)
802 {
803 a.addAttribute(RightIndent, new Float(i));
804 }
805
806 /**
807 * Adds a 'space above' attribute to the specified set.
808 *
809 * @param a the attribute set (<code>null</code> not permitted).
810 * @param i the space above attribute value.
811 *
812 * @throws NullPointerException if <code>a</code> is <code>null</code>.
813 *
814 * @see #getSpaceAbove(AttributeSet)
815 */
816 public static void setSpaceAbove(MutableAttributeSet a, float i)
817 {
818 a.addAttribute(SpaceAbove, new Float(i));
819 }
820
821 /**
822 * Adds a 'space below' attribute to the specified set.
823 *
824 * @param a the attribute set (<code>null</code> not permitted).
825 * @param i the space below attribute value.
826 *
827 * @throws NullPointerException if <code>a</code> is <code>null</code>.
828 *
829 * @see #getSpaceBelow(AttributeSet)
830 */
831 public static void setSpaceBelow(MutableAttributeSet a, float i)
832 {
833 a.addAttribute(SpaceBelow, new Float(i));
834 }
835
836 /**
837 * Adds a strike-through attribue to the specified set.
838 *
839 * @param a the attribute set (<code>null</code> not permitted).
840 * @param b the strike-through attribute value.
841 *
842 * @throws NullPointerException if <code>a</code> is <code>null</code>.
843 *
844 * @see #isStrikeThrough(AttributeSet)
845 */
846 public static void setStrikeThrough(MutableAttributeSet a, boolean b)
847 {
848 a.addAttribute(StrikeThrough, Boolean.valueOf(b));
849 }
850
851 /**
852 * Adds a subscript attribute to the specified set.
853 *
854 * @param a the attribute set (<code>null</code> not permitted).
855 * @param b the subscript attribute value.
856 *
857 * @throws NullPointerException if <code>a</code> is <code>null</code>.
858 *
859 * @see #isSubscript(AttributeSet)
860 */
861 public static void setSubscript(MutableAttributeSet a, boolean b)
862 {
863 a.addAttribute(Subscript, Boolean.valueOf(b));
864 }
865
866 /**
867 * Adds a superscript attribute to the specified set.
868 *
869 * @param a the attribute set (<code>null</code> not permitted).
870 * @param b the superscript attribute value.
871 *
872 * @throws NullPointerException if <code>a</code> is <code>null</code>.
873 *
874 * @see #isSuperscript(AttributeSet)
875 */
876 public static void setSuperscript(MutableAttributeSet a, boolean b)
877 {
878 a.addAttribute(Superscript, Boolean.valueOf(b));
879 }
880
881 /**
882 * Adds a {@link TabSet} attribute to the specified set.
883 *
884 * @param a the attribute set (<code>null</code> not permitted).
885 * @param tabs the tab set (<code>null</code> not permitted).
886 *
887 * @throws NullPointerException if either argument is <code>null</code>.
888 *
889 * @see #getTabSet(AttributeSet)
890 */
891 public static void setTabSet(MutableAttributeSet a,
892 javax.swing.text.TabSet tabs)
893 {
894 a.addAttribute(StyleConstants.TabSet, tabs);
895 }
896
897 /**
898 * Adds an underline attribute to the specified set.
899 *
900 * @param a the attribute set (<code>null</code> not permitted).
901 * @param b the underline attribute value.
902 *
903 * @throws NullPointerException if <code>a</code> is <code>null</code>.
904 *
905 * @see #isUnderline(AttributeSet)
906 */
907 public static void setUnderline(MutableAttributeSet a, boolean b)
908 {
909 a.addAttribute(Underline, Boolean.valueOf(b));
910 }
911
912 // The remainder are so-called "typesafe enumerations" which
913 // alias subsets of the above constants.
914
915 /**
916 * A set of keys for attributes that apply to characters.
917 */
918 public static class CharacterConstants
919 extends StyleConstants
920 implements AttributeSet.CharacterAttribute
921 {
922 /**
923 * Private constructor prevents new instances being created.
924 *
925 * @param k the key name.
926 */
927 private CharacterConstants(String k)
928 {
929 super(k);
930 }
931
932 /** An alias for {@link ColorConstants#Background}. */
933 public static final Object Background = ColorConstants.Background;
934
935 /** A key for the bidi level character attribute. */
936 public static final Object BidiLevel = new CharacterConstants("bidiLevel");
937
938 /** An alias for {@link FontConstants#Bold}. */
939 public static final Object Bold = FontConstants.Bold;
940
941 /** A key for the component character attribute. */
942 public static final Object ComponentAttribute
943 = new CharacterConstants("component");
944
945 /** An alias for {@link FontConstants#Family}. */
946 public static final Object Family = FontConstants.Family;
947
948 /** An alias for {@link FontConstants#Size}. */
949 public static final Object Size = FontConstants.Size;
950
951 /** An alias for {@link ColorConstants#Foreground}. */
952 public static final Object Foreground = ColorConstants.Foreground;
953
954 /** A key for the icon character attribute. */
955 public static final Object IconAttribute = new CharacterConstants("icon");
956
957 /** A key for the italic character attribute. */
958 public static final Object Italic = FontConstants.Italic;
959
960 /** A key for the strike through character attribute. */
961 public static final Object StrikeThrough
962 = new CharacterConstants("strikethrough");
963
964 /** A key for the subscript character attribute. */
965 public static final Object Subscript = new CharacterConstants("subscript");
966
967 /** A key for the superscript character attribute. */
968 public static final Object Superscript
969 = new CharacterConstants("superscript");
970
971 /** A key for the underline character attribute. */
972 public static final Object Underline = new CharacterConstants("underline");
973
974 }
975
976 /**
977 * A set of keys for attributes that relate to colors.
978 */
979 public static class ColorConstants
980 extends StyleConstants
981 implements AttributeSet.ColorAttribute, AttributeSet.CharacterAttribute
982 {
983 /**
984 * Private constructor prevents new instances being created.
985 *
986 * @param k the key name.
987 */
988 private ColorConstants(String k)
989 {
990 super(k);
991 }
992
993 /** A key for the foreground color attribute. */
994 public static final Object Foreground = new ColorConstants("foreground");
995
996 /** A key for the background color attribute. */
997 public static final Object Background = new ColorConstants("background");
998 }
999
1000 /**
1001 * A set of keys for attributes that apply to fonts.
1002 */
1003 public static class FontConstants
1004 extends StyleConstants
1005 implements AttributeSet.FontAttribute, AttributeSet.CharacterAttribute
1006 {
1007 /**
1008 * Private constructor prevents new instances being created.
1009 *
1010 * @param k the key name.
1011 */
1012 private FontConstants(String k)
1013 {
1014 super(k);
1015 }
1016
1017 /** A key for the bold font attribute. */
1018 public static final Object Bold = new FontConstants("bold");
1019
1020 /** A key for the family font attribute. */
1021 public static final Object Family = new FontConstants("family");
1022
1023 /** A key for the italic font attribute. */
1024 public static final Object Italic = new FontConstants("italic");
1025
1026 /** A key for the size font attribute. */
1027 public static final Object Size = new FontConstants("size");
1028 }
1029
1030 /**
1031 * A set of keys for attributes that apply to paragraphs.
1032 */
1033 public static class ParagraphConstants
1034 extends StyleConstants
1035 implements AttributeSet.ParagraphAttribute
1036 {
1037 /**
1038 * Private constructor prevents new instances being created.
1039 *
1040 * @param k the key name.
1041 */
1042 private ParagraphConstants(String k)
1043 {
1044 super(k);
1045 }
1046
1047 /** A key for the alignment paragraph attribute. */
1048 public static final Object Alignment = new ParagraphConstants("Alignment");
1049
1050 /** A key for the first line indentation paragraph attribute. */
1051 public static final Object FirstLineIndent
1052 = new ParagraphConstants("FirstLineIndent");
1053
1054 /** A key for the left indentation paragraph attribute. */
1055 public static final Object LeftIndent
1056 = new ParagraphConstants("LeftIndent");
1057
1058 /** A key for the line spacing paragraph attribute. */
1059 public static final Object LineSpacing
1060 = new ParagraphConstants("LineSpacing");
1061
1062 /** A key for the orientation paragraph attribute. */
1063 public static final Object Orientation
1064 = new ParagraphConstants("Orientation");
1065
1066 /** A key for the right indentation paragraph attribute. */
1067 public static final Object RightIndent
1068 = new ParagraphConstants("RightIndent");
1069
1070 /** A key for the 'space above' paragraph attribute. */
1071 public static final Object SpaceAbove
1072 = new ParagraphConstants("SpaceAbove");
1073
1074 /** A key for the 'space below' paragraph attribute. */
1075 public static final Object SpaceBelow
1076 = new ParagraphConstants("SpaceBelow");
1077
1078 /** A key for the tabset paragraph attribute. */
1079 public static final Object TabSet = new ParagraphConstants("TabSet");
1080
1081 }
1082
1083 }