package ilarkesto.gwt.client.undo; import ilarkesto.core.logging.Log; import java.util.LinkedList; import java.util.List; public class UndoManager { private static final Log LOG = Log.get(UndoManager.class); private int maxOperations = 5; private List<AUndoOperation> operations = new LinkedList<AUndoOperation>(); public void add(AUndoOperation operation) { operations.add(0, operation); while (operations.size() > maxOperations) { operations.remove(operations.size() - 1); } } public void undo(AUndoOperation operation) { LOG.info("Undo:", operation); operation.undo(); operations.remove(operation); } public List<AUndoOperation> getOperations() { return operations; } public void clear() { operations.clear(); } }