public void Perform() { // Rückwärts durch die Liste und alles ausführen for (int i = steps.Count - 1; i <= 0; --i) { ReversibleChange rc = steps[i] as ReversibleChange; rc.Undo(); } }
/// <summary> /// Adds an undo step to the undo stack. /// </summary> /// <param name="step">the step</param> public void AddUndoStep(ReversibleChange step) { if (maxUndoSteps == 0) { return; } if (ignoreSameContext) { return; } if (undoFrameStack.Count > 0) { if (!isRedoing) { redoSteps.Clear(); // Aerotech 27.3.13: eine neue Undofähige Aktion soll den Redostack leer machen } (undoFrameStack.Peek() as ArrayList).Add(step); } else if (redoFrameStack.Count > 0) { (redoFrameStack.Peek() as ArrayList).Add(step); } else { if (isUndoing) { redoSteps.Add(step); } else { undoSteps.Add(step); if (!isRedoing) { redoSteps.Clear(); // Aerotech 27.3.13: eine neue Undofähige Aktion soll den Redostack leer machen } while (undoSteps.Count > maxUndoSteps) { undoSteps.RemoveAt(0); // ältesten Eintrag entfernen } } } }
public void Add(ReversibleChange change) { steps.Add(change); }