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.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
-
-
Constructor Summary
Constructors Constructor Description SyntaxDocument(Lexer lexer)
-
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 editsvoid
doRedo()
Perform a redo action, if possible.void
doUndo()
Perform an undo action, if possibleprotected 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 documentint
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 posjava.util.regex.Matcher
getMatcher(java.util.regex.Pattern pattern)
Return a matcher that matches the given pattern on the entire documentjava.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 guiToken
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 guiToken
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 positionvoid
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 undomanagervoid
replaceLineAt(int pos, java.lang.String newLines)
Replace the line at given position with the given string, which can span multiple linesvoid
replaceToken(Token token, java.lang.String replacement)
Replace the token with the replacement stringjava.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
-
-
-
-
Constructor Detail
-
SyntaxDocument
public SyntaxDocument(Lexer lexer)
-
-
Method Detail
-
fireChangedUpdate
protected void fireChangedUpdate(javax.swing.event.DocumentEvent e)
- Overrides:
fireChangedUpdate
in classjavax.swing.text.AbstractDocument
-
fireInsertUpdate
protected void fireInsertUpdate(javax.swing.event.DocumentEvent e)
- Overrides:
fireInsertUpdate
in classjavax.swing.text.AbstractDocument
-
fireRemoveUpdate
protected void fireRemoveUpdate(javax.swing.event.DocumentEvent e)
- Overrides:
fireRemoveUpdate
in 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.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 classjava.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 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
-
-