gnu.java.text

Class FormatCharacterIterator

Implemented Interfaces:
AttributedCharacterIterator, CharacterIterator, Cloneable

public class FormatCharacterIterator
extends Object
implements AttributedCharacterIterator

This class should not be put public and it is only intended to the classes of the java.text package. Its aim is to build a segmented character iterator by appending strings and adding attributes to portions of strings. The code intends to do some optimization concerning memory consumption and attribute access but at the end it is only an AttributedCharacterIterator.

Fields inherited from interface java.text.CharacterIterator

DONE

Constructor Summary

FormatCharacterIterator()
This constructor builds an empty iterated strings.
FormatCharacterIterator(String s, int[] ranges, List> attributes)
This constructor take a string s, a set of ranges and the corresponding attributes.

Method Summary

void
addAttributes(extends Attribute, Object> attributes, int rangeStart, int rangeEnd)
This method adds a set of attributes to a range of character.
void
append(String text)
This method appends a string without attributes.
void
append(String text, extends Attribute, Object> localAttributes)
This method appends an attributed string which attributes are specified directly in the calling parameters.
void
append(AttributedCharacterIterator iterator)
This method appends to the internal attributed string the attributed string contained in the specified iterator.
Object
clone()
This method creates a copy of this CharacterIterator.
char
current()
This method returns the character at the current index position
char
first()
This method sets the index value to the beginning of the range and returns the character there.
Set
getAllAttributeKeys()
Returns a list of all keys that are defined for the text range.
Object
getAttribute(Attribute attrib)
Map
getAttributes()
int
getBeginIndex()
This method returns the character position of the first character in the range.
int
getEndIndex()
This method returns the character position of the end of the text range.
int
getIndex()
This method returns the current value of the index.
int
getRunLimit()
Returns the index of the character after the end of the run that contains all attributes defined for the current character.
int
getRunLimit(Attribute attribute)
int
getRunLimit(Attribute> reqAttrs)
Returns the index of the character after the end of the run that contains all attributes in the specified Set defined for the current character.
int
getRunStart()
Returns the index of the first character in the run that contains all attributes defined for the current character.
int
getRunStart(Attribute attribute)
int
getRunStart(Attribute> reqAttrs)
Returns the index of the first character in the run that contains all attributes in the specified Set defined for the current character.
char
last()
This method sets the index value to getEndIndex() - 1 and returns the character there.
void
mergeAttributes(List> attributes, int[] ranges)
This method merge the specified attributes and ranges with the internal tables.
char
next()
This method increments the current index and then returns the character at the new index value.
char
previous()
This method decrements the current index and then returns the character at the new index value.
char
setIndex(int position)
This method sets the value of the index to the specified value, then returns the character at that position.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

FormatCharacterIterator

public FormatCharacterIterator()
This constructor builds an empty iterated strings. The attributes are empty and so is the string. However you may append strings and attributes to this iterator.

FormatCharacterIterator

public FormatCharacterIterator(String s,
                               int[] ranges,
                               List> attributes)
This constructor take a string s, a set of ranges and the corresponding attributes. This is used to build an iterator. The array ranges should be formatted as follow: each element of ranges specifies the index in the string until which the corresponding map of attributes at the same position is applied. For example, if you have:
   s = "hello";
   ranges = new int[] { 2, 6 };
   attributes = new ArrayList>(2);
 
"he" will have the attributes attributes.get(0), "llo" the attributes.get(1).

Method Details

addAttributes

public void addAttributes(extends Attribute,
                          Object> attributes,
                          int rangeStart,
                          int rangeEnd)
This method adds a set of attributes to a range of character. The bounds are always inclusive. In the case many attributes have to be added it is advised to directly use mergeAttributes(java.util.List;[I
Parameters:
attributes - Attributes to merge into the iterator.
rangeStart - Lower bound of the range of characters which will receive the attribute.
rangeEnd - Upper bound of the range of characters which will receive the attribute.
Throws:
IllegalArgumentException - if ranges are out of bounds.

append

public void append(String text)
This method appends a string without attributes. It is completely equivalent to call append(String,HashMap) with localAttributes equal to null.
Parameters:
text - The string to append to the iterator.

append

public void append(String text,
                   extends Attribute,
                   Object> localAttributes)
This method appends an attributed string which attributes are specified directly in the calling parameters.
Parameters:
text - The string to append.
localAttributes - The attributes to put on this string in the iterator. If it is null the string will simply have no attributes.

append

public void append(AttributedCharacterIterator iterator)
This method appends to the internal attributed string the attributed string contained in the specified iterator.
Parameters:
iterator - the iterator which contains the attributed string to append to this iterator.

clone

public Object clone()
This method creates a copy of this CharacterIterator.
Specified by:
clone in interface CharacterIterator
Overrides:
clone in interface Object
Returns:
A copy of this CharacterIterator.

current

public char current()
This method returns the character at the current index position
Specified by:
current in interface CharacterIterator
Returns:
The character at the current index position.

first

public char first()
This method sets the index value to the beginning of the range and returns the character there.
Specified by:
first in interface CharacterIterator
Returns:
The character at the beginning of the range, or CharacterIterator.DONE if the range is empty.

getAllAttributeKeys

public Set getAllAttributeKeys()
Returns a list of all keys that are defined for the text range. This can be an empty list if no attributes are defined.
Specified by:
getAllAttributeKeys in interface AttributedCharacterIterator
Returns:
A list of keys

getAttribute

public Object getAttribute(Attribute attrib)

getAttributes

public Map getAttributes()

getBeginIndex

public int getBeginIndex()
This method returns the character position of the first character in the range.
Specified by:
getBeginIndex in interface CharacterIterator
Returns:
The index of the first character in the range.

getEndIndex

public int getEndIndex()
This method returns the character position of the end of the text range. This will actually be the index of the first character following the end of the range. In the event the text range is empty, this will be equal to the first character in the range.
Specified by:
getEndIndex in interface CharacterIterator
Returns:
The index of the end of the range.

getIndex

public int getIndex()
This method returns the current value of the index.
Specified by:
getIndex in interface CharacterIterator
Returns:
The current index value

getRunLimit

public int getRunLimit()
Returns the index of the character after the end of the run that contains all attributes defined for the current character.
Specified by:
getRunLimit in interface AttributedCharacterIterator
Returns:
The end index of the run.

getRunLimit

public int getRunLimit(Attribute attribute)

getRunLimit

public int getRunLimit(Attribute> reqAttrs)
Returns the index of the character after the end of the run that contains all attributes in the specified Set defined for the current character.
Specified by:
getRunLimit in interface AttributedCharacterIterator
Parameters:
Returns:
The end index of the run.

getRunStart

public int getRunStart()
Returns the index of the first character in the run that contains all attributes defined for the current character.
Specified by:
getRunStart in interface AttributedCharacterIterator
Returns:
The start index of the run

getRunStart

public int getRunStart(Attribute attribute)

getRunStart

public int getRunStart(Attribute> reqAttrs)
Returns the index of the first character in the run that contains all attributes in the specified Set defined for the current character.
Specified by:
getRunStart in interface AttributedCharacterIterator
Parameters:
Returns:
The start index of the run.

last

public char last()
This method sets the index value to getEndIndex() - 1 and returns the character there. If the range is empty, then the index value will be set equal to the beginning index.
Specified by:
last in interface CharacterIterator
Returns:
The character at the end of the range, or CharacterIterator.DONE if the range is empty.

mergeAttributes

public void mergeAttributes(List> attributes,
                            int[] ranges)
This method merge the specified attributes and ranges with the internal tables. This method is in charge of the optimization of tables. Two following sets of attributes are never the same.
Parameters:
attributes - the new array attributes to apply to the string.

next

public char next()
This method increments the current index and then returns the character at the new index value. If the index is already at getEndIndex() - 1, it will not be incremented.
Specified by:
next in interface CharacterIterator
Returns:
The character at the position of the incremented index value, or CharacterIterator.DONE if the index has reached getEndIndex() - 1

previous

public char previous()
This method decrements the current index and then returns the character at the new index value. If the index value is already at the beginning index, it will not be decremented.
Specified by:
previous in interface CharacterIterator
Returns:
The character at the position of the decremented index value, or CharacterIterator.DONE if index was already equal to the beginning index value.

setIndex

public char setIndex(int position)
This method sets the value of the index to the specified value, then returns the character at that position.
Specified by:
setIndex in interface CharacterIterator
Parameters:
Returns:
The character at the new index value or CharacterIterator.DONE if the index value is equal to CharacterIterator.getEndIndex().

FormatCharacter.java -- Implementation of AttributedCharacterIterator for formatters. Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2012 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.