Class CopyTargetEdit


  • public final class CopyTargetEdit
    extends TextEdit
    A copy target edit denotes the target of a copy operation. Copy 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 the associated source edit. Violating one of two requirements will result in a MalformedTreeException when executing the edit tree.

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

    Since:
    3.0
    See Also:
    CopySourceEdit
    • Constructor Detail

      • CopyTargetEdit

        public CopyTargetEdit​(int offset)
        Constructs a new copy target edit
        Parameters:
        offset - the edit's offset
      • CopyTargetEdit

        public CopyTargetEdit​(int offset,
                              CopySourceEdit source)
        Constructs an new copy target edit
        Parameters:
        offset - the edit's offset
        source - the corresponding source edit
    • Method Detail

      • getSourceEdit

        public CopySourceEdit getSourceEdit()
        Returns the associated source edit or null if no source edit is associated yet.
        Returns:
        the source edit or null
      • 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