Class MultiTextEdit

Direct Known Subclasses:

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 implementing doCopy() in subclasses will result in an assertion failure during copying.

  • Constructor Details

    • MultiTextEdit

      public MultiTextEdit()
      Creates a new MultiTextEdit. 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 new MultiTextEdit for the given range. Adding a child to this edit which isn't covered by the given range will result in an exception.
      offset - the edit's offset
      length - the edit's length.
      See Also:
    • MultiTextEdit

      protected MultiTextEdit(MultiTextEdit other)
  • Method Details

    • 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.

      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.
      getOffset in class TextEdit
      the offset of the edit
    • 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.
      getLength in class TextEdit
      the length of the edit
    • covers

      public final boolean covers(TextEdit other)
      Description copied from class: TextEdit
      Returns true if the edit covers the given edit other. It is up to the concrete text edit to decide if a edit of length zero can cover another edit.
      covers in class TextEdit
      other - the other edit
      true if the edit covers the other edit; otherwise false is returned.
    • canZeroLengthCover

      protected boolean canZeroLengthCover()
      Description copied from class: TextEdit
      Returns true if an edit with length zero can cover another edit. Returns false otherwise.
      canZeroLengthCover in class TextEdit
      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 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
      a copy of this edit.
      See Also:
    • 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) {
      Note that the caller (accept) takes care of invoking visitor.preVisit(this) and visitor.postVisit(this).
      Specified by:
      accept0 in class TextEdit
      visitor - the visitor object