void checkReplaceSavepointEdit(WrapUndoEdit origEdit, WrapUndoEdit newEdit) { if (savepointEdit == origEdit) { checkLogOp("checkReplaceSavepointEdit-replacedSavepointEdit", origEdit); // NOI18N savepointEdit = newEdit; } }
private void clearSaveActionsEdit() { if (onSaveTasksEdit != null) { checkLogOp(" saveActionsEdit-die", onSaveTasksEdit); // NOI18N onSaveTasksEdit.die(); onSaveTasksEdit = null; } }
void endOnSaveTasks() { if (onSaveTasksEdit != null) { onSaveTasksEdit.end(); } awaitingOnSaveTasks = false; checkLogOp(" endSaveActions(): saveActionsEdit", onSaveTasksEdit); // NOI18N }
private void undoSaveActions() { if (onSaveTasksEdit != null) { checkLogOp(" saveActionsEdit.undo()", onSaveTasksEdit); // NOI18N onSaveTasksEdit.undo(); } }
private void redoSaveActions() { if (onSaveTasksEdit != null) { checkLogOp(" saveActionsEdit.redo()", onSaveTasksEdit); // NOI18N onSaveTasksEdit.redo(); } }
void notifyWrapEditDie(UndoableEdit edit) { if (edit == savepointEdit) { // Savepoint neighbour died => no longer a savepoint checkLogOp("notifyWrapEditDie-savepoint-die", edit); // NOI18N savepointEdit = null; clearSaveActionsEdit(); } }
void delegateRedoFailedAtSavepoint(WrapUndoEdit edit) { checkLogOp("delegateRedoFailedAtSavepoint", edit); // NOI18N redoSaveActions(); }
void delegateUndoFailedAtSavepoint(WrapUndoEdit edit) { checkLogOp("delegateUndoFailedAtSavepoint", edit); // NOI18N redoSaveActions(); }
void afterRedoCheck(WrapUndoEdit edit) { if (isAtSavepoint()) { // Redoing edit right before savepoint. checkLogOp("afterRedoCheck-atSavepoint", edit); // NOI18N // saveActionsEdit already processed by checkSavepointBeforeUndo() beforeSavepoint = false; savepointEdit = edit; } else if (savepointEdit == edit) { // Redone to savepoint if (onSaveTasksEdit != null) { checkLogOp(" saveActionsEdit.redo()", onSaveTasksEdit); // NOI18N onSaveTasksEdit.redo(); } checkLogOp("afterRedoCheck-becomesSavepoint", edit); // NOI18N assert (beforeSavepoint) : "Expected to be before savepoint"; // NOI18N markSavepointAndUnmodified(); } }
void beforeUndoAtSavepoint(WrapUndoEdit edit) { checkLogOp("beforeUndoAtSavepoint: undoSaveActions()", edit); // NOI18N undoSaveActions(); }
void beforeRedoAtSavepoint(WrapUndoEdit edit) { checkLogOp("beforeRedoAtSavepoint", edit); // NOI18N undoSaveActions(); }
void afterUndoCheck(WrapUndoEdit edit) { if (isAtSavepoint()) { // Undoing edit right before savepoint. checkLogOp("afterUndoCheck-atSavepoint", edit); // NOI18N // saveActionsEdit already processed by checkSavepointBeforeUndo() beforeSavepoint = true; savepointEdit = edit; } else if (savepointEdit == edit) { // Undone to savepoint if (onSaveTasksEdit != null) { checkLogOp(" saveActionsEdit.redo()", onSaveTasksEdit); // NOI18N onSaveTasksEdit.redo(); } checkLogOp("afterUndoCheck-becomesSavepoint-markUnmodified", edit); // NOI18N assert (!beforeSavepoint) : "Expected to be behind savepoint"; // NOI18N markSavepointAndUnmodified(); } }
@Override public void die() { undoRedoManager.checkLogOp("WrapUndoEdit.die", this); delegate.die(); undoRedoManager.notifyWrapEditDie(this); }
@Override public boolean replaceEdit(UndoableEdit anEdit) { if (undoRedoManager.isAtSavepoint()) { // Prohibit replacing at savepoint return false; } WrapUndoEdit wrapEdit = (WrapUndoEdit) anEdit; boolean replaced = delegate.replaceEdit(wrapEdit.delegate); undoRedoManager.checkLogOp("WrapUndoEdit.replaceEdit=" + replaced, anEdit); if (replaced) { undoRedoManager.checkReplaceSavepointEdit(wrapEdit, this); } return replaced; }
checkLogOp("addEdit-inSaveActions", edit); // NOI18N if (onSaveTasksEdit == null) { onSaveTasksEdit = new CompoundEdit(); boolean added = super.addEdit(wrapEdit); if (isAtSavepoint()) { checkLogOp("addEdit-atSavepoint", wrapEdit); // NOI18N beforeSavepoint = false; savepointEdit = wrapEdit; checkLogOp("addEdit", wrapEdit); // NOI18N
void mergeSaveActionsToLastEdit(WrapUndoEdit lastWrapEdit) { if (onSaveTasksEdit != null) { checkLogOp(" mergeSaveActionsToLastEdit-lastWrapEdit", lastWrapEdit); // NOI18N StableCompoundEdit compoundEdit = new StableCompoundEdit(); compoundEdit.addEdit(lastWrapEdit.delegate()); compoundEdit.addEdit(onSaveTasksEdit); compoundEdit.end(); lastWrapEdit.setDelegate(compoundEdit); onSaveTasksEdit = null; checkLogOp(" compoundEdit", compoundEdit); // NOI18N // Note that there may be no edits present in UM.edits (e.g. // when discardAllEdits() was called). If the savepoint // is at index==0 in UM.edits then the saveActionsEdit cannot be merged // to any previous edit (there is no such one) and this method will not be called. // This case is handled specially in addEditImpl(). } }
@Override public void undo() throws CannotUndoException { undoRedoManager.checkLogOp("WrapUndoEdit.undo", this); boolean savepoint = undoRedoManager.isAtSavepoint(); if (savepoint) { undoRedoManager.beforeUndoAtSavepoint(this); } boolean done = false; try { delegate.undo(); done = true; // This will only happen if delegate.undo() does not throw CannotUndoException undoRedoManager.afterUndoCheck(this); } finally { if (!done && savepoint) { undoRedoManager.delegateUndoFailedAtSavepoint(this); } } }
@Override public void redo() throws CannotRedoException { undoRedoManager.checkLogOp("WrapUndoEdit.redo", this); boolean savepoint = undoRedoManager.isAtSavepoint(); if (savepoint) { undoRedoManager.beforeRedoAtSavepoint(this); } boolean done = false; try { delegate.redo(); done = true; // This will only happen if delegate.redo() does not throw CannotRedoException undoRedoManager.afterRedoCheck(this); } finally { if (!done && savepoint) { undoRedoManager.delegateRedoFailedAtSavepoint(this); } } }