protected virtual void OnRedone(UndoPoint e) { if (Redone != null) Redone(e); }
private UndoPoint AddPoint(Element element, UndoAction action, string description, bool overwrite) { if (Suspended) return null; UndoPoint undo = null; string key = null; string createDesc = null; //Create undopoint if (element is Shape || element is Line) { undo = new UndoPoint(element, action); key = element.Key; createDesc = element.GetType().Name; } else { return null; } //Remove any previous undos ahead of this one if (mUndoPointer < List.Count) { for (int i = mUndoPointer+1; i < List.Count; i++) { List.RemoveAt(i); } } //Set description if (description == null || description == "") { if (action == UndoAction.Add) { undo.Description = "Add " + createDesc; } else if (action == UndoAction.Edit) { undo.Description = "Edit " + createDesc; } else if (action == UndoAction.Remove) { undo.Description = "Remove " + createDesc; } } else { undo.Description = description; } //Get current undopoint UndoPoint currentUndo = null; if (mUndoPointer > -1) currentUndo = (UndoPoint) List[mUndoPointer]; //Check if must add or update the undopoint if (overwrite && mUndoPointer > -1 && action == UndoAction.Edit && currentUndo.Key == key) { List[mUndoPointer] = undo; } else { //Add object to internal arraylist List.Add(undo); mUndoPointer = List.Count - 1; } return undo; }
protected virtual void OnUndone(UndoPoint e) { if (Undone != null) Undone(e); }