Implement undo/redo functionality with a command history stack.
Command
execute()
undo()
AddShapeCommand
DeleteShapesCommand
MoveShapeCommand
ChangeColorCommand
ResizeCommand
GroupCommand
undoStack
redoStack
execute(Command)
redo()
collection.add(shape)
commandManager.execute(new AddShapeCommand(shape, collection))
commands/Command.java
commands/CommandManager.java
commands/AddShapeCommand.java
commands/DeleteShapesCommand.java
commands/MoveShapeCommand.java
ui/Controller.java
App.java
Deleting the wiki page "Undo Redo Stack" cannot be undone. Continue?