/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package javax.swing.text;
import java.awt.
Color;
import java.awt.
Component;
import java.awt.
Toolkit;
import javax.swing.
Icon;
/**
* <p>
* A collection of <em>well known</em> or common attribute keys
* and methods to apply to an AttributeSet or MutableAttributeSet
* to get/set the properties in a typesafe manner.
* <p>
* The paragraph attributes form the definition of a paragraph to be rendered.
* All sizes are specified in points (such as found in postscript), a
* device independent measure.
* </p>
* <p style="text-align:center"><img src="doc-files/paragraph.gif"
* alt="Diagram shows SpaceAbove, FirstLineIndent, LeftIndent, RightIndent,
* and SpaceBelow a paragraph."></p>
* <p>
*
* @author Timothy Prinzing
*/
public class
StyleConstants {
/**
* Name of elements used to represent components.
*/
public static final
String ComponentElementName = "component";
/**
* Name of elements used to represent icons.
*/
public static final
String IconElementName = "icon";
/**
* Attribute name used to name the collection of
* attributes.
*/
public static final
Object NameAttribute = new
StyleConstants("name");
/**
* Attribute name used to identify the resolving parent
* set of attributes, if one is defined.
*/
public static final
Object ResolveAttribute = new
StyleConstants("resolver");
/**
* Attribute used to identify the model for embedded
* objects that have a model view separation.
*/
public static final
Object ModelAttribute = new
StyleConstants("model");
/**
* Returns the string representation.
*
* @return the string
*/
public
String toString() {
return
representation;
}
// ---- character constants -----------------------------------
/**
* Bidirectional level of a character as assigned by the Unicode bidi
* algorithm.
*/
public static final
Object BidiLevel = new
CharacterConstants("bidiLevel");
/**
* Name of the font family.
*/
public static final
Object FontFamily = new
FontConstants("family");
/**
* Name of the font family.
*
* @since 1.5
*/
public static final
Object Family =
FontFamily;
/**
* Name of the font size.
*/
public static final
Object FontSize = new
FontConstants("size");
/**
* Name of the font size.
*
* @since 1.5
*/
public static final
Object Size =
FontSize;
/**
* Name of the bold attribute.
*/
public static final
Object Bold = new
FontConstants("bold");
/**
* Name of the italic attribute.
*/
public static final
Object Italic = new
FontConstants("italic");
/**
* Name of the underline attribute.
*/
public static final
Object Underline = new
CharacterConstants("underline");
/**
* Name of the Strikethrough attribute.
*/
public static final
Object StrikeThrough = new
CharacterConstants("strikethrough");
/**
* Name of the Superscript attribute.
*/
public static final
Object Superscript = new
CharacterConstants("superscript");
/**
* Name of the Subscript attribute.
*/
public static final
Object Subscript = new
CharacterConstants("subscript");
/**
* Name of the foreground color attribute.
*/
public static final
Object Foreground = new
ColorConstants("foreground");
/**
* Name of the background color attribute.
*/
public static final
Object Background = new
ColorConstants("background");
/**
* Name of the component attribute.
*/
public static final
Object ComponentAttribute = new
CharacterConstants("component");
/**
* Name of the icon attribute.
*/
public static final
Object IconAttribute = new
CharacterConstants("icon");
/**
* Name of the input method composed text attribute. The value of
* this attribute is an instance of AttributedString which represents
* the composed text.
*/
public static final
Object ComposedTextAttribute = new
StyleConstants("composed text");
/**
* The amount of space to indent the first
* line of the paragraph. This value may be negative
* to offset in the reverse direction. The type
* is Float and specifies the size of the space
* in points.
*/
public static final
Object FirstLineIndent = new
ParagraphConstants("FirstLineIndent");
/**
* The amount to indent the left side
* of the paragraph.
* Type is float and specifies the size in points.
*/
public static final
Object LeftIndent = new
ParagraphConstants("LeftIndent");
/**
* The amount to indent the right side
* of the paragraph.
* Type is float and specifies the size in points.
*/
public static final
Object RightIndent = new
ParagraphConstants("RightIndent");
/**
* The amount of space between lines
* of the paragraph.
* Type is float and specifies the size as a factor of the line height
*/
public static final
Object LineSpacing = new
ParagraphConstants("LineSpacing");
/**
* The amount of space above the paragraph.
* Type is float and specifies the size in points.
*/
public static final
Object SpaceAbove = new
ParagraphConstants("SpaceAbove");
/**
* The amount of space below the paragraph.
* Type is float and specifies the size in points.
*/
public static final
Object SpaceBelow = new
ParagraphConstants("SpaceBelow");
/**
* Alignment for the paragraph. The type is
* Integer. Valid values are:
* <ul>
* <li>ALIGN_LEFT
* <li>ALIGN_RIGHT
* <li>ALIGN_CENTER
* <li>ALIGN_JUSTIFED
* </ul>
*
*/
public static final
Object Alignment = new
ParagraphConstants("Alignment");
/**
* TabSet for the paragraph, type is a TabSet containing
* TabStops.
*/
public static final
Object TabSet = new
ParagraphConstants("TabSet");
/**
* Orientation for a paragraph.
*/
public static final
Object Orientation = new
ParagraphConstants("Orientation");
/**
* A possible value for paragraph alignment. This
* specifies that the text is aligned to the left
* indent and extra whitespace should be placed on
* the right.
*/
public static final int
ALIGN_LEFT = 0;
/**
* A possible value for paragraph alignment. This
* specifies that the text is aligned to the center
* and extra whitespace should be placed equally on
* the left and right.
*/
public static final int
ALIGN_CENTER = 1;
/**
* A possible value for paragraph alignment. This
* specifies that the text is aligned to the right
* indent and extra whitespace should be placed on
* the left.
*/
public static final int
ALIGN_RIGHT = 2;
/**
* A possible value for paragraph alignment. This
* specifies that extra whitespace should be spread
* out through the rows of the paragraph with the
* text lined up with the left and right indent
* except on the last line which should be aligned
* to the left.
*/
public static final int
ALIGN_JUSTIFIED = 3;
// --- character attribute accessors ---------------------------
/**
* Gets the BidiLevel setting.
*
* @param a the attribute set
* @return the value
*/
public static int
getBidiLevel(
AttributeSet a) {
Integer o = (
Integer)
a.
getAttribute(
BidiLevel);
if (
o != null) {
return
o.
intValue();
}
return 0; // Level 0 is base level (non-embedded) left-to-right
}
/**
* Sets the BidiLevel.
*
* @param a the attribute set
* @param o the bidi level value
*/
public static void
setBidiLevel(
MutableAttributeSet a, int
o) {
a.
addAttribute(
BidiLevel,
Integer.
valueOf(
o));
}
/**
* Gets the component setting from the attribute list.
*
* @param a the attribute set
* @return the component, null if none
*/
public static
Component getComponent(
AttributeSet a) {
return (
Component)
a.
getAttribute(
ComponentAttribute);
}
/**
* Sets the component attribute.
*
* @param a the attribute set
* @param c the component
*/
public static void
setComponent(
MutableAttributeSet a,
Component c) {
a.
addAttribute(
AbstractDocument.
ElementNameAttribute,
ComponentElementName);
a.
addAttribute(
ComponentAttribute,
c);
}
/**
* Gets the icon setting from the attribute list.
*
* @param a the attribute set
* @return the icon, null if none
*/
public static
Icon getIcon(
AttributeSet a) {
return (
Icon)
a.
getAttribute(
IconAttribute);
}
/**
* Sets the icon attribute.
*
* @param a the attribute set
* @param c the icon
*/
public static void
setIcon(
MutableAttributeSet a,
Icon c) {
a.
addAttribute(
AbstractDocument.
ElementNameAttribute,
IconElementName);
a.
addAttribute(
IconAttribute,
c);
}
/**
* Gets the font family setting from the attribute list.
*
* @param a the attribute set
* @return the font family, "Monospaced" as the default
*/
public static
String getFontFamily(
AttributeSet a) {
String family = (
String)
a.
getAttribute(
FontFamily);
if (
family == null) {
family = "Monospaced";
}
return
family;
}
/**
* Sets the font attribute.
*
* @param a the attribute set
* @param fam the font
*/
public static void
setFontFamily(
MutableAttributeSet a,
String fam) {
a.
addAttribute(
FontFamily,
fam);
}
/**
* Gets the font size setting from the attribute list.
*
* @param a the attribute set
* @return the font size, 12 as the default
*/
public static int
getFontSize(
AttributeSet a) {
Integer size = (
Integer)
a.
getAttribute(
FontSize);
if (
size != null) {
return
size.
intValue();
}
return 12;
}
/**
* Sets the font size attribute.
*
* @param a the attribute set
* @param s the font size
*/
public static void
setFontSize(
MutableAttributeSet a, int
s) {
a.
addAttribute(
FontSize,
Integer.
valueOf(
s));
}
/**
* Checks whether the bold attribute is set.
*
* @param a the attribute set
* @return true if set else false
*/
public static boolean
isBold(
AttributeSet a) {
Boolean bold = (
Boolean)
a.
getAttribute(
Bold);
if (
bold != null) {
return
bold.
booleanValue();
}
return false;
}
/**
* Sets the bold attribute.
*
* @param a the attribute set
* @param b specifies true/false for setting the attribute
*/
public static void
setBold(
MutableAttributeSet a, boolean
b) {
a.
addAttribute(
Bold,
Boolean.
valueOf(
b));
}
/**
* Checks whether the italic attribute is set.
*
* @param a the attribute set
* @return true if set else false
*/
public static boolean
isItalic(
AttributeSet a) {
Boolean italic = (
Boolean)
a.
getAttribute(
Italic);
if (
italic != null) {
return
italic.
booleanValue();
}
return false;
}
/**
* Sets the italic attribute.
*
* @param a the attribute set
* @param b specifies true/false for setting the attribute
*/
public static void
setItalic(
MutableAttributeSet a, boolean
b) {
a.
addAttribute(
Italic,
Boolean.
valueOf(
b));
}
/**
* Checks whether the underline attribute is set.
*
* @param a the attribute set
* @return true if set else false
*/
public static boolean
isUnderline(
AttributeSet a) {
Boolean underline = (
Boolean)
a.
getAttribute(
Underline);
if (
underline != null) {
return
underline.
booleanValue();
}
return false;
}
/**
* Checks whether the strikethrough attribute is set.
*
* @param a the attribute set
* @return true if set else false
*/
public static boolean
isStrikeThrough(
AttributeSet a) {
Boolean strike = (
Boolean)
a.
getAttribute(
StrikeThrough);
if (
strike != null) {
return
strike.
booleanValue();
}
return false;
}
/**
* Checks whether the superscript attribute is set.
*
* @param a the attribute set
* @return true if set else false
*/
public static boolean
isSuperscript(
AttributeSet a) {
Boolean superscript = (
Boolean)
a.
getAttribute(
Superscript);
if (
superscript != null) {
return
superscript.
booleanValue();
}
return false;
}
/**
* Checks whether the subscript attribute is set.
*
* @param a the attribute set
* @return true if set else false
*/
public static boolean
isSubscript(
AttributeSet a) {
Boolean subscript = (
Boolean)
a.
getAttribute(
Subscript);
if (
subscript != null) {
return
subscript.
booleanValue();
}
return false;
}
/**
* Sets the underline attribute.
*
* @param a the attribute set
* @param b specifies true/false for setting the attribute
*/
public static void
setUnderline(
MutableAttributeSet a, boolean
b) {
a.
addAttribute(
Underline,
Boolean.
valueOf(
b));
}
/**
* Sets the strikethrough attribute.
*
* @param a the attribute set
* @param b specifies true/false for setting the attribute
*/
public static void
setStrikeThrough(
MutableAttributeSet a, boolean
b) {
a.
addAttribute(
StrikeThrough,
Boolean.
valueOf(
b));
}
/**
* Sets the superscript attribute.
*
* @param a the attribute set
* @param b specifies true/false for setting the attribute
*/
public static void
setSuperscript(
MutableAttributeSet a, boolean
b) {
a.
addAttribute(
Superscript,
Boolean.
valueOf(
b));
}
/**
* Sets the subscript attribute.
*
* @param a the attribute set
* @param b specifies true/false for setting the attribute
*/
public static void
setSubscript(
MutableAttributeSet a, boolean
b) {
a.
addAttribute(
Subscript,
Boolean.
valueOf(
b));
}
/**
* Gets the foreground color setting from the attribute list.
*
* @param a the attribute set
* @return the color, Color.black as the default
*/
public static
Color getForeground(
AttributeSet a) {
Color fg = (
Color)
a.
getAttribute(
Foreground);
if (
fg == null) {
fg =
Color.
black;
}
return
fg;
}
/**
* Sets the foreground color.
*
* @param a the attribute set
* @param fg the color
*/
public static void
setForeground(
MutableAttributeSet a,
Color fg) {
a.
addAttribute(
Foreground,
fg);
}
/**
* Gets the background color setting from the attribute list.
*
* @param a the attribute set
* @return the color, Color.black as the default
*/
public static
Color getBackground(
AttributeSet a) {
Color fg = (
Color)
a.
getAttribute(
Background);
if (
fg == null) {
fg =
Color.
black;
}
return
fg;
}
/**
* Sets the background color.
*
* @param a the attribute set
* @param fg the color
*/
public static void
setBackground(
MutableAttributeSet a,
Color fg) {
a.
addAttribute(
Background,
fg);
}
// --- paragraph attribute accessors ----------------------------
/**
* Gets the first line indent setting.
*
* @param a the attribute set
* @return the value, 0 if not set
*/
public static float
getFirstLineIndent(
AttributeSet a) {
Float indent = (
Float)
a.
getAttribute(
FirstLineIndent);
if (
indent != null) {
return
indent.
floatValue();
}
return 0;
}
/**
* Sets the first line indent.
*
* @param a the attribute set
* @param i the value
*/
public static void
setFirstLineIndent(
MutableAttributeSet a, float
i) {
a.
addAttribute(
FirstLineIndent, new
Float(
i));
}
/**
* Gets the right indent setting.
*
* @param a the attribute set
* @return the value, 0 if not set
*/
public static float
getRightIndent(
AttributeSet a) {
Float indent = (
Float)
a.
getAttribute(
RightIndent);
if (
indent != null) {
return
indent.
floatValue();
}
return 0;
}
/**
* Sets right indent.
*
* @param a the attribute set
* @param i the value
*/
public static void
setRightIndent(
MutableAttributeSet a, float
i) {
a.
addAttribute(
RightIndent, new
Float(
i));
}
/**
* Gets the left indent setting.
*
* @param a the attribute set
* @return the value, 0 if not set
*/
public static float
getLeftIndent(
AttributeSet a) {
Float indent = (
Float)
a.
getAttribute(
LeftIndent);
if (
indent != null) {
return
indent.
floatValue();
}
return 0;
}
/**
* Sets left indent.
*
* @param a the attribute set
* @param i the value
*/
public static void
setLeftIndent(
MutableAttributeSet a, float
i) {
a.
addAttribute(
LeftIndent, new
Float(
i));
}
/**
* Gets the line spacing setting.
*
* @param a the attribute set
* @return the value, 0 if not set
*/
public static float
getLineSpacing(
AttributeSet a) {
Float space = (
Float)
a.
getAttribute(
LineSpacing);
if (
space != null) {
return
space.
floatValue();
}
return 0;
}
/**
* Sets line spacing.
*
* @param a the attribute set
* @param i the value
*/
public static void
setLineSpacing(
MutableAttributeSet a, float
i) {
a.
addAttribute(
LineSpacing, new
Float(
i));
}
/**
* Gets the space above setting.
*
* @param a the attribute set
* @return the value, 0 if not set
*/
public static float
getSpaceAbove(
AttributeSet a) {
Float space = (
Float)
a.
getAttribute(
SpaceAbove);
if (
space != null) {
return
space.
floatValue();
}
return 0;
}
/**
* Sets space above.
*
* @param a the attribute set
* @param i the value
*/
public static void
setSpaceAbove(
MutableAttributeSet a, float
i) {
a.
addAttribute(
SpaceAbove, new
Float(
i));
}
/**
* Gets the space below setting.
*
* @param a the attribute set
* @return the value, 0 if not set
*/
public static float
getSpaceBelow(
AttributeSet a) {
Float space = (
Float)
a.
getAttribute(
SpaceBelow);
if (
space != null) {
return
space.
floatValue();
}
return 0;
}
/**
* Sets space below.
*
* @param a the attribute set
* @param i the value
*/
public static void
setSpaceBelow(
MutableAttributeSet a, float
i) {
a.
addAttribute(
SpaceBelow, new
Float(
i));
}
/**
* Gets the alignment setting.
*
* @param a the attribute set
* @return the value <code>StyleConstants.ALIGN_LEFT</code> if not set
*/
public static int
getAlignment(
AttributeSet a) {
Integer align = (
Integer)
a.
getAttribute(
Alignment);
if (
align != null) {
return
align.
intValue();
}
return
ALIGN_LEFT;
}
/**
* Sets alignment.
*
* @param a the attribute set
* @param align the alignment value
*/
public static void
setAlignment(
MutableAttributeSet a, int
align) {
a.
addAttribute(
Alignment,
Integer.
valueOf(
align));
}
/**
* Gets the TabSet.
*
* @param a the attribute set
* @return the <code>TabSet</code>
*/
public static
TabSet getTabSet(
AttributeSet a) {
TabSet tabs = (
TabSet)
a.
getAttribute(
TabSet);
// PENDING: should this return a default?
return
tabs;
}
/**
* Sets the TabSet.
*
* @param a the attribute set.
* @param tabs the TabSet
*/
public static void
setTabSet(
MutableAttributeSet a,
TabSet tabs) {
a.
addAttribute(
TabSet,
tabs);
}
// --- privates ---------------------------------------------
static
Object[]
keys = {
NameAttribute,
ResolveAttribute,
BidiLevel,
FontFamily,
FontSize,
Bold,
Italic,
Underline,
StrikeThrough,
Superscript,
Subscript,
Foreground,
Background,
ComponentAttribute,
IconAttribute,
FirstLineIndent,
LeftIndent,
RightIndent,
LineSpacing,
SpaceAbove,
SpaceBelow,
Alignment,
TabSet,
Orientation,
ModelAttribute,
ComposedTextAttribute
};
StyleConstants(
String representation) {
this.
representation =
representation;
}
private
String representation;
/**
* This is a typesafe enumeration of the <em>well-known</em>
* attributes that contribute to a paragraph style. These are
* aliased by the outer class for general presentation.
*/
public static class
ParagraphConstants extends
StyleConstants
implements
AttributeSet.
ParagraphAttribute {
private
ParagraphConstants(
String representation) {
super(
representation);
}
}
/**
* This is a typesafe enumeration of the <em>well-known</em>
* attributes that contribute to a character style. These are
* aliased by the outer class for general presentation.
*/
public static class
CharacterConstants extends
StyleConstants
implements
AttributeSet.
CharacterAttribute {
private
CharacterConstants(
String representation) {
super(
representation);
}
}
/**
* This is a typesafe enumeration of the <em>well-known</em>
* attributes that contribute to a color. These are aliased
* by the outer class for general presentation.
*/
public static class
ColorConstants extends
StyleConstants
implements
AttributeSet.
ColorAttribute,
AttributeSet.
CharacterAttribute {
private
ColorConstants(
String representation) {
super(
representation);
}
}
/**
* This is a typesafe enumeration of the <em>well-known</em>
* attributes that contribute to a font. These are aliased
* by the outer class for general presentation.
*/
public static class
FontConstants extends
StyleConstants
implements
AttributeSet.
FontAttribute,
AttributeSet.
CharacterAttribute {
private
FontConstants(
String representation) {
super(
representation);
}
}
}