public abstract class AbstractLineTracker extends Object implements ILineTracker, ILineTrackerExtension
ILineTracker
. It lets the definition of line
delimiters to subclasses. Assuming that '\n' is the only line delimiter, this abstract
implementation defines the following line scheme:
This class must be subclassed.
Modifier and Type | Class and Description |
---|---|
protected static class |
AbstractLineTracker.DelimiterInfo
Combines the information of the occurrence of a line delimiter.
|
protected static class |
AbstractLineTracker.Request
Representation of replace and set requests.
|
Modifier | Constructor and Description |
---|---|
protected |
AbstractLineTracker()
Creates a new line tracker.
|
Modifier and Type | Method and Description |
---|---|
protected void |
checkRewriteSession()
Checks the presence of a rewrite session and flushes it.
|
int |
computeNumberOfLines(String text)
Computes the number of lines in the given text.
|
protected void |
flushRewriteSession()
Flushes the active rewrite session.
|
String |
getLineDelimiter(int line)
Returns the line delimiter of the specified line.
|
IRegion |
getLineInformation(int line)
Returns a line description of the given line.
|
IRegion |
getLineInformationOfOffset(int offset)
Returns a line description of the line at the given offset.
|
int |
getLineLength(int line)
Returns length of the specified line including the line's delimiter.
|
int |
getLineNumberOfOffset(int offset)
Returns the line number the character at the given offset belongs to.
|
int |
getLineOffset(int line)
Returns the position of the first character of the specified line.
|
int |
getNumberOfLines()
Returns the number of lines.
|
int |
getNumberOfLines(int offset,
int length)
Returns the number of lines which are occupied by a given text range.
|
protected boolean |
hasActiveRewriteSession()
Tells whether there's an active rewrite session.
|
protected abstract AbstractLineTracker.DelimiterInfo |
nextDelimiterInfo(String text,
int offset)
Returns the information about the first delimiter found in the given text starting at the
given offset.
|
void |
replace(int offset,
int length,
String text)
Informs the line tracker about the specified change in the tracked text.
|
void |
set(String text)
Sets the tracked text to the specified text.
|
void |
startRewriteSession(DocumentRewriteSession session)
Tells the line tracker that a rewrite session started.
|
void |
stopRewriteSession(DocumentRewriteSession session,
String text)
Tells the line tracker that the rewrite session has finished.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getLegalLineDelimiters
public int computeNumberOfLines(String text)
ILineTracker
computeNumberOfLines
in interface ILineTracker
text
- the text whose number of lines should be computedpublic String getLineDelimiter(int line) throws BadLocationException
ILineTracker
null
if the
line is not closed with a line delimiter.getLineDelimiter
in interface ILineTracker
line
- the line whose line delimiter is queriednull
if line does not have a delimiterBadLocationException
- if the line number is invalid in this tracker's line structurepublic IRegion getLineInformation(int line) throws BadLocationException
ILineTracker
getLineInformation
in interface ILineTracker
line
- the line that should be describedBadLocationException
- if line is unknown to this trackerpublic IRegion getLineInformationOfOffset(int offset) throws BadLocationException
ILineTracker
getLineInformationOfOffset
in interface ILineTracker
offset
- the offset whose line should be describedBadLocationException
- if offset is invalid in this trackerpublic int getLineLength(int line) throws BadLocationException
ILineTracker
getLineLength
in interface ILineTracker
line
- the line of interestBadLocationException
- if line is unknown to this trackerpublic int getLineNumberOfOffset(int offset) throws BadLocationException
ILineTracker
getLineNumberOfOffset
in interface ILineTracker
offset
- the offset whose line number to be determinedBadLocationException
- if the offset is invalid in this trackerpublic int getLineOffset(int line) throws BadLocationException
ILineTracker
getLineOffset
in interface ILineTracker
line
- the line of interestBadLocationException
- if the line is unknown to this trackerpublic int getNumberOfLines()
ILineTracker
Note that a document always has at least one line.
getNumberOfLines
in interface ILineTracker
public int getNumberOfLines(int offset, int length) throws BadLocationException
ILineTracker
getNumberOfLines
in interface ILineTracker
offset
- the offset of the specified text rangelength
- the length of the specified text rangeBadLocationException
- if specified range is unknown to this trackerpublic void set(String text)
ILineTracker
set
in interface ILineTracker
text
- the new tracked textpublic void replace(int offset, int length, String text) throws BadLocationException
ILineTracker
replace
in interface ILineTracker
offset
- the offset of the replaced textlength
- the length of the replaced texttext
- the substitution textBadLocationException
- if specified range is unknown to this trackerprotected abstract AbstractLineTracker.DelimiterInfo nextDelimiterInfo(String text, int offset)
text
- the text to be searchedoffset
- the offset in the given textnull
public final void startRewriteSession(DocumentRewriteSession session)
ILineTrackerExtension
startRewriteSession
in interface ILineTrackerExtension
session
- the rewrite sessionpublic final void stopRewriteSession(DocumentRewriteSession session, String text)
ILineTrackerExtension
startRewriteSession
has been called
before. The text resulting from the rewrite session is passed to the line
tracker.stopRewriteSession
in interface ILineTrackerExtension
session
- the rewrite sessiontext
- the text with which to re-initialize the line trackerprotected final boolean hasActiveRewriteSession()
true
if there is an active rewrite session, false
otherwiseprotected final void flushRewriteSession() throws BadLocationException
BadLocationException
- in case the recorded requests cannot be processed correctlyprotected final void checkRewriteSession() throws BadLocationException
BadLocationException
- in case flushing does not succeed
Copyright (c) 2000, 2015 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.