Class AtlIndenter


  • public class AtlIndenter
    extends java.lang.Object
    Uses the AtlHeuristicScannerto get the indentation level for a certain position in a document.

    An instance holds some internal position in the document and is therefore not threadsafe.

    • Constructor Summary

      Constructors 
      Constructor Description
      AtlIndenter​(org.eclipse.jface.text.IDocument document, AtlHeuristicScanner scanner)
      Creates a new instance.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.StringBuffer computeIndentation​(int offset)
      Computes the indentation at offset.
      java.lang.StringBuffer computeIndentation​(int offset, boolean assumeOpeningBrace)
      Computes the indentation at offset.
      int findReferencePosition​(int offset)
      Returns the reference position regarding to indentation for offset, or NOT_FOUND.
      int findReferencePosition​(int offset, boolean danglingElse, boolean matchBrace, boolean matchParen, boolean matchCase)
      Returns the reference position regarding to indentation for position, or NOT_FOUND.fIndent will contain the relative indentation (in indentation units, not characters) after the call.
      int findReferencePosition​(int offset, int nextToken)
      Returns the reference position regarding to indentation for position, or NOT_FOUND.
      java.lang.StringBuffer getReferenceIndentation​(int offset)
      Computes the indentation at the reference point of position.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AtlIndenter

        public AtlIndenter​(org.eclipse.jface.text.IDocument document,
                           AtlHeuristicScanner scanner)
        Creates a new instance.
        Parameters:
        document - the document to scan
        scanner - the AtlHeuristicScanner to be used for scanning the document. It must be installed on the same IDocument.
    • Method Detail

      • computeIndentation

        public java.lang.StringBuffer computeIndentation​(int offset)
        Computes the indentation at offset.
        Parameters:
        offset - the offset in the document
        Returns:
        a String which reflects the correct indentation for the line in which offset resides, or null if it cannot be determined
      • computeIndentation

        public java.lang.StringBuffer computeIndentation​(int offset,
                                                         boolean assumeOpeningBrace)
        Computes the indentation at offset.
        Parameters:
        offset - the offset in the document
        assumeOpeningBrace - true if an opening brace should be assumed
        Returns:
        a String which reflects the correct indentation for the line in which offset resides, or null if it cannot be determined
      • findReferencePosition

        public int findReferencePosition​(int offset)
        Returns the reference position regarding to indentation for offset, or NOT_FOUND. This method calls findReferencePosition(offset, nextChar) where nextChar is the next character after offset.
        Parameters:
        offset - the offset for which the reference is computed
        Returns:
        the reference statement relative to which offset should be indented, or AtlHeuristicScanner.NOT_FOUND
      • findReferencePosition

        public int findReferencePosition​(int offset,
                                         boolean danglingElse,
                                         boolean matchBrace,
                                         boolean matchParen,
                                         boolean matchCase)
        Returns the reference position regarding to indentation for position, or NOT_FOUND.fIndent will contain the relative indentation (in indentation units, not characters) after the call. If there is a special alignment (e.g. for a method declaration where parameters should be aligned), fAlign will contain the absolute position of the alignment reference in fDocument, otherwise fAlign is set to AtlHeuristicScanner.NOT_FOUND.
        Parameters:
        offset - the offset for which the reference is computed
        danglingElse - whether a dangling else should be assumed at position
        matchBrace - whether the position of the matching brace should be returned instead of doing code analysis
        matchParen - whether the position of the matching parenthesis should be returned instead of doing code analysis
        matchCase - whether the position of a switch statement reference should be returned (either an earlier case statement or the switch block brace)
        Returns:
        the reference statement relative to which position should be indented, or AtlHeuristicScanner.NOT_FOUND
      • findReferencePosition

        public int findReferencePosition​(int offset,
                                         int nextToken)
        Returns the reference position regarding to indentation for position, or NOT_FOUND.

        If peekNextChar is true, the next token after offset is read and taken into account when computing the indentation. Currently, if the next token is the first token on the line (i.e. only preceded by whitespace), the following tokens are specially handled:

        • switch labels are indented relative to the switch block
        • opening curly braces are aligned correctly with the introducing code
        • closing curly braces are aligned properly with the introducing code of the matching opening brace
        • closing parenthesis' are aligned with their opening peer
        • the else keyword is aligned with its if, anything else is aligned normally (i.e. with the base of any introducing statements).
        • if there is no token on the same line after offset, the indentation is the same as for an else keyword
        Parameters:
        offset - the offset for which the reference is computed
        nextToken - the next token to assume in the document
        Returns:
        the reference statement relative to which offset should be indented, or AtlHeuristicScanner.NOT_FOUND
      • getReferenceIndentation

        public java.lang.StringBuffer getReferenceIndentation​(int offset)
        Computes the indentation at the reference point of position.
        Parameters:
        offset - the offset in the document
        Returns:
        a String which reflects the indentation at the line in which the reference position to offset resides, or null if it cannot be determined