`
public interface ICommand{
boolean Execute();
void UndoExecute();}
CommandManager
AddCommand
DeleteCommand
// @Override
public boolean Execute()
{
if (isNode)
{
graph.add(node, point);
}
else if (!isNode)
{
graph.connect(edge, mouseDownPoint, point);
}
return true;
}
// @Override
public void UndoExecute()
{
if (isNode)
{
graph.removeNode(node);
}
else if (!isNode)
{
graph.removeEdge(edge);
}
}
This is CommandManager Class.
private Stack commandUndoStack = new Stack();
private Stack commandRedoStack = new Stack();
public void ExecuteCommand(ICommand cmd)
{
cmd.Execute();
commandUndoStack.push(cmd);
}
public void Undo()
{
if (!commandUndoStack.empty())
{
ICommand cmd = commandUndoStack.pop();
cmd.UndoExecute();
commandRedoStack.push(cmd);
}
}
public void Redo()
{
if (!commandRedoStack.empty())
{
ICommand cmd = commandRedoStack.pop();
cmd.Execute();
commandUndoStack.push(cmd);
}
}