public class FrozenDocument extends java.lang.Object implements DocumentEx
EMPTY_ARRAY, PROP_WRITABLE
Modifier and Type | Method and Description |
---|---|
FrozenDocument |
applyEvent(DocumentEvent event,
int newStamp) |
void |
clearLineModificationFlags() |
RangeMarker |
createGuardedBlock(int startOffset,
int endOffset)
Marks a range of text in the document as read-only (attempts to modify text in the
range cause
ReadOnlyFragmentModificationException to be thrown). |
LineIterator |
createLineIterator() |
RangeMarker |
createRangeMarker(int startOffset,
int endOffset,
boolean surviveOnExternalChange)
Creates a range marker which points to the specified range of text in the document and
is automatically adjusted when the document text is changed.
|
void |
deleteString(int startOffset,
int endOffset)
Deletes the specified range of text from the document.
|
java.lang.CharSequence |
getCharsSequence()
Use this method instead of
Document.getText() if you do not need to create a copy of the content. |
java.lang.CharSequence |
getImmutableCharSequence() |
int |
getLineCount()
Returns the number of lines in the document.
|
int |
getLineEndOffset(int line)
Returns the end offset for the line with the specified number.
|
int |
getLineNumber(int offset)
Returns the line number (0-based) corresponding to the specified offset in the document.
|
int |
getLineSeparatorLength(int line) |
int |
getLineStartOffset(int line)
Returns the start offset for the line with the specified number.
|
long |
getModificationStamp()
Gets the modification stamp value.
|
RangeMarker |
getOffsetGuard(int offset)
Returns the read-only marker covering the specified offset in the document.
|
RangeMarker |
getRangeGuard(int start,
int end)
Returns the read-only marker covering the specified range in the document.
|
java.lang.String |
getText()
Retrieves a copy of the document content.
|
java.lang.String |
getText(TextRange range) |
<T> T |
getUserData(Key<T> key) |
void |
insertString(int offset,
java.lang.CharSequence s)
Inserts the specified text at the specified offset in the document.
|
boolean |
isWritable()
Checks if the document text is read-only.
|
boolean |
processRangeMarkers(Processor<? super RangeMarker> processor)
Get all range markers
and hand them to the
processor in their RangeMarker.getStartOffset() order |
boolean |
processRangeMarkersOverlappingWith(int start,
int end,
Processor<? super RangeMarker> processor)
Get range markers which
TextRange.intersects(int, int) the specified range
and hand them to the processor in their RangeMarker.getStartOffset() order |
<T> void |
putUserData(Key<T> key,
T value)
Add a new user data value to this object.
|
void |
registerRangeMarker(RangeMarkerEx rangeMarker,
int start,
int end,
boolean greedyToLeft,
boolean greedyToRight,
int layer) |
void |
removeEditReadOnlyListener(EditReadOnlyListener listener) |
void |
removeGuardedBlock(RangeMarker block)
Removes a marker marking a range of text in the document as read-only.
|
boolean |
removeRangeMarker(RangeMarkerEx rangeMarker) |
void |
replaceString(int startOffset,
int endOffset,
java.lang.CharSequence s)
Replaces the specified range of text in the document with the specified string.
|
void |
replaceText(java.lang.CharSequence chars,
long newModificationStamp) |
void |
setModificationStamp(long modificationStamp) |
void |
setReadOnly(boolean isReadOnly)
Marks the document as read-only or read/write.
|
void |
setStripTrailingSpacesEnabled(boolean isEnabled) |
void |
setText(java.lang.CharSequence text) |
void |
startGuardedBlockChecking()
Enables checking for read-only markers when the document is modified.
|
void |
stopGuardedBlockChecking()
Disables checking for read-only markers when the document is modified.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addEditReadOnlyListener, getGuardedBlocks, getModificationSequence, isInEventsHandling, moveText, suppressGuardedExceptions, unSuppressGuardedExceptions
addDocumentListener, addDocumentListener, addPropertyChangeListener, createRangeMarker, createRangeMarker, fireReadOnlyModificationAttempt, getChars, getTextLength, isInBulkUpdate, isLineModified, removeDocumentListener, removePropertyChangeListener, setCyclicBufferSize, setInBulkUpdate
public FrozenDocument applyEvent(DocumentEvent event, int newStamp)
public LineIterator createLineIterator()
createLineIterator
in interface DocumentEx
public void setModificationStamp(long modificationStamp)
setModificationStamp
in interface DocumentEx
public void replaceText(java.lang.CharSequence chars, long newModificationStamp)
replaceText
in interface DocumentEx
public void clearLineModificationFlags()
clearLineModificationFlags
in interface DocumentEx
public boolean removeRangeMarker(RangeMarkerEx rangeMarker)
removeRangeMarker
in interface DocumentEx
public void registerRangeMarker(RangeMarkerEx rangeMarker, int start, int end, boolean greedyToLeft, boolean greedyToRight, int layer)
registerRangeMarker
in interface DocumentEx
public boolean processRangeMarkers(Processor<? super RangeMarker> processor)
DocumentEx
processor
in their RangeMarker.getStartOffset()
orderprocessRangeMarkers
in interface DocumentEx
public boolean processRangeMarkersOverlappingWith(int start, int end, Processor<? super RangeMarker> processor)
DocumentEx
TextRange.intersects(int, int)
the specified range
and hand them to the processor
in their RangeMarker.getStartOffset()
orderprocessRangeMarkersOverlappingWith
in interface DocumentEx
public java.lang.String getText()
Document
Document.getCharsSequence()
whenever it's possible.public java.lang.String getText(TextRange range)
public java.lang.CharSequence getCharsSequence()
Document
Document.getText()
if you do not need to create a copy of the content.
Content represented by returned CharSequence is subject to change whenever document is modified via delete/replace/insertString method
calls. It is necessary to obtain Application.runWriteAction() to modify content of the document though so threading issues won't
arise.getCharsSequence
in interface Document
Document.getTextLength()
public java.lang.CharSequence getImmutableCharSequence()
getImmutableCharSequence
in interface Document
ImmutableCharSequence
public int getLineCount()
Document
getLineCount
in interface Document
public int getLineNumber(int offset)
Document
getLineNumber
in interface Document
offset
- the offset to get the line number for (must be in the range from 0 to
getTextLength()-1)public int getLineStartOffset(int line)
Document
getLineStartOffset
in interface Document
line
- the line number (from 0 to getLineCount()-1)public int getLineEndOffset(int line)
Document
getLineEndOffset
in interface Document
line
- the line number (from 0 to getLineCount()-1)public void insertString(int offset, java.lang.CharSequence s)
Document
insertString
in interface Document
offset
- the offset to insert the text at.s
- the text to insert.public void deleteString(int startOffset, int endOffset)
Document
deleteString
in interface Document
startOffset
- the start offset of the range to delete.endOffset
- the end offset of the range to delete.public void replaceString(int startOffset, int endOffset, java.lang.CharSequence s)
Document
replaceString
in interface Document
startOffset
- the start offset of the range to replace.endOffset
- the end offset of the range to replace.s
- the text to replace with.public boolean isWritable()
Document
isWritable
in interface Document
true
if the document text is writable, false
if it is read-only.Document.fireReadOnlyModificationAttempt()
public long getModificationStamp()
Document
getModificationStamp
in interface Document
PsiFile.getModificationStamp()
,
VirtualFile.getModificationStamp()
public RangeMarker createRangeMarker(int startOffset, int endOffset, boolean surviveOnExternalChange)
Document
createRangeMarker
in interface Document
startOffset
- the start offset for the range of text covered by the marker.endOffset
- the end offset for the range of text covered by the marker.surviveOnExternalChange
- if true, the marker is not invalidated by external changes.public void setReadOnly(boolean isReadOnly)
Document
setReadOnly
in interface Document
isReadOnly
- the new value of the read-only flag.Document.isWritable()
,
Document.fireReadOnlyModificationAttempt()
public RangeMarker createGuardedBlock(int startOffset, int endOffset)
Document
ReadOnlyFragmentModificationException
to be thrown).createGuardedBlock
in interface Document
startOffset
- the start offset of the text range to mark as read-only.endOffset
- the end offset of the text range to mark as read-only.Document.removeGuardedBlock(RangeMarker)
,
Document.startGuardedBlockChecking()
,
EditorActionManager.setReadonlyFragmentModificationHandler(com.intellij.openapi.editor.actionSystem.ReadonlyFragmentModificationHandler)
public void removeGuardedBlock(RangeMarker block)
Document
removeGuardedBlock
in interface Document
block
- the marker to remove.Document.createGuardedBlock(int, int)
public RangeMarker getOffsetGuard(int offset)
Document
getOffsetGuard
in interface Document
offset
- the offset for which the marker is requested.null
if the specified offset is not covered by a read-only marker.public RangeMarker getRangeGuard(int start, int end)
Document
getRangeGuard
in interface Document
start
- the start offset of the range for which the marker is requested.end
- the end offset of the range for which the marker is requested.null
if the specified range is not covered by a read-only marker.public void startGuardedBlockChecking()
Document
startGuardedBlockChecking
in interface Document
Document.createGuardedBlock(int, int)
,
Document.stopGuardedBlockChecking()
public void stopGuardedBlockChecking()
Document
stopGuardedBlockChecking
in interface Document
Document.createGuardedBlock(int, int)
,
Document.startGuardedBlockChecking()
public void setText(java.lang.CharSequence text)
public int getLineSeparatorLength(int line)
getLineSeparatorLength
in interface Document
public <T> T getUserData(Key<T> key)
getUserData
in interface UserDataHolder
public <T> void putUserData(Key<T> key, T value)
UserDataHolder
putUserData
in interface UserDataHolder
public void setStripTrailingSpacesEnabled(boolean isEnabled)
setStripTrailingSpacesEnabled
in interface DocumentEx
public void removeEditReadOnlyListener(EditReadOnlyListener listener)
removeEditReadOnlyListener
in interface DocumentEx