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); }
public void doCmd(AbstractCommand cmd) { cmd.doit(); _doneStack.Push(cmd); _undoneStack.Clear(); if (_doneStack.Count == _maxStackSize) { _doneStack = this.reduceStackSize(_doneStack); } setUnReButtonState(); }
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(); } }