home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / jfc.bin / StyleConstants.java < prev    next >
Text File  |  1998-02-26  |  22KB  |  842 lines

  1. /*
  2.  * @(#)StyleConstants.java    1.12 98/01/13
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  * 
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  * 
  19.  */
  20. package com.sun.java.swing.text;
  21.  
  22. import java.awt.Color;
  23. import java.awt.Component;
  24. import com.sun.java.swing.Icon;
  25.  
  26. /**
  27.  * <p>
  28.  * A collection of <em>well known</em> or common attribute keys
  29.  * and methods to apply to an AttributeSet or MutableAttributeSet
  30.  * to get/set the properties in a typesafe manner.  
  31.  * <p>
  32.  * The paragraph attributes form the definition of a paragraph to be rendered.
  33.  * All sizes are specified in points (such as found in postscript), a
  34.  * device independent measure.
  35.  * </p>
  36.  * <p align=center><img src="images/paragraph.gif"></p>
  37.  * <p>
  38.  * 
  39.  * @author  Timothy Prinzing
  40.  * @version 1.12 01/13/98
  41.  */
  42. public class StyleConstants {
  43.  
  44.     /**
  45.      * Name of elements used to represent components.
  46.      */
  47.     public static final String ComponentElementName = "component";
  48.     
  49.     /**
  50.      * Name of elements used to represent icons.
  51.      */
  52.     public static final String IconElementName = "icon";
  53.  
  54.     /**
  55.      * Attribute name used to name the collection of
  56.      * attributes.
  57.      */
  58.     public static final Object NameAttribute = new StyleConstants("name");
  59.  
  60.     /**
  61.      * Attribute name used to identifiy the resolving parent
  62.      * set of attributes, if one is defined.
  63.      */
  64.     public static final Object ResolveAttribute = new StyleConstants("resolver");
  65.  
  66.     public String toString() {
  67.     return representation;
  68.     }
  69.  
  70.     // ---- character constants -----------------------------------
  71.  
  72.     /**
  73.      * Name of the font family.
  74.      */
  75.     public static final Object FontFamily = CharacterConstants.Family;
  76.  
  77.     /**
  78.      * Name of the font size.
  79.      */
  80.     public static final Object FontSize = CharacterConstants.Size;
  81.  
  82.     /**
  83.      * Name of the bold attribute.
  84.      */
  85.     public static final Object Bold = CharacterConstants.Bold;
  86.  
  87.     /**
  88.      * Name of the italic attribute.
  89.      */
  90.     public static final Object Italic = CharacterConstants.Italic;
  91.  
  92.     /**
  93.      * Name of the underline attribute.
  94.      */
  95.     public static final Object Underline = CharacterConstants.Underline;
  96.  
  97.     /**
  98.      * Name of the foreground color attribute.
  99.      */
  100.     public static final Object Foreground = CharacterConstants.Foreground;
  101.  
  102.     /**
  103.      * Name of the background color attribute.
  104.      */
  105.     public static final Object Background = CharacterConstants.Background;
  106.  
  107.     /**
  108.      * Name of the component attribute.
  109.      */
  110.     public static final Object ComponentAttribute = CharacterConstants.ComponentAttribute;
  111.  
  112.     /**
  113.      * Name of the icon attribute.
  114.      */
  115.     public static final Object IconAttribute = CharacterConstants.IconAttribute;
  116.  
  117.     /**
  118.      * The amount of space to indent the first
  119.      * line of the paragraph.  This value may be negative
  120.      * to offset in the reverse direction.  The type
  121.      * is Float and specifies the size of the space
  122.      * in points.
  123.      */
  124.     public static final Object FirstLineIndent = ParagraphConstants.FirstLineIndent;
  125.  
  126.     /**
  127.      * The amount to indent the left side
  128.      * of the paragraph.
  129.      * Type is float and specifies the size in points.
  130.      */
  131.     public static final Object LeftIndent = ParagraphConstants.LeftIndent;
  132.  
  133.     /**
  134.      * The amount to indent the right side
  135.      * of the paragraph.
  136.      * Type is float and specifies the size in points.
  137.      */
  138.     public static final Object RightIndent = ParagraphConstants.RightIndent;
  139.  
  140.     /**
  141.      * The amount of space between lines
  142.      * of the paragraph.
  143.      * Type is float and specifies the size in points.
  144.      */
  145.     public static final Object LineSpacing = ParagraphConstants.LineSpacing;
  146.  
  147.     /**
  148.      * The amount of space above the paragraph.
  149.      * Type is float and specifies the size in points.
  150.      */
  151.     public static final Object SpaceAbove = ParagraphConstants.SpaceAbove;
  152.  
  153.     /**
  154.      * The amount of space below the paragraph.
  155.      * Type is float and specifies the size in points.
  156.      */
  157.     public static final Object SpaceBelow = ParagraphConstants.SpaceBelow;
  158.  
  159.     /**
  160.      * Alignment for the paragraph.  The type is
  161.      * Integer.  Valid values are:
  162.      * <ul>
  163.      * <li>ALIGN_LEFT
  164.      * <li>ALIGN_RIGHT
  165.      * <li>ALIGN_CENTER
  166.      * <li>ALIGN_JUSTIFED
  167.      * </ul>
  168.      *
  169.      */
  170.     public static final Object Alignment = ParagraphConstants.Alignment;
  171.  
  172.     /**
  173.      * TabSet for the paragraph, type is a TabSet containing
  174.      * TabStops.
  175.      */
  176.     public static final Object TabSet = ParagraphConstants.TabSet;
  177.  
  178.     /**
  179.      * A possible value for paragraph alignment.  This
  180.      * specifies that the text aligned to the left 
  181.      * indent and extra whitespace should be placed on
  182.      * the right.
  183.      */
  184.     public static final int ALIGN_LEFT = 0;
  185.  
  186.     /**
  187.      * A possible value for paragraph alignment.  This
  188.      * specifies that the text aligned to the center
  189.      * and extra whitespace should be placed equally on
  190.      * the left and right.
  191.      */
  192.     public static final int ALIGN_CENTER = 1;
  193.  
  194.     /**
  195.      * A possible value for paragraph alignment.  This
  196.      * specifies that the text aligned to the right
  197.      * indent and extra whitespace should be placed on
  198.      * the left.
  199.      */
  200.     public static final int ALIGN_RIGHT = 2;
  201.  
  202.     /**
  203.      * A possible value for paragraph alignment.  This
  204.      * specifies that extra whitespace should be spread
  205.      * out through the rows of the paragraph with the
  206.      * text lined up with the left and right indent
  207.      * except on the last line which should be aligned
  208.      * to the left.
  209.      */
  210.     public static final int ALIGN_JUSTIFIED = 3;
  211.  
  212.     // --- character attribute accessors ---------------------------
  213.  
  214.     /**
  215.      * Gets the component setting from the attribute list.
  216.      *
  217.      * @param a the attribute set
  218.      * @return the component
  219.      */
  220.     public static Component getComponent(AttributeSet a) {
  221.     return (Component) a.getAttribute(ComponentAttribute);
  222.     }
  223.  
  224.     /**
  225.      * Sets the component attribute.
  226.      *
  227.      * @param a the attribute set
  228.      * @param c the component
  229.      */
  230.     public static void setComponent(MutableAttributeSet a, Component c) {
  231.     a.addAttribute(AbstractDocument.ElementNameAttribute, ComponentElementName);
  232.     a.addAttribute(ComponentAttribute, c);
  233.     }
  234.  
  235.     /**
  236.      * Gets the icon setting from the attribute list.
  237.      *
  238.      * @param a the attribute set
  239.      * @return the icon
  240.      */
  241.     public static Icon getIcon(AttributeSet a) {
  242.     return (Icon) a.getAttribute(IconAttribute);
  243.     }
  244.  
  245.     /**
  246.      * Sets the icon attribute.
  247.      *
  248.      * @param a the attribute set
  249.      * @param c the icon
  250.      */
  251.     public static void setIcon(MutableAttributeSet a, Icon c) {
  252.     a.addAttribute(AbstractDocument.ElementNameAttribute, IconElementName);
  253.     a.addAttribute(IconAttribute, c);
  254.     }
  255.  
  256.     /**
  257.      * Gets the font family setting from the attribute list.
  258.      *
  259.      * @param a the attribute set
  260.      * @return the font family
  261.      */
  262.     public static String getFontFamily(AttributeSet a) {
  263.     String family = (String) a.getAttribute(FontFamily);
  264.     if (family == null) {
  265.         family = "Courier";
  266.     }
  267.     return family;
  268.     }
  269.  
  270.     /**
  271.      * Sets the font attribute.
  272.      *
  273.      * @param a the attribute set
  274.      * @param fam the font
  275.      */
  276.     public static void setFontFamily(MutableAttributeSet a, String fam) {
  277.     a.addAttribute(FontFamily, fam);
  278.     }
  279.  
  280.     /**
  281.      * Gets the font size setting from the attribute list.
  282.      *
  283.      * @param a the attribute set
  284.      * @return the font size
  285.      */
  286.     public static int getFontSize(AttributeSet a) {
  287.     Integer size = (Integer) a.getAttribute(FontSize);
  288.     if (size != null) {
  289.         return size.intValue();
  290.     }
  291.     return 12;
  292.     }
  293.  
  294.     /**
  295.      * Sets the font size attribute.
  296.      *
  297.      * @param a the attribute set
  298.      * @param s the font size 
  299.      */
  300.     public static void setFontSize(MutableAttributeSet a, int s) {
  301.     a.addAttribute(FontSize, new Integer(s));
  302.     }
  303.  
  304.     /**
  305.      * Checks whether the bold attribute is set.
  306.      *
  307.      * @param a the attribute set
  308.      * @return true if set else false
  309.      */
  310.     public static boolean isBold(AttributeSet a) {
  311.     Boolean bold = (Boolean) a.getAttribute(Bold);
  312.     if (bold != null) {
  313.         return bold.booleanValue();
  314.     }
  315.     return false;
  316.     }
  317.  
  318.     /**
  319.      * Sets the bold attribute.
  320.      *
  321.      * @param a the attribute set
  322.      * @param b specifies true/false for setting the attribute
  323.      */
  324.     public static void setBold(MutableAttributeSet a, boolean b) {
  325.     a.addAttribute(Bold, new Boolean(b));
  326.     }
  327.  
  328.     /**
  329.      * Checks whether the italic attribute is set.
  330.      *
  331.      * @param a the attribute set
  332.      * @return true if set else false
  333.      */
  334.     public static boolean isItalic(AttributeSet a) {
  335.     Boolean italic = (Boolean) a.getAttribute(Italic);
  336.     if (italic != null) {
  337.         return italic.booleanValue();
  338.     }
  339.     return false;
  340.     }
  341.  
  342.     /**
  343.      * Sets the italic attribute.
  344.      *
  345.      * @param a the attribute set
  346.      * @param b specifies true/false for setting the attribute
  347.      */
  348.     public static void setItalic(MutableAttributeSet a, boolean b) {
  349.     a.addAttribute(Italic, new Boolean(b));
  350.     }
  351.  
  352.     /**
  353.      * Checks whether the underline attribute is set.
  354.      *
  355.      * @param a the attribute set
  356.      * @return true if set else false
  357.      */
  358.     public static boolean isUnderline(AttributeSet a) {
  359.     Boolean underline = (Boolean) a.getAttribute(Underline);
  360.     if (underline != null) {
  361.         return underline.booleanValue();
  362.     }
  363.     return false;
  364.     }
  365.  
  366.     /**
  367.      * Sets the underline attribute.
  368.      *
  369.      * @param a the attribute set
  370.      * @param b specifies true/false for setting the attribute
  371.      */
  372.     public static void setUnderline(MutableAttributeSet a, boolean b) {
  373.     a.addAttribute(Underline, new Boolean(b));
  374.     }
  375.  
  376.     /**
  377.      * Gets the foreground color setting from the attribute list.
  378.      *
  379.      * @param a the attribute set
  380.      * @return the color 
  381.      */
  382.     public static Color getForeground(AttributeSet a) {
  383.     Color fg = (Color) a.getAttribute(Foreground);
  384.     if (fg == null) {
  385.         fg = Color.black;
  386.     }
  387.     return fg;
  388.     }
  389.  
  390.     /**
  391.      * Sets the foreground color.
  392.      *
  393.      * @param a the attribute set
  394.      * @param fg the color
  395.      */
  396.     public static void setForeground(MutableAttributeSet a, Color fg) {
  397.     a.addAttribute(Foreground, fg);
  398.     }
  399.  
  400.  
  401.     // --- paragraph attribute accessors ----------------------------
  402.  
  403.     /**
  404.      * Gets the first line indent setting.
  405.      *
  406.      * @param a the attribute set
  407.      * @returns the value
  408.      */
  409.     public static float getFirstLineIndent(AttributeSet a) {
  410.     Float indent = (Float) a.getAttribute(FirstLineIndent);
  411.     if (indent != null) {
  412.         return indent.floatValue();
  413.     }
  414.     return 0;
  415.     }
  416.     
  417.     /**
  418.      * Sets the first line indent.
  419.      *
  420.      * @param a the attribute set
  421.      * @param i the value
  422.      */ 
  423.     public static void setFirstLineIndent(MutableAttributeSet a, float i) {
  424.     a.addAttribute(FirstLineIndent, new Float(i));
  425.     }
  426.  
  427.     /**
  428.      * Gets the right indent setting.
  429.      *
  430.      * @param a the attribute set
  431.      * @returns the value
  432.      */
  433.     public static float getRightIndent(AttributeSet a) {
  434.     Float indent = (Float) a.getAttribute(RightIndent);
  435.     if (indent != null) {
  436.         return indent.floatValue();
  437.     }
  438.     return 0;
  439.     }
  440.  
  441.     /**
  442.      * Sets right indent.
  443.      *
  444.      * @param a the attribute set
  445.      * @param i the value
  446.      */ 
  447.     public static void setRightIndent(MutableAttributeSet a, float i) {
  448.     a.addAttribute(RightIndent, new Float(i));
  449.     }
  450.  
  451.     /**
  452.      * Gets the left indent setting.
  453.      *
  454.      * @param a the attribute set
  455.      * @returns the value
  456.      */
  457.     public static float getLeftIndent(AttributeSet a) {
  458.     Float indent = (Float) a.getAttribute(LeftIndent);
  459.     if (indent != null) {
  460.         return indent.floatValue();
  461.     }
  462.     return 0;
  463.     }
  464.  
  465.     /**
  466.      * Sets left indent.
  467.      *
  468.      * @param a the attribute set
  469.      * @param i the value
  470.      */ 
  471.     public static void setLeftIndent(MutableAttributeSet a, float i) {
  472.     a.addAttribute(LeftIndent, new Float(i));
  473.     }
  474.  
  475.     /**
  476.      * Gets the line spacing setting.
  477.      *
  478.      * @param a the attribute set
  479.      * @returns the value
  480.      */
  481.     public static float getLineSpacing(AttributeSet a) {
  482.     Float space = (Float) a.getAttribute(LineSpacing);
  483.     if (space != null) {
  484.         return space.floatValue();
  485.     }
  486.     return 0;
  487.     }
  488.  
  489.     /**
  490.      * Sets line spacing.
  491.      *
  492.      * @param a the attribute set
  493.      * @param i the value
  494.      */ 
  495.     public static void setLineSpacing(MutableAttributeSet a, float i) {
  496.     a.addAttribute(LineSpacing, new Float(i));
  497.     }
  498.  
  499.     /**
  500.      * Gets the space above setting.
  501.      *
  502.      * @param a the attribute set
  503.      * @returns the value
  504.      */
  505.     public static float getSpaceAbove(AttributeSet a) {
  506.     Float space = (Float) a.getAttribute(SpaceAbove);
  507.     if (space != null) {
  508.         return space.floatValue();
  509.     }
  510.     return 0;
  511.     }
  512.  
  513.     /**
  514.      * Sets space above.
  515.      *
  516.      * @param a the attribute set
  517.      * @param i the value
  518.      */ 
  519.     public static void setSpaceAbove(MutableAttributeSet a, float i) {
  520.     a.addAttribute(SpaceAbove, new Float(i));
  521.     }
  522.  
  523.     /**
  524.      * Gets the space below setting.
  525.      *
  526.      * @param a the attribute set
  527.      * @returns the value
  528.      */
  529.     public static float getSpaceBelow(AttributeSet a) {
  530.     Float space = (Float) a.getAttribute(SpaceBelow);
  531.     if (space != null) {
  532.         return space.floatValue();
  533.     }
  534.     return 0;
  535.     }
  536.  
  537.     /**
  538.      * Sets space below.
  539.      *
  540.      * @param a the attribute set
  541.      * @param i the value
  542.      */ 
  543.     public static void setSpaceBelow(MutableAttributeSet a, float i) {
  544.     a.addAttribute(SpaceBelow, new Float(i));
  545.     }
  546.  
  547.     /**
  548.      * Gets the alignment setting.
  549.      *
  550.      * @param a the attribute set
  551.      * @returns the value
  552.      */
  553.     public static int getAlignment(AttributeSet a) {
  554.     Integer align = (Integer) a.getAttribute(Alignment);
  555.     if (align != null) {
  556.         return align.intValue();
  557.     }
  558.     return ALIGN_LEFT;
  559.     }
  560.     
  561.     /**
  562.      * Sets alignment.
  563.      *
  564.      * @param a the attribute set
  565.      * @param align the alignment value
  566.      */ 
  567.     public static void setAlignment(MutableAttributeSet a, int align) {
  568.     a.addAttribute(Alignment, new Integer(align));
  569.     }
  570.  
  571.     /**
  572.      * Gets the TabSet.
  573.      *
  574.      * @param a the attribute set
  575.      * @returns the TabSet.
  576.      */
  577.     public static TabSet getTabSet(AttributeSet a) {
  578.     TabSet tabs = (TabSet)a.getAttribute(TabSet);
  579.     // PENDING: should this return a default?
  580.     return tabs;
  581.     }
  582.  
  583.     /**
  584.      * Sets the TabSet.
  585.      *
  586.      * @param a the attribute set.
  587.      * @param tabs the TabSet
  588.      */
  589.     public static void setTabSet(MutableAttributeSet a, TabSet tabs) {
  590.     a.addAttribute(TabSet, tabs);
  591.     }
  592.  
  593.     // --- privates ---------------------------------------------
  594.  
  595.     private static Object[] keys = { 
  596.     NameAttribute, ResolveAttribute,
  597.     FontFamily, FontSize, Bold, Italic, Underline, 
  598.     Foreground, Background, ComponentAttribute,
  599.     IconAttribute, FirstLineIndent, LeftIndent,
  600.     RightIndent, LineSpacing, SpaceAbove, SpaceBelow,
  601.     Alignment, TabSet
  602.     };
  603.  
  604.     static {
  605.     try {
  606.         for (int i = 0; i < keys.length; i++) {
  607.         StyleContext.registerStaticAttributeKey(keys[i]);
  608.         }
  609.     } catch (Throwable e) {
  610.         e.printStackTrace();
  611.     }
  612.     }
  613.  
  614.     private StyleConstants(String representation) {
  615.     this.representation = representation;
  616.     }
  617.  
  618.     private String representation;
  619.  
  620.     /**
  621.      * This is a typesafe enumeration of the <em>well-known</em> 
  622.      * attributes that contribute to a paragraph style.  These are 
  623.      * aliased by the outer class for general presentation.
  624.      */
  625.     public static class ParagraphConstants implements AttributeSet.ParagraphAttribute {
  626.  
  627.     /**
  628.      * The amount of space to indent the first
  629.      * line of the paragraph.  This value may be negative
  630.      * to offset in the reverse direction.  The type
  631.      * is Float and specifies the size of the space
  632.      * in points.
  633.      */
  634.         public static final Object FirstLineIndent = new ParagraphConstants("FirstLineIndent");
  635.  
  636.     /**
  637.      * The amount to indent the left side
  638.      * of the paragraph.
  639.      * Type is float and specifies the size in points.
  640.      */
  641.         public static final Object LeftIndent = new ParagraphConstants("LeftIndent");
  642.  
  643.     /**
  644.      * The amount to indent the right side
  645.      * of the paragraph.
  646.      * Type is float and specifies the size in points.
  647.      */
  648.         public static final Object RightIndent = new ParagraphConstants("RightIndent");
  649.  
  650.     /**
  651.      * The amount of space between lines
  652.      * of the paragraph.
  653.      * Type is float and specifies the size in points.
  654.      */
  655.         public static final Object LineSpacing = new ParagraphConstants("LineSpacing");
  656.  
  657.     /**
  658.      * The amount of space above the paragraph.
  659.      * Type is float and specifies the size in points.
  660.      */
  661.         public static final Object SpaceAbove = new ParagraphConstants("SpaceAbove");
  662.  
  663.     /**
  664.      * The amount of space below the paragraph.
  665.      * Type is float and specifies the size in points.
  666.      */
  667.         public static final Object SpaceBelow = new ParagraphConstants("SpaceBelow");
  668.  
  669.     /**
  670.      * Alignment for the paragraph.  The type is
  671.      * Integer.  Valid values are:
  672.      * <ul>
  673.      * <li>ALIGN_LEFT
  674.      * <li>ALIGN_RIGHT
  675.      * <li>ALIGN_CENTER
  676.      * <li>ALIGN_JUSTIFED
  677.      * </ul>
  678.      *
  679.      */
  680.         public static final Object Alignment = new ParagraphConstants("Alignment");
  681.  
  682.     /**
  683.      * TabSet for the paragraph.
  684.      */
  685.         public static final Object TabSet = new ParagraphConstants("TabSet");
  686.  
  687.         public String toString() {
  688.         return representation;
  689.     }
  690.  
  691.     // --- privates ---------------------------------------------
  692.  
  693.         private ParagraphConstants(String representation) {
  694.         this.representation = representation;
  695.     }
  696.  
  697.         private String representation;
  698.  
  699.     }
  700.  
  701.     /**
  702.      * This is a typesafe enumeration of the <em>well-known</em> 
  703.      * attributes that contribute to a character style.  These are 
  704.      * aliased by the outer class for general presentation.
  705.      */
  706.     public static class CharacterConstants implements AttributeSet.CharacterAttribute {
  707.  
  708.     /**
  709.      * Name of the underline attribute.
  710.      */
  711.         public static final Object Underline = new CharacterConstants("underline");
  712.  
  713.     /**
  714.      * Name of the component attribute.
  715.      */
  716.         public static final Object ComponentAttribute = new CharacterConstants("component");
  717.  
  718.     /**
  719.      * Name of the icon attribute.
  720.      */
  721.         public static final Object IconAttribute = new CharacterConstants("icon");
  722.  
  723.     /**
  724.      * Name of the font family.
  725.      */
  726.         public static final Object Family = FontConstants.Family;
  727.  
  728.     /**
  729.      * Name of the font size.
  730.      */
  731.         public static final Object Size = FontConstants.Size;
  732.  
  733.     /**
  734.      * Name of the bold attribute.
  735.      */ 
  736.         public static final Object Bold = FontConstants.Bold;
  737.  
  738.     /**
  739.      * Name of the italic attribute.
  740.      */
  741.         public static final Object Italic = FontConstants.Italic;
  742.  
  743.     /**
  744.      * Name of the foreground color attribute.
  745.      */
  746.         public static final Object Foreground = ColorConstants.Foreground;
  747.  
  748.     /**
  749.      * Name of the background color attribute.
  750.      */
  751.         public static final Object Background = ColorConstants.Background;
  752.  
  753.         public String toString() {
  754.         return representation;
  755.     }
  756.  
  757.     // --- privates ---------------------------------------------
  758.  
  759.         private CharacterConstants(String representation) {
  760.         this.representation = representation;
  761.     }
  762.  
  763.         private String representation;
  764.  
  765.     }
  766.  
  767.     /**
  768.      * This is a typesafe enumeration of the <em>well-known</em> 
  769.      * attributes that contribute to a color.  These are aliased
  770.      * by the outer class for general presentation.
  771.      */
  772.     public static class ColorConstants implements 
  773.         AttributeSet.ColorAttribute,  AttributeSet.CharacterAttribute {
  774.  
  775.     /**
  776.      * Name of the foreground color attribute.
  777.      */
  778.         public static final Object Foreground = new ColorConstants("foreground");
  779.  
  780.     /**
  781.      * Name of the background color attribute.
  782.      */
  783.         public static final Object Background = new ColorConstants("background");
  784.  
  785.         public String toString() {
  786.         return representation;
  787.     }
  788.  
  789.     // --- privates ---------------------------------------------
  790.  
  791.         private ColorConstants(String representation) {
  792.         this.representation = representation;
  793.     }
  794.  
  795.         private String representation;
  796.  
  797.     }
  798.  
  799.     /**
  800.      * This is a typesafe enumeration of the <em>well-known</em> 
  801.      * attributes that contribute to a font.  These are aliased
  802.      * by the outer class for general presentation.
  803.      */
  804.     public static class FontConstants implements 
  805.         AttributeSet.FontAttribute, AttributeSet.CharacterAttribute {
  806.  
  807.     /**
  808.      * Name of the font family.
  809.      */
  810.         public static final Object Family = new FontConstants("family");
  811.  
  812.     /**
  813.      * Name of the font size.
  814.      */
  815.         public static final Object Size = new FontConstants("size");
  816.  
  817.     /**
  818.      * Name of the bold attribute.
  819.      */ 
  820.         public static final Object Bold = new FontConstants("bold");
  821.  
  822.     /**
  823.      * Name of the italic attribute.
  824.      */
  825.         public static final Object Italic = new FontConstants("italic");
  826.  
  827.         public String toString() {
  828.         return representation;
  829.     }
  830.  
  831.     // --- privates ---------------------------------------------
  832.  
  833.         private FontConstants(String representation) {
  834.         this.representation = representation;
  835.     }
  836.  
  837.         private String representation;
  838.  
  839.     }
  840.  
  841. }
  842.