public CustomStroke startEditing() { if (!this.Selected) { return(null); } this.Editing = true; this.Refresh(); return(strokes.get(this.Id.ToString())); }
public override void Undo(CustomStrokeCollection strokes) { if (strokes.has(Id)) { CustomStroke old = strokes.get(Id); if (old.isLocked()) { throw new Exception("Stroke is Locked"); } strokes.Remove(strokes.get(Id)); EditionSocket.RemoveStroke(Id); } }
public override void Redo(CustomStrokeCollection strokes) { if (!strokes.has(Id)) { strokes.Add(SerializationHelper.stringToStroke(JObject.Parse(SerializedStroke), strokes)); EditionSocket.AddStroke(SerializedStroke); strokes.get(Id).Select(); } }
public override void Undo(CustomStrokeCollection strokes) { if (strokes.has(Id)) { CustomStroke old = strokes.get(Id); if (old.isLocked()) { throw new Exception("Stroke is Locked"); } EditionSocket.EditStroke(SerializedStrokeBefore); CustomStroke updated = SerializationHelper.stringToStroke(JObject.Parse(SerializedStrokeBefore), strokes); bool selected = ((CustomStroke)old).isSelected(); bool editting = ((CustomStroke)old).isEditing(); ((CustomStroke)old).stopEditing(); strokes.Remove(strokes.get(Id)); int newindex = strokes.ToList().FindIndex(stroke => ((CustomStroke)stroke).Index > updated.Index); try { strokes.Insert(newindex, updated); } catch { strokes.Add(updated); } if (selected) { strokes.get(updated.Id.ToString()).Select(); } if (editting) { strokes.get(updated.Id.ToString()).startEditing(); } if (updated is Anchorable) { strokes.ToList().FindAll(stroke => stroke is BaseLine).ForEach(stroke => ((BaseLine)stroke).anchorableMoved((Anchorable)updated)); } } }
public override void MouseDown(Point point, CustomStrokeCollection strokes) { if (editing != null) { return; } List <Stroke> clicked = strokes.ToList().FindAll(stroke => ((CustomStroke)stroke).HitTest(point) && (stroke is Movable || stroke is BaseLine)); List <Stroke> clickedHandles = clicked.FindAll(stroke => stroke is DragHandle); List <Stroke> clickedSelected = clicked.FindAll(stroke => ((CustomStroke)stroke).isSelected()); if (clickedHandles.Count > 0) { this.initialCursorPosition = point; this.initialObjectPoints = clicked.Last().StylusPoints; this.editing = (Movable)clickedHandles.Last(); if (strokes.get(((DragHandle)this.editing).ParentId) is BaseLine) { strokes.ToList().FindAll(stroke => stroke is Anchorable).ForEach(stroke => { ((Anchorable)stroke).showAnchorPoints(); }); } return; } if (clickedSelected.Count > 0) { if (clicked.Last() is BaseLine) { if (!((CustomStroke)clicked.Last()).isEditing()) { return; } ((BaseLine)clicked.Last()).newPoint(point); this.MouseDown(point, strokes); return; } this.initialCursorPosition = point; this.initialObjectPoints = clicked.Last().StylusPoints; this.editing = (Movable)clickedSelected.Last(); } }