Frames | No Frames |
1: /* StyleConstants.java -- 2: Copyright (C) 2004, 2005, 2006 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.text; 40: 41: import java.awt.Color; 42: import java.awt.Component; 43: import java.util.ArrayList; 44: 45: import javax.swing.Icon; 46: 47: /** 48: * Represents standard attribute keys. This class also contains a set of 49: * useful static utility methods for querying and populating an 50: * {@link AttributeSet}. 51: * 52: * @since 1.2 53: */ 54: public class StyleConstants 55: { 56: /** 57: * A value representing left alignment for the 58: * {@link ParagraphConstants#Alignment} attribute. 59: */ 60: public static final int ALIGN_LEFT = 0; 61: 62: /** 63: * A value representing center alignment for the 64: * {@link ParagraphConstants#Alignment} attribute. 65: */ 66: public static final int ALIGN_CENTER = 1; 67: 68: /** 69: * A value representing right alignment for the 70: * {@link ParagraphConstants#Alignment} attribute. 71: */ 72: public static final int ALIGN_RIGHT = 2; 73: 74: /** 75: * A value representing ful justification for the 76: * {@link ParagraphConstants#Alignment} attribute. 77: */ 78: public static final int ALIGN_JUSTIFIED = 3; 79: 80: /** An alias for {@link CharacterConstants#Background}. */ 81: public static final Object Background = CharacterConstants.Background; 82: 83: /** An alias for {@link CharacterConstants#BidiLevel}. */ 84: public static final Object BidiLevel = CharacterConstants.BidiLevel; 85: 86: /** An alias for {@link CharacterConstants#Bold}. */ 87: public static final Object Bold = CharacterConstants.Bold; 88: 89: /** An alias for {@link CharacterConstants#ComponentAttribute}. */ 90: public static final Object ComponentAttribute 91: = CharacterConstants.ComponentAttribute; 92: 93: /** An alias for {@link CharacterConstants#Family}. */ 94: public static final Object Family = CharacterConstants.Family; 95: 96: /** An alias for {@link CharacterConstants#Family}. */ 97: public static final Object FontFamily = CharacterConstants.Family; 98: 99: /** 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: }