Package org.eclipse.text.edits
Class MultiTextEdit
- java.lang.Object
-
- org.eclipse.text.edits.TextEdit
-
- org.eclipse.text.edits.MultiTextEdit
-
- Direct Known Subclasses:
MultiTextEditWithProgress
public class MultiTextEdit extends TextEdit
A multi-text edit can be used to aggregate several edits into one edit. The edit itself doesn't modify a document.Clients are allowed to implement subclasses of a multi-text edit.Subclasses must implement
doCopy()
to ensure the a copy of the right type is created. Not implementingdoCopy()
in subclasses will result in an assertion failure during copying.- Since:
- 3.0
-
-
Field Summary
-
Fields inherited from class org.eclipse.text.edits.TextEdit
CREATE_UNDO, NONE, UPDATE_REGIONS
-
-
Constructor Summary
Constructors Modifier Constructor Description MultiTextEdit()
Creates a newMultiTextEdit
.MultiTextEdit(int offset, int length)
Creates a newMultiTextEdit
for the given range.protected
MultiTextEdit(MultiTextEdit other)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
accept0(TextEditVisitor visitor)
Accepts the given visitor on a type-specific visit of the current edit.protected boolean
canZeroLengthCover()
Returnstrue
if an edit with length zero can cover another edit.protected void
checkIntegrity()
Checks the edit's integrity.boolean
covers(TextEdit other)
Returnstrue
if the edit covers the given editother
.protected TextEdit
doCopy()
Creates and returns a copy of this edit.int
getLength()
Returns the length of the edit.int
getOffset()
Returns the offset of the edit.-
Methods inherited from class org.eclipse.text.edits.TextEdit
accept, acceptChildren, addChild, addChildren, apply, apply, childDocumentUpdated, childRegionUpdated, copy, equals, getChildren, getChildrenSize, getCoverage, getExclusiveEnd, getInclusiveEnd, getParent, getRegion, getRoot, hasChildren, hashCode, isDeleted, moveTree, postProcessCopy, removeChild, removeChild, removeChildren, toString
-
-
-
-
Constructor Detail
-
MultiTextEdit
public MultiTextEdit()
Creates a newMultiTextEdit
. The range of the edit is determined by the range of its children. Adding this edit to a parent edit sets its range to the range covered by its children. If the edit doesn't have any children its offset is set to the parent's offset and its length is set to 0.
-
MultiTextEdit
public MultiTextEdit(int offset, int length)
Creates a newMultiTextEdit
for the given range. Adding a child to this edit which isn't covered by the given range will result in an exception.- Parameters:
offset
- the edit's offsetlength
- the edit's length.- See Also:
TextEdit.addChild(TextEdit)
,TextEdit.addChildren(TextEdit[])
-
MultiTextEdit
protected MultiTextEdit(MultiTextEdit other)
-
-
Method Detail
-
checkIntegrity
protected void checkIntegrity() throws MalformedTreeException
Checks the edit's integrity.Note that this method should only be called by the edit framework and not by normal clients.
This default implementation does nothing. Subclasses may override if needed.
- Throws:
MalformedTreeException
- if the edit isn't in a valid state and can therefore not be executed
-
getOffset
public final int getOffset()
Description copied from class:TextEdit
Returns the offset of the edit. An offset is a 0-based character index. Returns-1
if the edit is marked as deleted.
-
getLength
public final int getLength()
Description copied from class:TextEdit
Returns the length of the edit. Returns-1
if the edit is marked as deleted.
-
covers
public final boolean covers(TextEdit other)
Description copied from class:TextEdit
Returnstrue
if the edit covers the given editother
. It is up to the concrete text edit to decide if a edit of length zero can cover another edit.
-
canZeroLengthCover
protected boolean canZeroLengthCover()
Description copied from class:TextEdit
Returnstrue
if an edit with length zero can cover another edit. Returnsfalse
otherwise.- Overrides:
canZeroLengthCover
in classTextEdit
- Returns:
- whether an edit of length zero can cover another edit
-
doCopy
protected TextEdit doCopy()
Description copied from class:TextEdit
Creates and returns a copy of this edit. The copy method should be implemented in a way so that the copy can executed without causing any harm to the original edit. Implementors of this method are responsible for creating deep or shallow copies of referenced object to fulfill this requirement.Implementers of this method should use the copy constructor
This method should not be called from outside the framework. Please useEdit#Edit
(Edit source) to initialize the edit part of the copy. Implementors aren't responsible to actually copy the children or to set the right parent.copy
to create a copy of a edit tree.- Specified by:
doCopy
in classTextEdit
- Returns:
- a copy of this edit.
- See Also:
TextEdit.copy()
,TextEdit.postProcessCopy(TextEditCopier)
,TextEditCopier
-
accept0
protected void accept0(TextEditVisitor visitor)
Description copied from class:TextEdit
Accepts the given visitor on a type-specific visit of the current edit. This method must be implemented in all concrete text edits.General template for implementation on each concrete TextEdit class:
boolean visitChildren= visitor.visit(this); if (visitChildren) { acceptChildren(visitor); }
accept
) takes care of invokingvisitor.preVisit(this)
andvisitor.postVisit(this)
.
-
-