java.text
Class AttributedString

java.lang.Object
  extended byjava.text.AttributedString

public class AttributedString
extends Object

An AttributedString holds text and related attribute information. It may be used as the actual data storage in some cases where a text reader wants to access attributed text through the AttributedCharacterIterator interface.

Since:
1.2
See Also:
AttributedCharacterIterator, Annotation

Nested Class Summary
private  class AttributedString.AttributedStringIterator
           
private  class AttributedString.AttributeMap
           
 
Field Summary
private static int ARRAY_SIZE_INCREMENT
           
(package private)  int runArraySize
           
(package private)  Vector[] runAttributes
           
(package private)  Vector[] runAttributeValues
           
(package private)  int runCount
           
(package private)  int[] runStarts
           
(package private)  String text
           
 
Constructor Summary
  AttributedString(AttributedCharacterIterator text)
          Constructs an AttributedString instance with the given attributed text represented by AttributedCharacterIterator.
(package private) AttributedString(AttributedCharacterIterator[] iterators)
          Constructs an AttributedString instance with the given AttributedCharacterIterators.
  AttributedString(AttributedCharacterIterator text, int beginIndex, int endIndex)
          Constructs an AttributedString instance with the subrange of the given attributed text represented by AttributedCharacterIterator.
  AttributedString(AttributedCharacterIterator text, int beginIndex, int endIndex, AttributedCharacterIterator.Attribute[] attributes)
          Constructs an AttributedString instance with the subrange of the given attributed text represented by AttributedCharacterIterator.
  AttributedString(String text)
          Constructs an AttributedString instance with the given text.
  AttributedString(String text, Map attributes)
          Constructs an AttributedString instance with the given text and attributes.
 
Method Summary
 void addAttribute(AttributedCharacterIterator.Attribute attribute, Object value)
          Adds an attribute to the entire string.
 void addAttribute(AttributedCharacterIterator.Attribute attribute, Object value, int beginIndex, int endIndex)
          Adds an attribute to a subrange of the string.
private  void addAttributeImpl(AttributedCharacterIterator.Attribute attribute, Object value, int beginIndex, int endIndex)
           
private  void addAttributeRunData(AttributedCharacterIterator.Attribute attribute, Object value, int beginRunIndex, int endRunIndex)
           
 void addAttributes(Map attributes, int beginIndex, int endIndex)
          Adds a set of attributes to a subrange of the string.
private  void appendContents(StringBuffer buf, CharacterIterator iterator)
          Appends the contents of the CharacterIterator iterator into the StringBuffer buf.
private  boolean attributeValuesMatch(Set attributes, int runIndex1, int runIndex2)
           
private  char charAt(int index)
           
private  void createRunAttributeDataVectors()
           
private  int ensureRunBreak(int offset)
           
private  int ensureRunBreak(int offset, boolean copyAttrs)
          Ensures there is a run break at offset, returning the index of the run.
private  Object getAttribute(AttributedCharacterIterator.Attribute attribute, int runIndex)
           
private  Object getAttributeCheckRange(AttributedCharacterIterator.Attribute attribute, int runIndex, int beginIndex, int endIndex)
           
 AttributedCharacterIterator getIterator()
          Creates an AttributedCharacterIterator instance that provides access to the entire contents of this string.
 AttributedCharacterIterator getIterator(AttributedCharacterIterator.Attribute[] attributes)
          Creates an AttributedCharacterIterator instance that provides access to selected contents of this string.
 AttributedCharacterIterator getIterator(AttributedCharacterIterator.Attribute[] attributes, int beginIndex, int endIndex)
          Creates an AttributedCharacterIterator instance that provides access to selected contents of this string.
(package private)  int length()
           
private static boolean mapsDiffer(Map last, Map attrs)
          Returns true if the attributes specified in last and attrs differ.
private  void setAttributes(Map attrs, int offset)
          Sets the attributes for the range from offset to the the next run break (typically the end of the text) to the ones specified in attrs.
private static boolean valuesMatch(Object value1, Object value2)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ARRAY_SIZE_INCREMENT

private static final int ARRAY_SIZE_INCREMENT
See Also:
Constant Field Values

text

String text

runArraySize

int runArraySize

runCount

int runCount

runStarts

int[] runStarts

runAttributes

Vector[] runAttributes

runAttributeValues

Vector[] runAttributeValues
Constructor Detail

AttributedString

AttributedString(AttributedCharacterIterator[] iterators)
Constructs an AttributedString instance with the given AttributedCharacterIterators.

Parameters:
iterators - AttributedCharacterIterators to construct AttributedString from.
Throws:
NullPointerException - if iterators is null

AttributedString

public AttributedString(String text)
Constructs an AttributedString instance with the given text.

Parameters:
text - The text for this attributed string.

AttributedString

public AttributedString(String text,
                        Map attributes)
Constructs an AttributedString instance with the given text and attributes.

Parameters:
text - The text for this attributed string.
attributes - The attributes that apply to the entire string.
Throws:
IllegalArgumentException - if the text has length 0 and the attributes parameter is not an empty Map (attributes cannot be applied to a 0-length range).

AttributedString

public AttributedString(AttributedCharacterIterator text)
Constructs an AttributedString instance with the given attributed text represented by AttributedCharacterIterator.

Parameters:
text - The text for this attributed string.

AttributedString

public AttributedString(AttributedCharacterIterator text,
                        int beginIndex,
                        int endIndex)
Constructs an AttributedString instance with the subrange of the given attributed text represented by AttributedCharacterIterator. If the given range produces an empty text, all attributes will be discarded. Note that any attributes wrapped by an Annotation object are discarded for a subrange of the original attribute range.

Parameters:
text - The text for this attributed string.
beginIndex - Index of the first character of the range.
endIndex - Index of the character following the last character of the range.
Throws:
IllegalArgumentException - if the subrange given by beginIndex and endIndex is out of the text range.
See Also:
Annotation

AttributedString

public AttributedString(AttributedCharacterIterator text,
                        int beginIndex,
                        int endIndex,
                        AttributedCharacterIterator.Attribute[] attributes)
Constructs an AttributedString instance with the subrange of the given attributed text represented by AttributedCharacterIterator. Only attributes that match the given attributes will be incorporated into the instance. If the given range produces an empty text, all attributes will be discarded. Note that any attributes wrapped by an Annotation object are discarded for a subrange of the original attribute range.

Parameters:
text - The text for this attributed string.
beginIndex - Index of the first character of the range.
endIndex - Index of the character following the last character of the range.
attributes - Specifies attributes to be extracted from the text. If null is specified, all available attributes will be used.
Throws:
IllegalArgumentException - if the subrange given by beginIndex and endIndex is out of the text range.
See Also:
Annotation
Method Detail

addAttribute

public void addAttribute(AttributedCharacterIterator.Attribute attribute,
                         Object value)
Adds an attribute to the entire string.

Parameters:
attribute - the attribute key
value - the value of the attribute; may be null
Throws:
IllegalArgumentException - if the AttributedString has length 0 (attributes cannot be applied to a 0-length range).

addAttribute

public void addAttribute(AttributedCharacterIterator.Attribute attribute,
                         Object value,
                         int beginIndex,
                         int endIndex)
Adds an attribute to a subrange of the string.

Parameters:
attribute - the attribute key
value - The value of the attribute. May be null.
beginIndex - Index of the first character of the range.
endIndex - Index of the character following the last character of the range.
Throws:
IllegalArgumentException - if beginIndex is less then 0, endIndex is greater than the length of the string, or beginIndex and endIndex together don't define a non-empty subrange of the string.

addAttributes

public void addAttributes(Map attributes,
                          int beginIndex,
                          int endIndex)
Adds a set of attributes to a subrange of the string.

Parameters:
attributes - The attributes to be added to the string.
beginIndex - Index of the first character of the range.
endIndex - Index of the character following the last character of the range.
Throws:
IllegalArgumentException - if beginIndex is less then 0, endIndex is greater than the length of the string, or beginIndex and endIndex together don't define a non-empty subrange of the string and the attributes parameter is not an empty Map.

addAttributeImpl

private void addAttributeImpl(AttributedCharacterIterator.Attribute attribute,
                              Object value,
                              int beginIndex,
                              int endIndex)

createRunAttributeDataVectors

private final void createRunAttributeDataVectors()

ensureRunBreak

private final int ensureRunBreak(int offset)

ensureRunBreak

private final int ensureRunBreak(int offset,
                                 boolean copyAttrs)
Ensures there is a run break at offset, returning the index of the run. If this results in splitting a run, two things can happen:


addAttributeRunData

private void addAttributeRunData(AttributedCharacterIterator.Attribute attribute,
                                 Object value,
                                 int beginRunIndex,
                                 int endRunIndex)

getIterator

public AttributedCharacterIterator getIterator()
Creates an AttributedCharacterIterator instance that provides access to the entire contents of this string.

Returns:
An iterator providing access to the text and its attributes.

getIterator

public AttributedCharacterIterator getIterator(AttributedCharacterIterator.Attribute[] attributes)
Creates an AttributedCharacterIterator instance that provides access to selected contents of this string. Information about attributes not listed in attributes that the implementor may have need not be made accessible through the iterator. If the list is null, all available attribute information should be made accessible.

Parameters:
attributes - a list of attributes that the client is interested in
Returns:
an iterator providing access to the text and its attributes

getIterator

public AttributedCharacterIterator getIterator(AttributedCharacterIterator.Attribute[] attributes,
                                               int beginIndex,
                                               int endIndex)
Creates an AttributedCharacterIterator instance that provides access to selected contents of this string. Information about attributes not listed in attributes that the implementor may have need not be made accessible through the iterator. If the list is null, all available attribute information should be made accessible.

Parameters:
attributes - a list of attributes that the client is interested in
beginIndex - the index of the first character
endIndex - the index of the character following the last character
Returns:
an iterator providing access to the text and its attributes
Throws:
IllegalArgumentException - if beginIndex is less then 0, endIndex is greater than the length of the string, or beginIndex is greater than endIndex.

length

int length()

charAt

private char charAt(int index)

getAttribute

private Object getAttribute(AttributedCharacterIterator.Attribute attribute,
                            int runIndex)

getAttributeCheckRange

private Object getAttributeCheckRange(AttributedCharacterIterator.Attribute attribute,
                                      int runIndex,
                                      int beginIndex,
                                      int endIndex)

attributeValuesMatch

private boolean attributeValuesMatch(Set attributes,
                                     int runIndex1,
                                     int runIndex2)

valuesMatch

private static final boolean valuesMatch(Object value1,
                                         Object value2)

appendContents

private final void appendContents(StringBuffer buf,
                                  CharacterIterator iterator)
Appends the contents of the CharacterIterator iterator into the StringBuffer buf.


setAttributes

private void setAttributes(Map attrs,
                           int offset)
Sets the attributes for the range from offset to the the next run break (typically the end of the text) to the ones specified in attrs. This is only meant to be called from the constructor!


mapsDiffer

private static boolean mapsDiffer(Map last,
                                  Map attrs)
Returns true if the attributes specified in last and attrs differ.