/// <summary>Adds a context menu to a TreeNode control</summary> /// <param name="node">TreeNode where to add the context menu</param> /// <param name="tree">Current application form</param> public static void AddContextMenu(TreeNode node, TreeBuilderControl tree, QueryOptions options) { tree.addMenu.Items.Clear(); var tmplbl = tree.lblQAExpander; tree.gbQuickActions.Controls.Clear(); tree.gbQuickActions.Controls.Add(tmplbl); if (node == null && tree.tvFetch.Nodes.Count > 0) { node = tree.tvFetch.Nodes[0]; } if (node != null) { var nodecapabilities = new FetchNodeCapabilities(node.Name, true); if (nodecapabilities.Multiple) { tree.addOneMoreToolStripMenuItem.Text = "More " + nodecapabilities.Name; tree.addOneMoreToolStripMenuItem.Tag = "MORE-" + nodecapabilities.Name; AddLinkFromCapability(tree, "+" + nodecapabilities.Name, "MORE-" + nodecapabilities.Name); } if (nodecapabilities.Attributes && tree.selectAttributesToolStripMenuItem.Enabled) { AddLinkFromCapability(tree, "Select Attributes", "SelectAttributes"); } foreach (var childcapability in nodecapabilities.ChildTypes) { if (childcapability.Name == "all-attributes" && !options.ShowAllAttributes) { continue; } if (childcapability.Name == "-") { tree.addMenu.Items.Add(new ToolStripSeparator()); } else if (childcapability.Multiple || !node.Nodes.ContainsKey(childcapability.Name)) { AddMenuFromCapability(tree.addMenu, childcapability.Name); AddLinkFromCapability(tree, childcapability.Name, null, childcapability.Name == "#comment"); } } if (tree.addMenu.Items.Count == 0) { var dummy = tree.addMenu.Items.Add("nothing to add"); dummy.Enabled = false; } tree.addOneMoreToolStripMenuItem.Visible = nodecapabilities.Multiple; tree.selectAttributesToolStripMenuItem.Visible = nodecapabilities.Attributes; tree.deleteToolStripMenuItem.Enabled = nodecapabilities.Delete; tree.commentToolStripMenuItem.Enabled = nodecapabilities.Comment; tree.uncommentToolStripMenuItem.Enabled = nodecapabilities.Uncomment; node.ContextMenuStrip = tree.nodeMenu; } }
internal static TreeNode AddChildNode(TreeNode parentNode, string name, FetchXmlBuilder fxb, TreeNode sisterNode = null) { var childNode = new TreeNode(name); childNode.Tag = new Dictionary <string, string>(); childNode.Name = childNode.Text.Replace(" ", ""); if (name == "#comment") { childNode.ForeColor = System.Drawing.Color.Gray; } if (parentNode != null) { if (sisterNode != null) { parentNode.Nodes.Insert(sisterNode.Index + 1, childNode); } else { var parentCap = new FetchNodeCapabilities(parentNode.Name, true); var nodeIndex = parentCap.IndexOfChild(name); var pos = 0; while (pos < parentNode.Nodes.Count && nodeIndex >= parentCap.IndexOfChild(parentNode.Nodes[pos].Name)) { pos++; } if (pos == parentNode.Nodes.Count) { parentNode.Nodes.Add(childNode); } else { parentNode.Nodes.Insert(pos, childNode); } } } Validate(childNode, fxb); return(childNode); }