Package jsyntaxpane

Class SyntaxDocument

  • All Implemented Interfaces:
    java.io.Serializable, javax.swing.text.Document

    public class SyntaxDocument
    extends javax.swing.text.PlainDocument
    A document that supports being highlighted. The document maintains an internal List of all the Tokens. The Tokens are updated using a Lexer, passed to it during construction.
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.text.AbstractDocument

        javax.swing.text.AbstractDocument.AbstractElement, javax.swing.text.AbstractDocument.AttributeContext, javax.swing.text.AbstractDocument.BranchElement, javax.swing.text.AbstractDocument.Content, javax.swing.text.AbstractDocument.DefaultDocumentEvent, javax.swing.text.AbstractDocument.ElementEdit, javax.swing.text.AbstractDocument.LeafElement
    • Field Summary

      • Fields inherited from class javax.swing.text.PlainDocument

        lineLimitAttribute, tabSizeAttribute
      • Fields inherited from class javax.swing.text.AbstractDocument

        BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName
      • Fields inherited from interface javax.swing.text.Document

        StreamDescriptionProperty, TitleProperty
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      SyntaxDocument append​(java.lang.String str)
      Append the given string to the text of this document.
      void clearUndos()
      This will discard all undoable edits
      void doRedo()
      Perform a redo action, if possible.
      void doUndo()
      Perform an undo action, if possible
      protected void fireChangedUpdate​(javax.swing.event.DocumentEvent e)  
      protected void fireInsertUpdate​(javax.swing.event.DocumentEvent e)  
      protected void fireRemoveUpdate​(javax.swing.event.DocumentEvent e)  
      java.lang.String getLineAt​(int pos)
      Gets the line at given position.
      int getLineCount()
      Return the number of lines in this document
      int getLineEndOffset​(int pos)
      Returns the end position of the line at pos.
      int getLineNumberAt​(int pos)
      Return the line number at given position.
      int getLineStartOffset​(int pos)
      Returns the starting position of the line at pos
      java.util.regex.Matcher getMatcher​(java.util.regex.Pattern pattern)
      Return a matcher that matches the given pattern on the entire document
      java.util.regex.Matcher getMatcher​(java.util.regex.Pattern pattern, int start)
      Return a matcher that matches the given pattern in the part of the document starting at offset start.
      java.util.regex.Matcher getMatcher​(java.util.regex.Pattern pattern, int start, int length)
      Return a matcher that matches the given pattern in the part of the document starting at offset start and ending at start + length.
      Token getNextToken​(Token tok)
      Return the token following the current token, or null This is an expensive operation, so do not use it to update the gui
      Token getPairFor​(Token t)
      This is used to return the other part of a paired token in the document.
      Token getPrevToken​(Token tok)
      Return the token prior to the given token, or null This is an expensive operation, so do not use it to update the gui
      Token getTokenAt​(int pos)
      Find the token at a given position.
      java.util.Iterator<Token> getTokens​(int start, int end)
      Return an iterator of tokens between p0 and p1.
      java.lang.String getUncommentedText​(int aStart, int anEnd)
      Gets the text without the comments.
      Token getWordAt​(int offs, java.util.regex.Pattern p)  
      void removeLineAt​(int pos)
      Deletes the line at given position
      void replace​(int offset, int length, java.lang.String text, javax.swing.text.AttributeSet attrs)
      We override this here so that the replace is treated as one operation by the undomanager
      void replaceLineAt​(int pos, java.lang.String newLines)
      Replace the line at given position with the given string, which can span multiple lines
      void replaceToken​(Token token, java.lang.String replacement)
      Replace the token with the replacement string
      java.lang.String toString()  
      • Methods inherited from class javax.swing.text.PlainDocument

        createDefaultRoot, getDefaultRootElement, getParagraphElement, insertString, insertUpdate, removeUpdate
      • Methods inherited from class javax.swing.text.AbstractDocument

        addDocumentListener, addUndoableEditListener, createBranchElement, createLeafElement, createPosition, dump, fireUndoableEditUpdate, getAsynchronousLoadPriority, getAttributeContext, getBidiRootElement, getContent, getCurrentWriter, getDocumentFilter, getDocumentListeners, getDocumentProperties, getEndPosition, getLength, getListeners, getProperty, getRootElements, getStartPosition, getText, getText, getUndoableEditListeners, postRemoveUpdate, putProperty, readLock, readUnlock, remove, removeDocumentListener, removeUndoableEditListener, render, setAsynchronousLoadPriority, setDocumentFilter, setDocumentProperties, writeLock, writeUnlock
      • Methods inherited from class java.lang.Object

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

      • SyntaxDocument

        public SyntaxDocument​(Lexer lexer)
    • Method Detail

      • fireChangedUpdate

        protected void fireChangedUpdate​(javax.swing.event.DocumentEvent e)
        Overrides:
        fireChangedUpdate in class javax.swing.text.AbstractDocument
      • fireInsertUpdate

        protected void fireInsertUpdate​(javax.swing.event.DocumentEvent e)
        Overrides:
        fireInsertUpdate in class javax.swing.text.AbstractDocument
      • fireRemoveUpdate

        protected void fireRemoveUpdate​(javax.swing.event.DocumentEvent e)
        Overrides:
        fireRemoveUpdate in class javax.swing.text.AbstractDocument
      • replaceToken

        public void replaceToken​(Token token,
                                 java.lang.String replacement)
        Replace the token with the replacement string
        Parameters:
        token -
        replacement -
      • getTokens

        public java.util.Iterator<Token> getTokens​(int start,
                                                   int end)
        Return an iterator of tokens between p0 and p1.
        Parameters:
        start - start position for getting tokens
        end - position for last token
        Returns:
        Iterator for tokens that overal with range from start to end
      • getTokenAt

        public Token getTokenAt​(int pos)
        Find the token at a given position. May return null if no token is found (whitespace skipped) or if the position is out of range:
        Parameters:
        pos -
        Returns:
      • getWordAt

        public Token getWordAt​(int offs,
                               java.util.regex.Pattern p)
      • getNextToken

        public Token getNextToken​(Token tok)
        Return the token following the current token, or null This is an expensive operation, so do not use it to update the gui
        Parameters:
        tok -
        Returns:
      • getPrevToken

        public Token getPrevToken​(Token tok)
        Return the token prior to the given token, or null This is an expensive operation, so do not use it to update the gui
        Parameters:
        tok -
        Returns:
      • getPairFor

        public Token getPairFor​(Token t)
        This is used to return the other part of a paired token in the document. A paired part has token.pairValue <> 0, and the paired token will have the negative of t.pairValue. This method properly handles nestings of same pairValues, but overlaps are not checked. if The document does not contain a paired token, then null is returned.
        Parameters:
        t -
        Returns:
        the other pair's token, or null if nothing is found.
      • doUndo

        public void doUndo()
        Perform an undo action, if possible
      • doRedo

        public void doRedo()
        Perform a redo action, if possible.
      • getMatcher

        public java.util.regex.Matcher getMatcher​(java.util.regex.Pattern pattern)
        Return a matcher that matches the given pattern on the entire document
        Parameters:
        pattern -
        Returns:
        matcher object
      • getMatcher

        public java.util.regex.Matcher getMatcher​(java.util.regex.Pattern pattern,
                                                  int start)
        Return a matcher that matches the given pattern in the part of the document starting at offset start. Note that the matcher will have offset starting from start
        Parameters:
        pattern -
        start -
        Returns:
        matcher that MUST be offset by start to get the proper location within the document
      • getMatcher

        public java.util.regex.Matcher getMatcher​(java.util.regex.Pattern pattern,
                                                  int start,
                                                  int length)
        Return a matcher that matches the given pattern in the part of the document starting at offset start and ending at start + length. Note that the matcher will have offset starting from start
        Parameters:
        pattern -
        start -
        length -
        Returns:
        matcher that MUST be offset by start to get the proper location within the document
      • clearUndos

        public void clearUndos()
        This will discard all undoable edits
      • getLineAt

        public java.lang.String getLineAt​(int pos)
                                   throws javax.swing.text.BadLocationException
        Gets the line at given position. The line returned will NOT include the line terminator '\n'
        Parameters:
        pos - Position (usually from text.getCaretPosition()
        Returns:
        the STring of text at given position
        Throws:
        javax.swing.text.BadLocationException
      • removeLineAt

        public void removeLineAt​(int pos)
                          throws javax.swing.text.BadLocationException
        Deletes the line at given position
        Parameters:
        pos -
        Throws:
        javax.swing.text.BadLocationException
      • replaceLineAt

        public void replaceLineAt​(int pos,
                                  java.lang.String newLines)
                           throws javax.swing.text.BadLocationException
        Replace the line at given position with the given string, which can span multiple lines
        Parameters:
        pos -
        newLines -
        Throws:
        javax.swing.text.BadLocationException
      • getUncommentedText

        public java.lang.String getUncommentedText​(int aStart,
                                                   int anEnd)
        Gets the text without the comments. For example for the string { // it's a comment this method will return "{ ".
        Parameters:
        aStart - start of the text.
        anEnd - end of the text.
        Returns:
        String for the line without comments (if exists).
      • getLineStartOffset

        public int getLineStartOffset​(int pos)
        Returns the starting position of the line at pos
        Parameters:
        pos -
        Returns:
        starting position of the line
      • getLineEndOffset

        public int getLineEndOffset​(int pos)
        Returns the end position of the line at pos. Does a bounds check to ensure the returned value does not exceed document length
        Parameters:
        pos -
        Returns:
      • getLineCount

        public int getLineCount()
        Return the number of lines in this document
        Returns:
      • getLineNumberAt

        public int getLineNumberAt​(int pos)
        Return the line number at given position. The line numbers are zero based
        Parameters:
        pos -
        Returns:
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • replace

        public void replace​(int offset,
                            int length,
                            java.lang.String text,
                            javax.swing.text.AttributeSet attrs)
                     throws javax.swing.text.BadLocationException
        We override this here so that the replace is treated as one operation by the undomanager
        Overrides:
        replace in class javax.swing.text.AbstractDocument
        Parameters:
        offset -
        length -
        text -
        attrs -
        Throws:
        javax.swing.text.BadLocationException
      • append

        public SyntaxDocument append​(java.lang.String str)
        Append the given string to the text of this document.
        Parameters:
        str -
        Returns:
        this document