` Undo Violet Group

CS 151 - Undo Violet

Craig Huff, Qi Liu, Yuliang Pan, Hengyi Shi

Cover page image

Git Repo

Project Design


    
    
  • Command Style
  • public interface ICommand{
        boolean Execute();
        void UndoExecute();} 
  • CommandManager
  • AddCommand
  • DeleteCommand
  • Project Implementation

    
        This is the basis for the Add and Delete Commands. 
        
     // @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);
            }
        }

    Collaboration

    
        
  • Facebook Messenger
  • Git Issues
  • Room for improvement