コード例 #1
0
 public void NewFile()
 {
     NodeCollection.Clear();
     ConnectorCollection.Clear();
     Children.Clear();
     radialMenu.Dispose();
     radialMenu = null;
 }
コード例 #2
0
 public void NewFile()
 {
     NodeCollection.Clear();
     ConnectorCollection.Clear();
     Children.Clear();
     if (radialMenu != null)
     {
         radialMenu.Dispose();
     }
     radialMenu    = null;
     selectionNode = null;
 }
コード例 #3
0
        private async void HandleMouseDown(object sender, MouseButtonEventArgs e)
        {
            switch (MouseMode)
            {
            case MouseModes.Nothing:

                if (e.LeftButton == MouseButtonState.Pressed)
                {
                    if (e.ClickCount == 2)
                    {
                        // double click in empty space of canvas
                        var node = new SelectionNode(this)
                        {
                            Left = Mouse.GetPosition(this).X - 15,
                            Top  = Mouse.GetPosition(this).Y - 20
                        };
                    }
                    else
                    {
                        var mouseUpOnNode = false;

                        foreach (var node in NodeCollection)
                        {
                            if (VisualTreeHelper.HitTest(node.Border, e.GetPosition(node)) != null)
                            {
                                mouseUpOnNode = true;
                            }
                        }

                        // if mouse up in empty space
                        if (!mouseUpOnNode)
                        {
                            startSelectionPoint = Mouse.GetPosition(this);
                            MouseMode           = MouseModes.Selection;
                            SplineMode          = SplineModes.Nothing;

                            if (radialMenu != null)
                            {
                                radialMenu.IsOpen = false;
                                radialMenu.Dispose();
                                radialMenu = null;
                            }
                        }
                    }
                }
                else if (e.MiddleButton == MouseButtonState.Pressed)
                {
                    // panning
                    foreach (var node in NodeCollection)
                    {
                        node.OldMousePosition = e.GetPosition(this);

                        if (MouseMode != MouseModes.Panning)
                        {
                            MouseMove += node.HostCanvas_MouseMove;
                        }
                    }

                    MouseMode = MouseModes.Panning;
                }
                else if (e.RightButton == MouseButtonState.Pressed)
                {
                    if (radialMenu == null)
                    {
                        radialMenu = new RadialContentMenu(this);
                        Children.Add(radialMenu);
                    }

                    if (radialMenu.IsOpen)
                    {
                        radialMenu.IsOpen = false;
                        await Task.Delay(400);
                    }
                    radialMenu.SetValue(LeftProperty, Mouse.GetPosition(this).X - 150);
                    radialMenu.SetValue(TopProperty, Mouse.GetPosition(this).Y - 150);

                    radialMenu.IsOpen = true;
                }

                break;
            }
        }
コード例 #4
0
        protected override async void HandleMouseDown(object sender, MouseButtonEventArgs e)
        {
            switch (mouseMode)
            {
            case MouseMode.Nothing:

                if (e.LeftButton == MouseButtonState.Pressed)
                {
                    if (e.ClickCount == 2)
                    {
                        // left double click in empty space of canvas
                        ShowSelectionNode();
                    }
                    else
                    {
                        // left singe click in empty space of canvas
                        startSelectionRectanglePoint = Mouse.GetPosition(this);
                        mouseMode  = MouseMode.PreSelectionRectangle;
                        SplineMode = SplineModes.Nothing;
                    }

                    if (radialMenu != null)
                    {
                        radialMenu.IsOpen = false;
                        radialMenu.Dispose();
                        radialMenu = null;
                    }
                }
                else if (e.MiddleButton == MouseButtonState.Pressed)
                {
                    start  = e.GetPosition(this);
                    origin = new Point(TranslateTransform.X, TranslateTransform.Y);


                    HideElementsForTransformation();

                    Cursor    = Cursors.Hand;
                    mouseMode = MouseMode.Panning;
                }
                else if (e.RightButton == MouseButtonState.Pressed)
                {
                    if (radialMenu == null)
                    {
                        radialMenu = new RadialContentMenu(this);
                        Children.Add(radialMenu);
                    }

                    if (radialMenu.IsOpen)
                    {
                        radialMenu.IsOpen = false;
                        await Task.Delay(400);
                    }
                    radialMenu.SetValue(LeftProperty, Mouse.GetPosition(this).X - 150);
                    radialMenu.SetValue(TopProperty, Mouse.GetPosition(this).Y - 150);

                    radialMenu.IsOpen = true;
                }

                break;

            case MouseMode.PreSelectionRectangle:
                if (e.ClickCount == 2)
                {
                    // left double click in empty space of canvas
                    ShowSelectionNode();
                }
                break;

            case MouseMode.Selection:

                if (e.LeftButton == MouseButtonState.Pressed)
                {
                    // left singe click in empty space of canvas while nodes are selected
                    UnselectAllElements();
                    mouseMode = MouseMode.Nothing;
                }
                break;

            case MouseMode.GroupSelection:
                break;
            }
        }