예제 #1
0
        public CustomStroke startEditing()
        {
            if (!this.Selected)
            {
                return(null);
            }

            this.Editing = true;
            this.Refresh();
            return(strokes.get(this.Id.ToString()));
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
 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();
     }
 }
예제 #4
0
        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));
                }
            }
        }
예제 #5
0
        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();
            }
        }