コード例 #1
0
 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();
     }
 }
コード例 #2
0
 /// <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
             }
         }
     }
 }
コード例 #3
0
 public void Add(ReversibleChange change)
 {
     steps.Add(change);
 }