org.eclipse.text.edits

## Class MoveTargetEdit

- java.lang.Object
- - org.eclipse.text.edits.TextEdit
  - - org.eclipse.text.edits.MoveTargetEdit

    public final class MoveTargetEdit
    extends TextEdit

A move target edit denotes the target of a move operation. Move target edits are only valid inside an edit tree if they have a corresponding source edit. Furthermore a target edit can't can't be a direct or indirect child of its associated source edit. Violating one of two requirements will result in a `MalformedTreeException` when executing the edit tree.

Move target edits can't be used as a parent for other edits. Trying to add an edit to a move target edit results in a `MalformedTreeException` as well.

Since:
  3.0
See Also:
  `MoveSourceEdit`, `CopyTargetEdit`

### Field Summary

### Fields inherited from class org.eclipse.text.edits.TextEdit

`CREATE_UNDO, NONE, UPDATE_REGIONS`

### Constructor Summary

Constructors
Constructor and Description
`MoveTargetEdit(int offset)` Constructs a new move target edit
`MoveTargetEdit(int offset, MoveSourceEdit source)` Constructs an new move target edit

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `accept0(TextEditVisitor visitor)` Accepts the given visitor on a type-specific visit of the current edit.
`protected TextEdit` `doCopy()` Creates and returns a copy of this edit.
`MoveSourceEdit` `getSourceEdit()` Returns the associated source edit or `null` if no source edit is associated yet.
`protected void` `postProcessCopy(TextEditCopier copier)` This method is called on every edit of the copied tree to do some post-processing like connected an edit to a different edit in the tree.
`void` `setSourceEdit(MoveSourceEdit edit)` Sets the source edit.

### Methods inherited from class org.eclipse.text.edits.TextEdit

`accept, acceptChildren, addChild, addChildren, apply, apply, canZeroLengthCover, childDocumentUpdated, childRegionUpdated, copy, covers, equals, getChildren, getChildrenSize, getCoverage, getExclusiveEnd, getInclusiveEnd, getLength, getOffset, getParent, getRegion, getRoot, hasChildren, hashCode, isDeleted, moveTree, removeChild, removeChild, removeChildren, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### MoveTargetEdit

    public MoveTargetEdit(int offset)

Constructs a new move target edit

Parameters:
  `offset` - the edit's offset

#### MoveTargetEdit

    public MoveTargetEdit(int offset,
                          MoveSourceEdit source)

Constructs an new move target edit

Parameters:
  `offset` - the edit's offset
  `source` - the corresponding source edit

### Method Detail

#### getSourceEdit

    public MoveSourceEdit getSourceEdit()

Returns the associated source edit or `null` if no source edit is associated yet.

Returns:
  the source edit or `null`

#### setSourceEdit

    public void setSourceEdit(MoveSourceEdit edit)

Sets the source edit.

Parameters:
  `edit` - the source edit
Throws:
  `MalformedTreeException` - is thrown if the target edit is a direct or indirect child of the source 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 `Edit#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.`

This method should not be called from outside the framework. Please use `copy` to create a copy of a edit tree.

Specified by:
  `doCopy` in class `TextEdit`
Returns:
  a copy of this edit.
See Also:
  `TextEdit.copy()`, `TextEdit.postProcessCopy(TextEditCopier)`, `TextEditCopier`

#### postProcessCopy

    protected void postProcessCopy(TextEditCopier copier)

Description copied from class: `TextEdit`
This method is called on every edit of the copied tree to do some post-processing like connected an edit to a different edit in the tree.

This default implementation does nothing

Overrides:
  `postProcessCopy` in class `TextEdit`
Parameters:
  `copier` - the copier that manages a map between original and copied edit.
See Also:
  `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);
     }

Note that the caller (`accept`) takes care of invoking `visitor.preVisit(this)` and `visitor.postVisit(this)`.

Specified by:
  `accept0` in class `TextEdit`
Parameters:
  `visitor` - the visitor object