groovy.ui.text

## Class StructuredSyntaxDocumentFilter

- java.lang.Object
- - javax.swing.text.DocumentFilter
  - - groovy.ui.text.StructuredSyntaxDocumentFilter

- Direct Known Subclasses:
    GroovyFilter

      public class StructuredSyntaxDocumentFilter
      extends javax.swing.text.DocumentFilter

  Author:
    Evan "Hippy" Slatis

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `class` | `StructuredSyntaxDocumentFilter.LexerNode`
    `protected class` | `StructuredSyntaxDocumentFilter.MultiLineRun`

    - ### Nested classes/interfaces inherited from class javax.swing.text.DocumentFilter

      `javax.swing.text.DocumentFilter.FilterBypass`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected StructuredSyntaxDocumentFilter.LexerNode` | `lexer` The root of the lexical parsing tree.
    `protected java.util.SortedSet` | `mlTextRunSet` The position tree of multi-line comments.
    `protected javax.swing.text.DefaultStyledDocument` | `styledDocument`
    `static java.lang.String` | `TAB_REPLACEMENT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `StructuredSyntaxDocumentFilter(javax.swing.text.DefaultStyledDocument document)` Creates a new instance of StructuredSyntaxDocumentFilter

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `StructuredSyntaxDocumentFilter.LexerNode` | `createLexerNode()` Create a new LexerNode for adding to root.
    `StructuredSyntaxDocumentFilter.LexerNode` | `getRootNode()` Get the root node for lexing the document.
    `void` | `insertString(javax.swing.text.DocumentFilter.FilterBypass fb, int offset, java.lang.String text, javax.swing.text.AttributeSet attrs)` Insert a string into the document, and then parse it if the parser has been set.
    `protected void` | `parseDocument(int offset, int length)` Parse the Document to update the character styles given an initial start position.
    `void` | `remove(javax.swing.text.DocumentFilter.FilterBypass fb, int offset, int length)` Remove a string from the document, and then parse it if the parser has been set.
    `void` | `replace(javax.swing.text.DocumentFilter.FilterBypass fb, int offset, int length, java.lang.String text, javax.swing.text.AttributeSet attrs)` Replace a string in the document, and then parse it if the parser has been set.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### TAB_REPLACEMENT

          public static final java.lang.String TAB_REPLACEMENT

      See Also:
        Constant Field Values

    - #### lexer

          protected StructuredSyntaxDocumentFilter.LexerNode lexer

      The root of the lexical parsing tree.

    - #### styledDocument

          protected javax.swing.text.DefaultStyledDocument styledDocument

    - #### mlTextRunSet

          protected java.util.SortedSet mlTextRunSet

      The position tree of multi-line comments.

  - ### Constructor Detail

    - #### StructuredSyntaxDocumentFilter

          public StructuredSyntaxDocumentFilter(javax.swing.text.DefaultStyledDocument document)

      Creates a new instance of StructuredSyntaxDocumentFilter
      Parameters:
        `document` - the styled document to parse

  - ### Method Detail

    - #### createLexerNode

          public StructuredSyntaxDocumentFilter.LexerNode createLexerNode()

      Create a new LexerNode for adding to root.
      Returns:
        a new LexerNode

    - #### getRootNode

          public StructuredSyntaxDocumentFilter.LexerNode getRootNode()

      Get the root node for lexing the document. Children can be added such that matching patterns can be further parsed if required.
      Returns:
        the root lexing node.

    - #### insertString

          public void insertString(javax.swing.text.DocumentFilter.FilterBypass fb,
                                   int offset,
                                   java.lang.String text,
                                   javax.swing.text.AttributeSet attrs)
                            throws javax.swing.text.BadLocationException

      Insert a string into the document, and then parse it if the parser has been set.
      Overrides:
        `insertString` in class `javax.swing.text.DocumentFilter`
      Parameters:
        `fb` -
        `offset` -
        `text` -
        `attrs` -
      Throws:
        `javax.swing.text.BadLocationException`

    - #### parseDocument

          protected void parseDocument(int offset,
                                       int length)
                                throws javax.swing.text.BadLocationException

      Parse the Document to update the character styles given an initial start position. Called by the filter after it has updated the text.
      Parameters:
        `offset` -
        `length` -
      Throws:
        `javax.swing.text.BadLocationException`

    - #### remove

          public void remove(javax.swing.text.DocumentFilter.FilterBypass fb,
                             int offset,
                             int length)
                      throws javax.swing.text.BadLocationException

      Remove a string from the document, and then parse it if the parser has been set.
      Overrides:
        `remove` in class `javax.swing.text.DocumentFilter`
      Parameters:
        `fb` -
        `offset` -
        `length` -
      Throws:
        `javax.swing.text.BadLocationException`

    - #### replace

          public void replace(javax.swing.text.DocumentFilter.FilterBypass fb,
                              int offset,
                              int length,
                              java.lang.String text,
                              javax.swing.text.AttributeSet attrs)
                       throws javax.swing.text.BadLocationException

      Replace a string in the document, and then parse it if the parser has been set.
      Overrides:
        `replace` in class `javax.swing.text.DocumentFilter`
      Parameters:
        `fb` -
        `offset` -
        `length` -
        `text` -
        `attrs` -
      Throws:
        `javax.swing.text.BadLocationException`