import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
-
/**
* An <code>IDocument</code> based implementation of
* <code>CharacterIterator</code> and <code>CharSequence</code>. Note that
* accessing the document fails with a {@link BadLocationException}, any of
* <code>CharacterIterator</code> methods as well as <code>charAt</code>may
* return {@link CharacterIterator#DONE}.
- *
+ *
* @since 3.0
*/
-public class DocumentCharacterIterator implements CharacterIterator, CharSequence {
+public class DocumentCharacterIterator implements CharacterIterator,
+ CharSequence {
+
+ private int fIndex = -1;
- private int fIndex= -1;
private final IDocument fDocument;
+
private final int fFirst;
+
private final int fLast;
private void invariant() {
/**
* Creates an iterator for the entire document.
- *
- * @param document the document backing this iterator
+ *
+ * @param document
+ * the document backing this iterator
*/
public DocumentCharacterIterator(IDocument document) {
this(document, 0);
/**
* Creates an iterator, starting at offset <code>first</code>.
- *
- * @param document the document backing this iterator
- * @param first the first character to consider
- * @throws IllegalArgumentException if the indices are out of bounds
- */
- public DocumentCharacterIterator(IDocument document, int first) throws IllegalArgumentException {
+ *
+ * @param document
+ * the document backing this iterator
+ * @param first
+ * the first character to consider
+ * @throws IllegalArgumentException
+ * if the indices are out of bounds
+ */
+ public DocumentCharacterIterator(IDocument document, int first)
+ throws IllegalArgumentException {
this(document, first, document.getLength());
}
/**
* Creates an iterator for the document contents from <code>first</code>
* (inclusive) to <code>last</code> (exclusive).
- *
- * @param document the document backing this iterator
- * @param first the first character to consider
- * @param last the last character index to consider
- * @throws IllegalArgumentException if the indices are out of bounds
- */
- public DocumentCharacterIterator(IDocument document, int first, int last) throws IllegalArgumentException {
+ *
+ * @param document
+ * the document backing this iterator
+ * @param first
+ * the first character to consider
+ * @param last
+ * the last character index to consider
+ * @throws IllegalArgumentException
+ * if the indices are out of bounds
+ */
+ public DocumentCharacterIterator(IDocument document, int first, int last)
+ throws IllegalArgumentException {
if (document == null)
throw new NullPointerException();
if (first < 0 || first > last)
throw new IllegalArgumentException();
if (last > document.getLength())
throw new IllegalArgumentException();
- fDocument= document;
- fFirst= first;
- fLast= last;
- fIndex= first;
+ fDocument = document;
+ fFirst = first;
+ fLast = last;
+ fIndex = first;
invariant();
}
*/
public char setIndex(int position) {
if (position >= getBeginIndex() && position <= getEndIndex())
- fIndex= position;
+ fIndex = position;
else
throw new IllegalArgumentException();
* return {@link CharacterIterator#DONE} if a {@link BadLocationException}
* was thrown when accessing the backing document.
* </p>
- *
- * @param index {@inheritDoc}
+ *
+ * @param index
+ * {@inheritDoc}
* @return {@inheritDoc}
*/
public char charAt(int index) {
throw new IndexOutOfBoundsException();
if (end > length())
throw new IndexOutOfBoundsException();
- return new DocumentCharacterIterator(fDocument, getBeginIndex() + start, getBeginIndex() + end);
+ return new DocumentCharacterIterator(fDocument,
+ getBeginIndex() + start, getBeginIndex() + end);
}
}