FileDocCategorySizeDatePackage
Segment.javaAPI DocJava SE 6 API7766Tue Jun 10 00:26:58 BST 2008javax.swing.text

Segment

public class Segment extends Object implements CharacterIterator, CharSequence, Cloneable
A segment of a character array representing a fragment of text. It should be treated as immutable even though the array is directly accessible. This gives fast access to fragments of text without the overhead of copying around characters. This is effectively an unprotected String.

The Segment implements the java.text.CharacterIterator interface to support use with the i18n support without copying text into a string.

author
Timothy Prinzing
version
1.25 04/07/06

Fields Summary
public char[]
array
This is the array containing the text of interest. This array should never be modified; it is available only for efficiency.
public int
offset
This is the offset into the array that the desired text begins.
public int
count
This is the number of array elements that make up the text of interest.
private boolean
partialReturn
private int
pos
Constructors Summary
public Segment()
Creates a new segment.

	this(null, 0, 0);
    
public Segment(char[] array, int offset, int count)
Creates a new segment referring to an existing array.

param
array the array to refer to
param
offset the offset into the array
param
count the number of characters

	this.array = array;
	this.offset = offset;
	this.count = count;
	partialReturn = false;
    
Methods Summary
public charcharAt(int index)
{@inheritDoc}

since
1.6

        if (index < 0 
            || index >= count) {
            throw new StringIndexOutOfBoundsException(index);
        }
        return array[offset + index];
    
public java.lang.Objectclone()
Creates a shallow copy.

return
the copy

	Object o;
	try {
	    o = super.clone();
	} catch (CloneNotSupportedException cnse) {
	    o = null;
	}
	return o;
    
public charcurrent()
Gets the character at the current position (as returned by getIndex()).

return
the character at the current position or DONE if the current position is off the end of the text.
see
#getIndex
since
1.3

	if (count != 0 && pos < offset + count) {
	    return array[pos];
	}
	return DONE;
    
public charfirst()
Sets the position to getBeginIndex() and returns the character at that position.

return
the first character in the text, or DONE if the text is empty
see
#getBeginIndex
since
1.3

	pos = offset;
	if (count != 0) {
	    return array[pos];
	}
	return DONE;
    
public intgetBeginIndex()
Returns the start index of the text.

return
the index at which the text begins.
since
1.3

	return offset;
    
public intgetEndIndex()
Returns the end index of the text. This index is the index of the first character following the end of the text.

return
the index after the last character in the text
since
1.3

	return offset + count;
    
public intgetIndex()
Returns the current index.

return
the current index.
since
1.3

	return pos;
    
public booleanisPartialReturn()
Flag to indicate that partial returns are valid.

return
whether or not partial returns are valid.
since
1.4

	return partialReturn;
    
public charlast()
Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty) and returns the character at that position.

return
the last character in the text, or DONE if the text is empty
see
#getEndIndex
since
1.3

	pos = offset + count;
	if (count != 0) {
	    pos -= 1;
	    return array[pos];
	}
	return DONE;
    
public intlength()
{@inheritDoc}

since
1.6

        return count;
    
public charnext()
Increments the iterator's index by one and returns the character at the new index. If the resulting index is greater or equal to getEndIndex(), the current index is reset to getEndIndex() and a value of DONE is returned.

return
the character at the new position or DONE if the new position is off the end of the text range.
since
1.3

	pos += 1;
	int end = offset + count;
	if (pos >= end) {
	    pos = end;
	    return DONE;
	}
	return current();
    
public charprevious()
Decrements the iterator's index by one and returns the character at the new index. If the current index is getBeginIndex(), the index remains at getBeginIndex() and a value of DONE is returned.

return
the character at the new position or DONE if the current position is equal to getBeginIndex().
since
1.3

	if (pos == offset) {
	    return DONE;
	}
	pos -= 1;
	return current();
    
public charsetIndex(int position)
Sets the position to the specified position in the text and returns that character.

param
position the position within the text. Valid values range from getBeginIndex() to getEndIndex(). An IllegalArgumentException is thrown if an invalid value is supplied.
return
the character at the specified position or DONE if the specified position is equal to getEndIndex()
since
1.3

	int end = offset + count;
	if ((position < offset) || (position > end)) {
	    throw new IllegalArgumentException("bad position: " + position);
	}
	pos = position;
	if ((pos != end) && (count != 0)) {
	    return array[pos];
	}
	return DONE;
    
public voidsetPartialReturn(boolean p)
Flag to indicate that partial returns are valid. If the flag is true, an implementation of the interface method Document.getText(position,length,Segment) should return as much text as possible without making a copy. The default state of the flag is false which will cause Document.getText(position,length,Segment) to provide the same return behavior it always had, which may or may not make a copy of the text depending upon the request.

param
p whether or not partial returns are valid.
since
1.4

	partialReturn = p;
    
public java.lang.CharSequencesubSequence(int start, int end)
{@inheritDoc}

since
1.6

        if (start < 0) {
            throw new StringIndexOutOfBoundsException(start);
        }
        if (end > count) {
            throw new StringIndexOutOfBoundsException(end);
        }
        if (start > end) {
            throw new StringIndexOutOfBoundsException(end - start);
        }
        Segment segment = new Segment();
        segment.array = this.array;
        segment.offset = this.offset + start;
        segment.count = end - start;
        return segment;
    
public java.lang.StringtoString()
Converts a segment into a String.

return
the string

	if (array != null) {
	    return new String(array, offset, count);
	}
	return new String();