Inheritance: RadialMenu.Controls.RadialMenu, IDisposable
Example #1
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;
            }
        }
Example #2
0
 public void NewFile()
 {
     NodeCollection.Clear();
     ConnectorCollection.Clear();
     Children.Clear();
     if (radialMenu != null) radialMenu.Dispose();
     radialMenu = null;
     selectionNode = null;
 }
        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;
            }
        }