Esempio n. 1
0
        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            base.OnMouseLeftButtonDown(e);

            FlowChart     flowChart     = ViewModel.Model.Owner;
            FlowChartView flowChartView = flowChart.ViewModel.View;

            Keyboard.Focus(flowChartView);

            NodeGraphManager.EndConnection();
            NodeGraphManager.EndDragNode();
            NodeGraphManager.EndDragSelection(false);

            NodeGraphManager.MouseLeftDownNode = ViewModel.Model;

            NodeGraphManager.BeginDragNode(flowChart);

            Node node = ViewModel.Model;

            _DraggingStartPos = new Point(node.X, node.Y);

            flowChart.History.BeginTransaction("Moving node");

            _ZoomAndPanStartMatrix = flowChartView.ZoomAndPan.Matrix;

            e.Handled = true;
        }
Esempio n. 2
0
        private void ConnectorView_LayoutUpdated(object sender, EventArgs e)
        {
            FlowChart     flowChart     = ViewModel.Model.FlowChart;
            FlowChartView flowChartView = flowChart.ViewModel.View;

            BuildCurveData(Mouse.GetPosition(flowChartView));
        }
Esempio n. 3
0
        public void BuildCurveData(Point mousePos)
        {
            Connector     connector     = ViewModel.Model;
            FlowChart     flowChart     = connector.FlowChart;
            FlowChartView flowChartView = flowChart.ViewModel.View;

            NodePort startPort = connector.StartPort;
            NodePort endPort   = connector.EndPort;

            Point start  = (null != startPort) ? ViewUtil.GetRelativeCenterLocation(startPort.ViewModel.View.PartPort, flowChartView) : mousePos;
            Point end    = (null != endPort) ? ViewUtil.GetRelativeCenterLocation(endPort.ViewModel.View.PartPort, flowChartView) : mousePos;
            Point center = new Point((start.X + end.X) * 0.5, (start.Y + end.Y) * 0.5);

            if (start.X > end.X)
            {
                Point temp = start;
                start = end;
                end   = temp;
            }

            double ratio = Math.Min(1.0, (center.X - start.X) / 100.0);
            Point  c0    = start;
            Point  c1    = end;

            c0.X += 100 * ratio;
            c1.X -= 100 * ratio;

            CurveData = string.Format("M{0},{1} C{0},{1} {2},{3} {4},{5} " +
                                      "M{4},{5} C{4},{5} {6},{7} {8},{9}",
                                      ( int )start.X, ( int )start.Y,   // 0, 1
                                      ( int )c0.X, ( int )c0.Y,         // 2, 3
                                      ( int )center.X, ( int )center.Y, // 4, 5
                                      ( int )c1.X, ( int )c1.Y,         // 6, 7
                                      ( int )end.X, ( int )end.Y);      // 8.9
        }
Esempio n. 4
0
        protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
        {
            base.OnMouseDoubleClick(e);

            if (MouseButton.Left == e.ChangedButton)
            {
                Connector     connector     = ViewModel.Model;
                FlowChart     flowChart     = connector.FlowChart;
                FlowChartView flowChartView = flowChart.ViewModel.View;
                Point         vsMousePos    = e.GetPosition(flowChartView);
                Point         nodePos       = flowChartView.ZoomAndPan.MatrixInv.Transform(vsMousePos);

                flowChart.History.BeginTransaction("Creating RouterNode");
                {
                    NodeGraphManager.CreateRouterNodeForConnector(Guid.NewGuid(), flowChart, connector,
                                                                  nodePos.X, nodePos.Y, 0);
                }
                flowChart.History.EndTransaction(false);
            }

            e.Handled = true;
        }