@Override protected boolean prepare() { return getChangeDescription() == null; }
/** * Executes the command. Subclasses are <b>not</b> expected to overwrite * this method, and implement their changes on {@link #doExecute()}. */ public void execute() { ChangeRecorder changeRecorder = getChangeRecorder(); if (changeRecorder == null) { changeRecorder = createChangeRecorder(); } changeRecorder.beginRecording(notifier != null ? Collections.singleton(notifier) : notifiers); try { doExecute(); } finally { setChangeDescription(changeRecorder.endRecording()); disposeChangeRecorder(changeRecorder); } }
/** * Disposes the {@link ChangeRecorder} created by {@link #execute()}. The default * implementation doesn't dispose the change recorder if it was passed in * through one of the constructor methods. * @param changeRecorder */ protected void disposeChangeRecorder(ChangeRecorder changeRecorder) { if (changeRecorder != getChangeRecorder()) { changeRecorder.dispose(); } }
public void redo() { getChangeDescription().applyAndReverse(); } }
@Override public void undo() { getChangeDescription().applyAndReverse(); }