Class AbstractLineTracker

java.lang.Object
org.eclipse.jface.text.AbstractLineTracker
All Implemented Interfaces:
ILineTracker, ILineTrackerExtension
Direct Known Subclasses:
ConfigurableLineTracker, DefaultLineTracker

public abstract class AbstractLineTracker extends Object implements ILineTracker, ILineTrackerExtension
Abstract implementation of 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:
  • "" -> [0,0]
  • "a" -> [0,1]
  • "\n" -> [0,1], [1,0]
  • "a\n" -> [0,2], [2,0]
  • "a\nb" -> [0,2], [2,1]
  • "a\nbc\n" -> [0,2], [2,3], [5,0]

This class must be subclassed.

  • Constructor Details

    • AbstractLineTracker

      protected AbstractLineTracker()
      Creates a new line tracker.
  • Method Details

    • computeNumberOfLines

      public int computeNumberOfLines(String text)
      Description copied from interface: ILineTracker
      Computes the number of lines in the given text.
      Specified by:
      computeNumberOfLines in interface ILineTracker
      Parameters:
      text - the text whose number of lines should be computed
      Returns:
      the number of lines in the given text
    • getLineDelimiter

      public String getLineDelimiter(int line) throws BadLocationException
      Description copied from interface: ILineTracker
      Returns the line delimiter of the specified line. Returns null if the line is not closed with a line delimiter.
      Specified by:
      getLineDelimiter in interface ILineTracker
      Parameters:
      line - the line whose line delimiter is queried
      Returns:
      the line's delimiter or null if line does not have a delimiter
      Throws:
      BadLocationException - if the line number is invalid in this tracker's line structure
    • getLineInformation

      public IRegion getLineInformation(int line) throws BadLocationException
      Description copied from interface: ILineTracker
      Returns a line description of the given line. The description contains the start offset and the length of the line excluding the line's delimiter.
      Specified by:
      getLineInformation in interface ILineTracker
      Parameters:
      line - the line that should be described
      Returns:
      a region describing the line
      Throws:
      BadLocationException - if line is unknown to this tracker
    • getLineInformationOfOffset

      public IRegion getLineInformationOfOffset(int offset) throws BadLocationException
      Description copied from interface: ILineTracker
      Returns a line description of the line at the given offset. The description contains the start offset and the length of the line excluding the line's delimiter.
      Specified by:
      getLineInformationOfOffset in interface ILineTracker
      Parameters:
      offset - the offset whose line should be described
      Returns:
      a region describing the line
      Throws:
      BadLocationException - if offset is invalid in this tracker
    • getLineLength

      public int getLineLength(int line) throws BadLocationException
      Description copied from interface: ILineTracker
      Returns length of the specified line including the line's delimiter.
      Specified by:
      getLineLength in interface ILineTracker
      Parameters:
      line - the line of interest
      Returns:
      the length of the line
      Throws:
      BadLocationException - if line is unknown to this tracker
    • getLineNumberOfOffset

      public int getLineNumberOfOffset(int offset) throws BadLocationException
      Description copied from interface: ILineTracker
      Returns the line number the character at the given offset belongs to.
      Specified by:
      getLineNumberOfOffset in interface ILineTracker
      Parameters:
      offset - the offset whose line number to be determined
      Returns:
      the number of the line the offset is on
      Throws:
      BadLocationException - if the offset is invalid in this tracker
    • getLineOffset

      public int getLineOffset(int line) throws BadLocationException
      Description copied from interface: ILineTracker
      Returns the position of the first character of the specified line.
      Specified by:
      getLineOffset in interface ILineTracker
      Parameters:
      line - the line of interest
      Returns:
      offset of the first character of the line
      Throws:
      BadLocationException - if the line is unknown to this tracker
    • getNumberOfLines

      public int getNumberOfLines()
      Description copied from interface: ILineTracker
      Returns the number of lines.

      Note that a document always has at least one line.

      Specified by:
      getNumberOfLines in interface ILineTracker
      Returns:
      the number of lines in this tracker's line structure
    • getNumberOfLines

      public int getNumberOfLines(int offset, int length) throws BadLocationException
      Description copied from interface: ILineTracker
      Returns the number of lines which are occupied by a given text range.
      Specified by:
      getNumberOfLines in interface ILineTracker
      Parameters:
      offset - the offset of the specified text range
      length - the length of the specified text range
      Returns:
      the number of lines occupied by the specified range
      Throws:
      BadLocationException - if specified range is unknown to this tracker
    • set

      public void set(String text)
      Description copied from interface: ILineTracker
      Sets the tracked text to the specified text.
      Specified by:
      set in interface ILineTracker
      Parameters:
      text - the new tracked text
    • replace

      public void replace(int offset, int length, String text) throws BadLocationException
      Description copied from interface: ILineTracker
      Informs the line tracker about the specified change in the tracked text.
      Specified by:
      replace in interface ILineTracker
      Parameters:
      offset - the offset of the replaced text
      length - the length of the replaced text
      text - the substitution text
      Throws:
      BadLocationException - if specified range is unknown to this tracker
    • nextDelimiterInfo

      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.
      Parameters:
      text - the text to be searched
      offset - the offset in the given text
      Returns:
      the information of the first found delimiter or null
    • startRewriteSession

      public final void startRewriteSession(DocumentRewriteSession session)
      Description copied from interface: ILineTrackerExtension
      Tells the line tracker that a rewrite session started. A rewrite session is a sequence of replace operations that form a semantic unit. The line tracker is allowed to use that information for internal optimization.
      Specified by:
      startRewriteSession in interface ILineTrackerExtension
      Parameters:
      session - the rewrite session
    • stopRewriteSession

      public final void stopRewriteSession(DocumentRewriteSession session, String text)
      Description copied from interface: ILineTrackerExtension
      Tells the line tracker that the rewrite session has finished. This method is only called when startRewriteSession has been called before. The text resulting from the rewrite session is passed to the line tracker.
      Specified by:
      stopRewriteSession in interface ILineTrackerExtension
      Parameters:
      session - the rewrite session
      text - the text with which to re-initialize the line tracker
    • hasActiveRewriteSession

      protected final boolean hasActiveRewriteSession()
      Tells whether there's an active rewrite session.
      Returns:
      true if there is an active rewrite session, false otherwise
      Since:
      3.1
    • flushRewriteSession

      protected final void flushRewriteSession() throws BadLocationException
      Flushes the active rewrite session.
      Throws:
      BadLocationException - in case the recorded requests cannot be processed correctly
      Since:
      3.1
    • checkRewriteSession

      protected final void checkRewriteSession() throws BadLocationException
      Checks the presence of a rewrite session and flushes it.
      Throws:
      BadLocationException - in case flushing does not succeed
      Since:
      3.1