void PasteCmd()
        {
            SaveCurrentRule();
            if (clipboard_ == null)
            {
                return;
            }
            history_.Save();
            TreeNode c = IRule.CloneTreeNode(clipboard_);
            TreeNode s = RulesTreeView.SelectedNode;

            if (s == null)
            {
                RulesTreeView.Nodes.Add(c);
            }
            else
            {
                TreeNodeCollection col = this.GetOwningNodes(s);
                col.Insert(col.IndexOf(s), c);
            }
            RulesTreeView.SelectedNode = c;
            RulesTreeView.Select();
            RestoreSelectedRule();
            RulesTreeView.ExpandAll();
        }
        void CutCmd()
        {
            TreeNode s = RulesTreeView.SelectedNode;

            if (s == null)
            {
                return;
            }
            SaveCurrentRule();
            clipboard_ = IRule.CloneTreeNode(s);
            DeleteCmd();
            RestoreSelectedRule();
        }
        void CopyCmd()
        {
            TreeNode s = RulesTreeView.SelectedNode;

            if (s == null)
            {
                return;
            }
            SaveCurrentRule();
            history_.Save();

            clipboard_ = IRule.CloneTreeNode(s);
            UpdateEnabledStates();
        }