Esempio n. 1
0
        private void RenameCategory(TreeNode selectedNode)
        {
            using (EditCategoryForm form = new EditCategoryForm(Resources.RenameFilterCategoryTitle, selectedNode.Text))
            {
                if (form.ShowDialog(this) == DialogResult.OK)
                {
                    string newCategory = form.CategoryText;

                    if (!newCategory.Equals(selectedNode.Text, StringComparison.Ordinal))
                    {
                        foreach (TreeNode item in selectedNode.Nodes)
                        {
                            SaveNewFilterCategory((PluginData)item.Tag, newCategory);
                        }

                        int existingCategoryIndex = filterTreeView.Nodes.IndexOfKey(newCategory);
                        if (existingCategoryIndex != -1)
                        {
                            filterTreeView.BeginUpdate();
                            TreeNode existing = filterTreeView.Nodes[existingCategoryIndex];

                            filterTreeView.Nodes.Remove(selectedNode);

                            // Store the node count in a local variable to prevent an infinite loop
                            // when the name of the existing node matches the selected node.
                            int nodeCount = selectedNode.Nodes.Count;
                            for (int i = 0; i < nodeCount; i++)
                            {
                                existing.Nodes.Add(selectedNode.Nodes[i]);
                            }

                            filterTreeView.EndUpdate();
                        }
                        else
                        {
                            filterTreeView.BeginUpdate();
                            filterTreeView.Nodes.Remove(selectedNode);

                            TreeNode node = new TreeNode(newCategory)
                            {
                                ContextMenuStrip = filterCategoryContextMenu,
                                Name             = newCategory
                            };

                            for (int i = 0; i < selectedNode.Nodes.Count; i++)
                            {
                                node.Nodes.Add(selectedNode.Nodes[i]);
                            }

                            filterTreeView.Nodes.Add(node);
                            filterTreeView.EndUpdate();
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        private void ChangeItemCategory(TreeNode selectedNode)
        {
            PluginData data = (PluginData)selectedNode.Tag;

            using (EditCategoryForm form = new EditCategoryForm(Resources.ChangeItemCategoryTitle, data.Category, selectedNode.Text))
            {
                if (form.ShowDialog(this) == DialogResult.OK)
                {
                    string newCategory = form.CategoryText;

                    if (!newCategory.Equals(data.Category, StringComparison.Ordinal))
                    {
                        SaveNewFilterCategory(data, newCategory);

                        filterTreeView.BeginUpdate();

                        TreeNode parent = selectedNode.Parent;
                        parent.Nodes.Remove(selectedNode);
                        if (parent.Nodes.Count == 0)
                        {
                            filterTreeView.Nodes.Remove(parent);
                        }

                        if (filterTreeView.Nodes.ContainsKey(newCategory))
                        {
                            filterTreeView.Nodes[newCategory].Nodes.Add(selectedNode);
                        }
                        else
                        {
                            TreeNode node = new TreeNode(newCategory, new TreeNode[] { selectedNode })
                            {
                                ContextMenuStrip = filterCategoryContextMenu,
                                Name             = newCategory,
                            };

                            filterTreeView.Nodes.Add(node);
                        }

                        filterTreeView.EndUpdate();
                    }
                }
            }
        }