private void myTreeView_KeyDown()

in src/XmlNotepad/XmlTreeView.cs [1003:1099]


        private void myTreeView_KeyDown(object sender, KeyEventArgs e)
        {
            CurrentEvent.Event = e;
            if (!this.IsEditing)
            {

                bool ctrlMods = e.Modifiers == Keys.Control || e.Modifiers == (Keys.Control | Keys.Shift);
                bool nudgeMods = e.Modifiers == (Keys.Control | Keys.Shift);
                XmlTreeNode xn = this.SelectedNode;
                TreeNode n = this._myTreeView.SelectedNode;
                switch (e.KeyCode)
                {
                    case Keys.Escape:
                        this.Commit();
                        if (!e.Handled)
                        {
                            this._myTreeView.SelectedNode = null;
                            if (this.SelectionChanged != null)
                                SelectionChanged(this, EventArgs.Empty);
                        }
                        break;
                    case Keys.X:
                        if (ctrlMods)
                        {
                            this.Cut();
                            e.Handled = true;
                        }
                        break;
                    case Keys.C:
                        if (ctrlMods)
                        {
                            this.Copy();
                            e.Handled = true;
                        }
                        break;
                    case Keys.V:
                        if (ctrlMods)
                        {
                            this.Paste(InsertPosition.Child);
                            e.Handled = true;
                        }
                        break;
                    case Keys.Right:
                        if (nudgeMods && CanNudgeNode(xn, NudgeDirection.Right))
                        {
                            this.NudgeNode(xn, NudgeDirection.Right);
                            e.Handled = true;
                        }
                        else if (!this.IsEditing && n != null && n.Children.Count == 0)
                        {
                            this._nodeTextView.Focus();
                            e.Handled = true;
                        }
                        break;
                    case Keys.Delete:
                        this.Delete();
                        break;
                    case Keys.F2:
                    case Keys.Enter:
                        BeginEditNodeName();
                        e.Handled = true;
                        break;
                    case Keys.Up:
                        if (nudgeMods && CanNudgeNode(xn, NudgeDirection.Up))
                        {
                            this.NudgeNode(xn, NudgeDirection.Up);
                            e.Handled = true;
                        }
                        break;
                    case Keys.Down:
                        if (nudgeMods && CanNudgeNode(xn, NudgeDirection.Down))
                        {
                            this.NudgeNode(xn, NudgeDirection.Down);
                            e.Handled = true;
                        }
                        break;
                    case Keys.Left:
                        if (nudgeMods && CanNudgeNode(xn, NudgeDirection.Left))
                        {
                            this.NudgeNode(xn, NudgeDirection.Left);
                            e.Handled = true;
                        }
                        break;
                    default:
                        if (!e.Handled)
                        {
                            nodeTextView_KeyDown(sender, e);
                        }
                        break;
                }
            }
            else if (!e.Handled)
            {
                base.OnKeyDown(e);
            }

        }