Esempio n. 1
0
        private Stack reduceStackSize(Stack oldStack)
        {
            Stack newStack   = new Stack();
            int   stackCount = oldStack.Count;

            for (int n = 1; n < stackCount; n++)
            {
                AbstractCommand ac = (AbstractCommand)oldStack.Pop();
                newStack.Push(ac);
            }

            return(newStack);
        }
Esempio n. 2
0
        public void doCmd(AbstractCommand cmd)
        {
            cmd.doit();
            _doneStack.Push(cmd);
            _undoneStack.Clear();

            if (_doneStack.Count == _maxStackSize)
            {
                _doneStack = this.reduceStackSize(_doneStack);
            }

            setUnReButtonState();
        }
Esempio n. 3
0
        public void redoLastUndone()
        {
            if (_undoneStack.Count != 0)
            {
                AbstractCommand last_undone_cmd = (AbstractCommand)_undoneStack.Pop();
                last_undone_cmd.redo();
                _doneStack.Push(last_undone_cmd);

                if (_doneStack.Count == _maxStackSize)
                {
                    _doneStack = this.reduceStackSize(_doneStack);
                }

                setUnReButtonState();
            }
        }