Example #1
0
        internal override void ReportMouseClick(Canvas drawingCanvas, MouseButtonEventArgs args)
        {
            base.ReportMouseClick(drawingCanvas, args);
            if (drawingCanvas == null)
            {
                return;
            }

            Point mousePos = args.GetPosition(drawingCanvas);

            if (args.ChangedButton == MouseButton.Left)
            {
                DrawNode(drawingCanvas, mousePos);
            }
            else if (args.ChangedButton == MouseButton.Right)
            {
                if (GuideLine != null)
                {
                    EndDrawing();
                }
                else
                {
                    DDNodeObject affectedObject = GetTopmostAtPointOfType(drawingCanvas, typeof(DDNodeObject), mousePos) as DDNodeObject;
                    if (affectedObject != null)
                    {
                        TargetObject = affectedObject;
                        StartDrawing(drawingCanvas);
                    }
                }
            }
            else if (args.ChangedButton == MouseButton.Right)
            {
            }
        }
Example #2
0
        internal override void ReportMouseClick(Canvas drawingCanvas, MouseButtonEventArgs args)
        {
            base.ReportMouseClick(drawingCanvas, args);

            if ((drawingCanvas == null) || (args.ChangedButton != MouseButton.Left))
            {
                return;
            }

            Point        mousePos       = args.GetPosition(drawingCanvas);
            DDNodeObject affectedObject = GetTopmostAtPointOfType(drawingCanvas, typeof(DDNodeObject), mousePos) as DDNodeObject;

            if (affectedObject != null)
            {
                if (affectedObject == TargetObject)
                {
                    SetTarget(null);
                }
                else
                {
                    SetTarget(affectedObject);
                }
            }
            else
            {
                SetTarget(null);
            }
        }
Example #3
0
        protected void StartDrawing(Canvas drawingCanvas)
        {
            if (drawingCanvas == null)
            {
                return;
            }

            IsDrawing = true;

            if (TargetObject == null)
            {
                TargetObject = CreateNewObject();
                drawingCanvas.Children.Add(TargetObject);
            }

            if (GuideLine == null)
            {
                GuideLine = new DDPenGuideLine();
                if (TargetObject.Nodes.Count > 0)
                {
                    GuideLine.StartPoint = TargetObject.Nodes.Last.Point.Point;
                    GuideLine.EndPoint   = TargetObject.Nodes.Last.Point.Point;
                }
                drawingCanvas.Children.Add(GuideLine);
            }
        }
Example #4
0
        protected void EndDrawing()
        {
            if (TargetObject != null)
            {
                if (TargetObject.Nodes.Count < 2)
                {
                    if (TargetObject.Parent is Canvas)
                    {
                        (TargetObject.Parent as Canvas).Children.Remove(TargetObject);
                    }
                }
                else
                if (ObjectCreated != null)
                {
                    ObjectCreated(this, new EventArgs());
                }
                TargetObject = null;
            }

            if ((GuideLine != null) && (GuideLine.Parent is Canvas))
            {
                (GuideLine.Parent as Canvas).Children.Remove(GuideLine);
                GuideLine = null;
            }

            IsDrawing = false;
        }
Example #5
0
        protected void SetTarget(DDNodeObject target)
        {
            if (TargetObject != null)
            {
                TargetObject.ManipulationState = DDManipulationState.Normal;
                TargetObject = null;
            }

            if (target != null)
            {
                TargetObject = target;
                TargetObject.ManipulationState = DDManipulationState.Edited;
            }
        }
Example #6
0
        private void ConvertButton_Click(object sender, RoutedEventArgs e)
        {
            if (!(ToolManager.ActiveTool is DDPickTool))
            {
                return;
            }
            DDNodeObject replacementObject = null;

            if (_convertTarget is DDPolygon)
            {
                replacementObject = (_convertTarget as DDPolygon).CloneToPolyline();
            }
            else if (_convertTarget is DDPolyline)
            {
                replacementObject = (_convertTarget as DDPolyline).CloneToPolygon();
            }
            if (replacementObject != null)
            {
                xamlDrawingCanvas.Children.Remove(_convertTarget);
                _convertTarget = null;
                xamlDrawingCanvas.Children.Add(replacementObject);
                (ToolManager.ActiveTool as DDPickTool).SelectObjects(xamlDrawingCanvas, replacementObject);
            }
        }
Example #7
0
        protected void TSFrameChangedHandler(DDTranslateAndScaleFrame refFrame)
        {
            if (refFrame == null)
            {
                xamlExpanderSelectionLayout.Visibility = Visibility.Collapsed;
                BindingOperations.ClearAllBindings(xamlLayoutX);
                BindingOperations.ClearAllBindings(xamlLayoutY);
                BindingOperations.ClearAllBindings(xamlLayoutWidth);
                BindingOperations.ClearAllBindings(xamlLayoutHeight);
            }
            else
            {
                xamlExpanderSelectionLayout.Visibility = Visibility.Visible;
                xamlLayoutX.SetBinding(DDNumericUpDown.ValueProperty, new Binding("X")
                {
                    Source = refFrame, Mode = BindingMode.TwoWay
                });
                xamlLayoutY.SetBinding(DDNumericUpDown.ValueProperty, new Binding("Y")
                {
                    Source = refFrame, Mode = BindingMode.TwoWay
                });
                xamlLayoutWidth.SetBinding(DDNumericUpDown.ValueProperty, new Binding("Width")
                {
                    Source = refFrame, Mode = BindingMode.TwoWay
                });
                xamlLayoutHeight.SetBinding(DDNumericUpDown.ValueProperty, new Binding("Height")
                {
                    Source = refFrame, Mode = BindingMode.TwoWay
                });
            }

            if ((refFrame != null) && (refFrame.Targets.Count == 1))
            {
                if (!(refFrame.Targets[0] is DDPolyline))
                {
                    xamlExpanderFill.Visibility = Visibility.Visible;
                }
                xamlExpanderStroke.Visibility = Visibility.Visible;
                if (refFrame.Targets[0] is DDRectangle)
                {
                    xamlExpanderRectangle.Visibility = Visibility.Visible;
                }
                if (refFrame.Targets[0] is DDPolygon)
                {
                    _convertTarget = refFrame.Targets[0] as DDNodeObject;
                    xamlExpanderPolygon.Visibility = Visibility.Visible;
                }
                if (refFrame.Targets[0] is DDPolyline)
                {
                    _convertTarget = refFrame.Targets[0] as DDNodeObject;
                    xamlExpanderPolyline.Visibility = Visibility.Visible;
                }
                BindFillAndStrokeObject(refFrame.Targets[0]);
            }
            else
            {
                _convertTarget = null;
                xamlExpanderFill.Visibility      = Visibility.Collapsed;
                xamlExpanderStroke.Visibility    = Visibility.Collapsed;
                xamlExpanderRectangle.Visibility = Visibility.Collapsed;
                xamlExpanderPolygon.Visibility   = Visibility.Collapsed;
                xamlExpanderPolyline.Visibility  = Visibility.Collapsed;
                BindFillAndStrokeObject(null);
            }

            _activeTSFrame = refFrame;
            TryAddUndoStep();
        }