Package jsyntaxpane
Class SyntaxDocument
- java.lang.Object
-
- javax.swing.text.AbstractDocument
-
- javax.swing.text.PlainDocument
-
- jsyntaxpane.SyntaxDocument
-
- All Implemented Interfaces:
java.io.Serializable,javax.swing.text.Document
public class SyntaxDocument extends javax.swing.text.PlainDocumentA 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
-
-
Constructor Summary
Constructors Constructor Description SyntaxDocument(Lexer lexer)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SyntaxDocumentappend(java.lang.String str)Append the given string to the text of this document.voidclearUndos()This will discard all undoable editsvoiddoRedo()Perform a redo action, if possible.voiddoUndo()Perform an undo action, if possibleprotected voidfireChangedUpdate(javax.swing.event.DocumentEvent e)protected voidfireInsertUpdate(javax.swing.event.DocumentEvent e)protected voidfireRemoveUpdate(javax.swing.event.DocumentEvent e)java.lang.StringgetLineAt(int pos)Gets the line at given position.intgetLineCount()Return the number of lines in this documentintgetLineEndOffset(int pos)Returns the end position of the line at pos.intgetLineNumberAt(int pos)Return the line number at given position.intgetLineStartOffset(int pos)Returns the starting position of the line at posjava.util.regex.MatchergetMatcher(java.util.regex.Pattern pattern)Return a matcher that matches the given pattern on the entire documentjava.util.regex.MatchergetMatcher(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.MatchergetMatcher(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.TokengetNextToken(Token tok)Return the token following the current token, or null This is an expensive operation, so do not use it to update the guiTokengetPairFor(Token t)This is used to return the other part of a paired token in the document.TokengetPrevToken(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 guiTokengetTokenAt(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.StringgetUncommentedText(int aStart, int anEnd)Gets the text without the comments.TokengetWordAt(int offs, java.util.regex.Pattern p)voidremoveLineAt(int pos)Deletes the line at given positionvoidreplace(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 undomanagervoidreplaceLineAt(int pos, java.lang.String newLines)Replace the line at given position with the given string, which can span multiple linesvoidreplaceToken(Token token, java.lang.String replacement)Replace the token with the replacement stringjava.lang.StringtoString()-
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
-
-
-
-
Constructor Detail
-
SyntaxDocument
public SyntaxDocument(Lexer lexer)
-
-
Method Detail
-
fireChangedUpdate
protected void fireChangedUpdate(javax.swing.event.DocumentEvent e)
- Overrides:
fireChangedUpdatein classjavax.swing.text.AbstractDocument
-
fireInsertUpdate
protected void fireInsertUpdate(javax.swing.event.DocumentEvent e)
- Overrides:
fireInsertUpdatein classjavax.swing.text.AbstractDocument
-
fireRemoveUpdate
protected void fireRemoveUpdate(javax.swing.event.DocumentEvent e)
- Overrides:
fireRemoveUpdatein classjavax.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 tokensend- 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 fromstart- 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 fromstart- 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.BadLocationExceptionGets 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.BadLocationExceptionDeletes 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.BadLocationExceptionReplace 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 commentthis 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:
toStringin classjava.lang.Object
-
replace
public void replace(int offset, int length, java.lang.String text, javax.swing.text.AttributeSet attrs) throws javax.swing.text.BadLocationExceptionWe override this here so that the replace is treated as one operation by the undomanager- Overrides:
replacein classjavax.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
-
-