/* * AnnotationTextEdit.java */ package pipe.historyActions.annotation; import uk.ac.imperial.pipe.models.petrinet.Annotation; import javax.swing.undo.AbstractUndoableEdit; /** * Undoable Edit for changing an annotations text */ public final class ChangeAnnotationText extends AbstractUndoableEdit { /** * Underlying annotation model */ private final Annotation annotation; /** * Old annotation text */ private final String oldText; /** * new annotation text */ private final String newText; /** * Constructor * @param annotation underlying model * @param oldText old annotaton text * @param newText new annotation text */ public ChangeAnnotationText(Annotation annotation, String oldText, String newText) { this.annotation = annotation; this.oldText = oldText; this.newText = newText; } /** * Sets annotation text to previous value */ @Override public void undo() { super.undo(); annotation.setText(oldText); } /** * Sets annotation text to new value */ @Override public void redo() { super.redo(); annotation.setText(newText); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof ChangeAnnotationText)) { return false; } ChangeAnnotationText that = (ChangeAnnotationText) o; if (!annotation.equals(that.annotation)) { return false; } if (!newText.equals(that.newText)) { return false; } if (!oldText.equals(that.oldText)) { return false; } return true; } @Override public int hashCode() { int result = annotation.hashCode(); result = 31 * result + oldText.hashCode(); result = 31 * result + newText.hashCode(); return result; } }