groovy.ui.text
Class StructuredSyntaxDocumentFilter

java.lang.Object
  extended by javax.swing.text.DocumentFilter
      extended by groovy.ui.text.StructuredSyntaxDocumentFilter
Direct Known Subclasses:
GroovyFilter

public class StructuredSyntaxDocumentFilter
extends javax.swing.text.DocumentFilter

Author:
Evan "Hippy" Slatis

Nested Class Summary
 class StructuredSyntaxDocumentFilter.LexerNode
           
private static class StructuredSyntaxDocumentFilter.MLComparator
           
protected  class StructuredSyntaxDocumentFilter.MultiLineRun
           
 
Nested classes/interfaces inherited from class javax.swing.text.DocumentFilter
javax.swing.text.DocumentFilter.FilterBypass
 
Field Summary
private  java.nio.CharBuffer buffer
           
protected  StructuredSyntaxDocumentFilter.LexerNode lexer
          The root of the lexical parsing tree.
private static StructuredSyntaxDocumentFilter.MLComparator ML_COMPARATOR
           
protected  java.util.TreeSet mlTextRunSet
          The position tree of multi-line comments.
private  javax.swing.text.Segment segment
           
protected  javax.swing.text.DefaultStyledDocument styledDocument
           
static java.lang.String TAB_REPLACEMENT
           
 
Constructor Summary
StructuredSyntaxDocumentFilter(javax.swing.text.DefaultStyledDocument document)
          Creates a new instance of StructuredSyntaxDocumentFilter
 
Method Summary
private  int calcBeginParse(int offset)
           
private  int calcEndParse(int offset)
           
private static void checkRegexp(java.lang.String regexp)
           
 StructuredSyntaxDocumentFilter.LexerNode createLexerNode()
          Create a new LexerNode for adding to root.
private  StructuredSyntaxDocumentFilter.MultiLineRun getMultiLineRun(int offset)
           
 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.
private  java.lang.String replaceMetaCharacters(java.lang.String string)
           
 
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

ML_COMPARATOR

private static final StructuredSyntaxDocumentFilter.MLComparator ML_COMPARATOR

lexer

protected StructuredSyntaxDocumentFilter.LexerNode lexer
The root of the lexical parsing tree.


styledDocument

protected javax.swing.text.DefaultStyledDocument styledDocument

segment

private javax.swing.text.Segment segment

buffer

private java.nio.CharBuffer buffer

mlTextRunSet

protected java.util.TreeSet 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

checkRegexp

private static void checkRegexp(java.lang.String regexp)

calcBeginParse

private int calcBeginParse(int offset)

calcEndParse

private int calcEndParse(int offset)

createLexerNode

public StructuredSyntaxDocumentFilter.LexerNode createLexerNode()
Create a new LexerNode for adding to root.

Returns:
a new LexerNode

getMultiLineRun

private StructuredSyntaxDocumentFilter.MultiLineRun getMultiLineRun(int offset)

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

replaceMetaCharacters

private java.lang.String replaceMetaCharacters(java.lang.String string)


Copyright © ${year} The Codehaus. All Rights Reserved.