コード例 #1
0
        private void DeleteCmd()
        {
            TreeNode st = RulesTreeView.SelectedNode;

            if (st == null)
            {
                return;
            }

            SaveCurrentRule();

            History.Save();

            TreeNode nt = st.NextNode;

            TreeNode parent = st.Parent;

            if (parent != null)
            {
                IRule rule = (IRule)parent.Tag;
                rule.Children.Remove((IRule)st.Tag);
            }

            RulesTreeView.Nodes.Remove(st);

            RulesTreeView.SelectedNode = nt;
            RulesTreeView.Select();
            RestoreSelectedRule();
            SetTreeViewColours();
        }
コード例 #2
0
        private void RulesTreeView_DragDrop(object sender, DragEventArgs e)
        {
            Point targetPoint = RulesTreeView.PointToClient(new Point(e.X, e.Y));

            TreeNode targetNode = RulesTreeView.GetNodeAt(targetPoint);

            TreeNode draggedNode = (TreeNode)e.Data.GetData(typeof(TreeNode));

            if (Tools.IsSubnodeOf(draggedNode, targetNode))
            {
                e.Effect = DragDropEffects.None;
                return;
            }

            RulesTreeView.Nodes.Remove(draggedNode);

            if (targetNode != null)
            {
                targetNode.Nodes.Insert(0, draggedNode);
            }
            else
            {
                RulesTreeView.Nodes.Add(draggedNode);
            }

            RulesTreeView.SelectedNode = draggedNode;
            RestoreSelectedRule();

            e.Effect = DragDropEffects.Move;
        }
コード例 #3
0
        private void AddNewSubrule(IRule r)
        {
            SaveCurrentRule();

            TreeNode s = RulesTreeView.SelectedNode;

            if (s == null)
            {
                return;
            }

            History.Save();

            TreeNode n = new TreeNode(r.Name)
            {
                Tag = r
            };

            s.Nodes.Add(n);
            RulesTreeView.SelectedNode = n;
            RulesTreeView.Select();

            RestoreSelectedRule();
            CurrentRule.SelectName();
        }
コード例 #4
0
        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();
        }
コード例 #5
0
 private void SetTreeViewColours()
 {
     RulesTreeView.BeginUpdate();
     foreach (TreeNode node in RulesTreeView.Nodes)
     {
         SetColours(node);
     }
     RulesTreeView.EndUpdate();
 }
コード例 #6
0
        public void AddNewRule(List <IRule> rules)
        {
            RulesTreeView.Nodes.Clear();

            foreach (IRule r in rules)
            {
                AppendRule(r);
            }

            RulesTreeView.ExpandAll();
        }
コード例 #7
0
        private void PasteCmd()
        {
            SaveCurrentRule();
            History.Save();

            AddNewRule(Deserialize(Clipboard.GetDataObject().GetData(typeof(string)).ToString()));

            RulesTreeView.Select();
            RestoreSelectedRule();
            RulesTreeView.ExpandAll();
        }
コード例 #8
0
        private void AddNewRule(IRule r)
        {
            if (r == null)
            {
                return;
            }

            SaveCurrentRule();
            History.Save();

            TreeNode n = new TreeNode(r.Name)
            {
                Tag = r
            };

            TreeNode s = RulesTreeView.SelectedNode;

            if (s != null)
            {
                TreeNode p = s.Parent;
                if (p == null)
                {
                    RulesTreeView.Nodes.Insert(RulesTreeView.Nodes.IndexOf(s) + 1, n);
                }
                else
                {
                    p.Nodes.Insert(p.Nodes.IndexOf(s) + 1, n);
                }
            }
            else
            {
                RulesTreeView.Nodes.Add(n);
            }

            if (r.Children != null && r.Children.Count > 0)
            {
                foreach (IRule rnew in r.Children)
                {
                    AddNewRule(rnew, n);
                }
            }
            else
            {
                RulesTreeView.SelectedNode = n;
                RulesTreeView.Select();
            }

            RestoreSelectedRule();
            CurrentRule.SelectName();
        }
コード例 #9
0
 private void Collapsed(bool collapsed)
 {
     RulesTreeView.BeginUpdate();
     foreach (TreeNode node in RulesTreeView.Nodes)
     {
         if (collapsed)
         {
             node.Collapse();
         }
         else
         {
             node.ExpandAll();
         }
     }
     RulesTreeView.EndUpdate();
 }
コード例 #10
0
        private void RulesTreeView_DragOver(object sender, DragEventArgs e)
        {
            Point targetPoint = RulesTreeView.PointToClient(new Point(e.X, e.Y));

            TreeNode targetNode = RulesTreeView.GetNodeAt(targetPoint);

            RulesTreeView.SelectedNode = targetNode;

            TreeNode draggedNode = (TreeNode)e.Data.GetData(typeof(TreeNode));

            if (Tools.IsSubnodeOf(draggedNode, targetNode))
            {
                e.Effect = DragDropEffects.None;
                return;
            }

            e.Effect = DragDropEffects.Move;
        }
コード例 #11
0
        private void AppendRule(IRule r)
        {
            TreeNode n = new TreeNode(r.Name);

            n.Tag = r;

            RulesTreeView.Nodes.Add(n);

            if (r.Children != null && r.Children.Count > 0)
            {
                foreach (IRule rnew in r.Children)
                {
                    AddNewRule(rnew, n);
                }
            }
            else
            {
                RulesTreeView.SelectedNode = n;
                RulesTreeView.Select();
            }
        }
コード例 #12
0
        private void DeleteCmd()
        {
            TreeNode st = RulesTreeView.SelectedNode;

            if (st == null)
            {
                return;
            }

            SaveCurrentRule();

            History.Save();

            TreeNode nt = st.NextNode;

            RulesTreeView.Nodes.Remove(st);

            RulesTreeView.SelectedNode = nt;
            RulesTreeView.Select();
            RestoreSelectedRule();
            SetTreeViewColours();
        }
コード例 #13
0
        private void MoveSelectedUp()
        {
            TreeNode tn = RulesTreeView.SelectedNode;

            if (tn == null)
            {
                return;
            }

            RulesTreeView.Select();

            TreeNodeCollection col = GetOwningNodes(tn);

            if (col.Count < 2)
            {
                return;
            }

            TreeNode p = tn.PrevNode;

            if (p == null)
            {
                return;
            }

            History.Save();

            col.Remove(tn);
            int i = col.IndexOf(p);

            col.Insert(i, tn);

            RulesTreeView.SelectedNode = tn;
            RulesTreeView.Select();
            //RulesTreeView.ExpandAll();
            RestoreSelectedRule();
        }
コード例 #14
0
        private void DownButton_Click(object sender, EventArgs e)
        {
            TreeNode tn = RulesTreeView.SelectedNode;

            if (tn == null)
            {
                return;
            }

            RulesTreeView.Select();

            TreeNodeCollection col = GetOwningNodes(tn);

            if (col.Count < 2)
            {
                return;
            }

            TreeNode p = tn.NextNode;

            if (p == null)
            {
                return;
            }

            History.Save();

            int i = col.IndexOf(p);

            col.Remove(tn);
            col.Insert(i, tn);

            RulesTreeView.SelectedNode = tn;
            //RulesTreeView.ExpandAll();
            RestoreSelectedRule();
        }
コード例 #15
0
        void AddNewSubrule(IRule r)
        {
            SaveCurrentRule();

            TreeNode s = RulesTreeView.SelectedNode;

            if (s == null)
            {
                return;
            }

            history_.Save();

            TreeNode n = new TreeNode(r.Name);

            n.Tag = r;

            s.Nodes.Add(n);
            RulesTreeView.SelectedNode = n;
            RulesTreeView.Select();

            RestoreSelectedRule();
            this.currentRule_.SelectName();
        }