package ilarkesto.gwt.client.undo; import ilarkesto.gwt.client.DateAndTime; public abstract class AUndoOperation { private DateAndTime dateAndTime; protected abstract void onUndo(); public abstract String getLabel(); public AUndoOperation() { dateAndTime = DateAndTime.now(); } public final void undo() { onUndo(); } public String getLongLabel() { return getLabel() + " (" + dateAndTime.getPeriodToNow().toShortestString() + " ago)"; } @Override public String toString() { return "AUndoOperation(" + getLabel() + ")"; } }