CharacterIteratorFieldDelegatepublic class CharacterIteratorFieldDelegate extends Object implements Format$FieldDelegateCharacterIteratorFieldDelegate combines the notifications from a Format
into a resulting AttributedCharacterIterator . The resulting
AttributedCharacterIterator can be retrieved by way of
the getIterator method. |
Fields Summary |
---|
private ArrayList | attributedStringsArray of AttributeStrings. Whenever formatted is invoked
for a region > size, a new instance of AttributedString is added to
attributedStrings. Subsequent invocations of formatted
for existing regions result in invoking addAttribute on the existing
AttributedStrings. | private int | sizeRunning count of the number of characters that have
been encountered. |
Constructors Summary |
---|
CharacterIteratorFieldDelegate()
attributedStrings = new ArrayList();
|
Methods Summary |
---|
public void | formatted(java.text.Format$Field attr, java.lang.Object value, int start, int end, java.lang.StringBuffer buffer)
if (start != end) {
if (start < size) {
// Adjust attributes of existing runs
int index = size;
int asIndex = attributedStrings.size() - 1;
while (start < index) {
AttributedString as = (AttributedString)attributedStrings.
get(asIndex--);
int newIndex = index - as.length();
int aStart = Math.max(0, start - newIndex);
as.addAttribute(attr, value, aStart, Math.min(
end - start, as.length() - aStart) +
aStart);
index = newIndex;
}
}
if (size < start) {
// Pad attributes
attributedStrings.add(new AttributedString(
buffer.substring(size, start)));
size = start;
}
if (size < end) {
// Add new string
int aStart = Math.max(start, size);
AttributedString string = new AttributedString(
buffer.substring(aStart, end));
string.addAttribute(attr, value);
attributedStrings.add(string);
size = end;
}
}
| public void | formatted(int fieldID, java.text.Format$Field attr, java.lang.Object value, int start, int end, java.lang.StringBuffer buffer)
formatted(attr, value, start, end, buffer);
| public java.text.AttributedCharacterIterator | getIterator(java.lang.String string)Returns an AttributedCharacterIterator that can be used
to iterate over the resulting formatted String.
// Add the last AttributedCharacterIterator if necessary
// assert(size <= string.length());
if (string.length() > size) {
attributedStrings.add(new AttributedString(
string.substring(size)));
size = string.length();
}
int iCount = attributedStrings.size();
AttributedCharacterIterator iterators[] = new
AttributedCharacterIterator[iCount];
for (int counter = 0; counter < iCount; counter++) {
iterators[counter] = ((AttributedString)attributedStrings.
get(counter)).getIterator();
}
return new AttributedString(iterators).getIterator();
|
|