/// <summary> /// Restore selection to its state after change. /// </summary> public override void Redo(DrawingCanvas drawingCanvas) { // Replace all objects in the list with objects from listAfter ReplaceObjects(drawingCanvas.GraphicsList, listAfter); drawingCanvas.RefreshClip(); }
/// <summary> /// Restore deleted objects /// </summary> public override void Undo(DrawingCanvas drawingCanvas) { // Insert all objects from cloneList to GraphicsList int currentIndex = 0; int indexToInsert; foreach (PropertiesGraphicsBase o in cloneList) { indexToInsert = indexes[currentIndex]; if (indexToInsert >= 0 && indexToInsert <= drawingCanvas.GraphicsList.Count) // "<=" is correct ! { drawingCanvas.GraphicsList.Insert(indexToInsert, o.CreateGraphics()); } else { // Bug: we should not be here. // Add to the end anyway. drawingCanvas.GraphicsList.Add(o.CreateGraphics()); System.Diagnostics.Trace.WriteLine("CommandDelete.Undo - incorrect index"); } currentIndex++; } drawingCanvas.RefreshClip(); }
/// <summary> /// Add all deleted objects to GraphicsList /// </summary> public override void Undo(DrawingCanvas drawingCanvas) { foreach (PropertiesGraphicsBase o in cloneList) { drawingCanvas.GraphicsList.Add(o.CreateGraphics()); } drawingCanvas.RefreshClip(); }
/// <summary> /// Add object again /// </summary> public override void Redo(DrawingCanvas drawingCanvas) { HelperFunctions.UnselectAll(drawingCanvas); // Create full object from the clone and add it to list drawingCanvas.GraphicsList.Add(newObjectClone.CreateGraphics()); // Object created from the clone doesn't contain clip information, // refresh it. drawingCanvas.RefreshClip(); }