TUM.CMS.VplControl.Core.Node.Node_MouseDown C# (CSharp) Method

Node_MouseDown() public method

public Node_MouseDown ( object sender, System.Windows.Input.MouseButtonEventArgs e ) : void
sender object
e System.Windows.Input.MouseButtonEventArgs
return void
        public virtual void Node_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (HostCanvas.SelectedNodes.Contains(this))
            {
                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                    // Remove this node from selection
                    HostCanvas.SelectedNodes.Remove(this);
                    HostCanvas.SelectedUiElements.Remove(Border);
                    IsSelected = false;
                }
                else
                {
                    // Subsribe multiselection to hostCanvas MouseMove event
                    foreach (var node in HostCanvas.SelectedNodes)
                    {
                        HostCanvas.MouseMove += node.HostCanvas_MouseMove;
                        HostCanvas.MouseUp += node.Node_MouseUp;
                        node.OldMousePosition = e.GetPosition(HostCanvas);
                    }
                }
            }
            else
            {
                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                    // add this node to selection
                    HostCanvas.SelectedNodes.Add(this);
                    HostCanvas.SelectedUiElements.Add(Border);
                    IsSelected = true;
                }
                else
                {
                    // Seleted this node as single
                    foreach (var node in HostCanvas.SelectedNodes)
                        node.IsSelected = false;

                    HostCanvas.SelectedNodes.Clear();
                    HostCanvas.SelectedUiElements.Clear();

                    HostCanvas.SelectedNodes.Add(this);
                    HostCanvas.SelectedUiElements.Add(Border);
                    IsSelected = true;

                    foreach (var node in HostCanvas.SelectedNodes)
                    {
                        HostCanvas.MouseMove += node.HostCanvas_MouseMove;
                        HostCanvas.MouseUp += node.Node_MouseUp;
                        node.OldMousePosition = e.GetPosition(HostCanvas);
                    }
                }

                HostCanvas.mouseMode = MouseMode.Selection;
            }

            e.Handled = true;
        }