TUM.CMS.VplControl.Core.VplControl.HandleMouseDown C# (CSharp) Method

HandleMouseDown() protected method

protected HandleMouseDown ( object sender, System.Windows.Input.MouseButtonEventArgs e ) : void
sender object
e System.Windows.Input.MouseButtonEventArgs
return void
        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;
            }
        }