private void SetTreeNodeImageAndToolTip(XMLEditorTreeNode nd, XmlNode xnd) { if (nd == null || xnd == null) return; if (xnd.Attributes == null) { nd.SelectedImageKey=nd.StateImageKey=nd.ImageKey = "DEFAULTTAG"; return; } System.Xml.Schema.XmlSchemaSet schset = (System.Xml.Schema.XmlSchemaSet) this.xmlNSSchemas[XMLEditor.XMLEditorMain.VXDDEFAULTXMLNS]; object[] schmSetArray = new object[1]; schset.GlobalElements.Values.CopyTo(schmSetArray, 0); XmlSchemaElement rootSchemaNode = (XmlSchemaElement)schmSetArray[0]; nd.ToolTipText = xnd.Name + " " + this.GetAttributeList(xnd); nd.ContextMenuStrip = new ContextMenuStrip(); nd.ContextMenuStrip.Items.Add("Delete " + nd.Name); nd.ContextMenuStrip.Items.Add("Copy " + nd.Name); ToolStripMenuItem paste = new ToolStripMenuItem(); paste.Text = "Paste"; paste.Enabled = false; nd.ContextMenuStrip.Items.Add(paste); nd.ContextMenuStrip.Items.Add(new ToolStripSeparator()); CreateDropDownMenus(nd, xnd, rootSchemaNode); foreach (string attName in this.IMAGE_ATTRIBUTE_LIST) { string mainNameAtt = null; if (xnd.Attributes[attName] != null && xnd.Attributes[attName].Value != null) mainNameAtt = xnd.Attributes[attName].Value; if (mainNameAtt == null) continue; foreach (string prefix in this.IMAGE_ATTRIBUTE_VAL_PREFIX_LIST) if (this.imgList.Images.ContainsKey(prefix + mainNameAtt)) { string prefixedAttVal = prefix + mainNameAtt; try { nd.SelectedImageKey=nd.StateImageKey=nd.ImageKey = prefixedAttVal; return; } catch (Exception) { ;} } } }
private void RefreshTreeEditor() { this.selectedEditor.leftTreeView.Nodes.Clear(); XmlNode root = GetSelectedXMLDocumentElement(); if (root == null) return; XMLEditorTreeNode[] children = this.PopulateTree(root); XMLEditorTreeNode[] attrroot = this.PopulateAttributes(root); XMLEditorTreeNode[] rootchildren = new XMLEditorTreeNode[children.Length + attrroot.Length]; System.Array.Copy(attrroot, rootchildren, attrroot.Length); System.Array.Copy(children, 0, rootchildren, attrroot.Length, children.Length); XMLEditorTreeNode rootNode = new XMLEditorTreeNode("<" + root.Name + ">", rootchildren, root); this.BuildImageList(root); this.SetTreeNodeImageAndToolTip(rootNode, root); rootNode.SelectedImageKey = rootNode.StateImageKey = rootNode.ImageKey="DEFAULTVXD"; this.selectedEditor.leftTreeView.Nodes.Add(rootNode); rootNode.Expand(); this.selectedEditor.leftTreeView.Invalidate(); this.selectedEditor.rightTreeView.Nodes.Clear(); if (this.xmlValidated) { XmlNode rroot = GetSelectedXSDDocumentElement(); XMLEditorTreeNode[] rchildren = this.PopulateTree(rroot); XMLEditorTreeNode[] rattrroot = this.PopulateAttributes(rroot); XMLEditorTreeNode[] rrootchildren = new XMLEditorTreeNode[rchildren.Length + rattrroot.Length]; System.Array.Copy(rattrroot, rrootchildren, rattrroot.Length); System.Array.Copy(rchildren, 0, rrootchildren, rattrroot.Length, rchildren.Length); XMLEditorTreeNode rrootNode = new XMLEditorTreeNode("<" + rroot.Name + ">", rrootchildren, rroot); this.BuildImageList(rroot); this.SetTreeNodeImageAndToolTip(rrootNode, rroot); rrootNode.SelectedImageKey = rrootNode.StateImageKey = rrootNode.ImageKey = "DEFAULTVXD"; this.selectedEditor.rightTreeView.Nodes.Add(rrootNode); rrootNode.Expand(); this.selectedEditor.rightTreeView.Invalidate(); } this.selectedEditor.Invalidate(); }
private static void CreateDropDownMenus(XMLEditorTreeNode nd, XmlNode xnd, XmlSchemaElement rootSchemaNode) { ToolStripDropDownButton elmnu = new ToolStripDropDownButton(); elmnu.Text = "New Element"; ToolStripDropDownButton attrmnu = new ToolStripDropDownButton(); attrmnu.Text = "New Attribute"; PopulateDropDownMenu(xnd, elmnu, attrmnu, rootSchemaNode); nd.ContextMenuStrip.Items.Add(attrmnu); nd.ContextMenuStrip.Items.Add(elmnu); }
private XMLEditorTreeNode[] PopulateAttributes(XmlNode parent) { if (parent == null || parent.Attributes == null) return new XMLEditorTreeNode[0]; XMLEditorTreeNode treend = null; ArrayList arr = new ArrayList(); foreach (XmlAttribute nd in parent.Attributes) { treend = new XMLEditorTreeNode(nd.Name + "=\"" + nd.Value + "\"", nd); treend.SelectedImageKey = treend.StateImageKey = treend.ImageKey = "DEFAULTATTR"; treend.ToolTipText = nd.Name + "=\"" + nd.Value + "\""; arr.Add(treend); } int i = 0; XMLEditorTreeNode[] nds = new XMLEditorTreeNode[arr.Count]; foreach (XMLEditorTreeNode t in arr) { nds[i] = t; ++i; } return nds; }
protected XMLEditorTreeNode[] PopulateTree(XmlNode parent) { if (parent == null || parent.ChildNodes == null) return new XMLEditorTreeNode[0]; XMLEditorTreeNode treend = null; ArrayList arr = new ArrayList(); foreach (XmlNode nd in parent.ChildNodes) { this.BuildImageList(nd); if (nd.HasChildNodes) { XMLEditorTreeNode[] attrroot = this.PopulateAttributes(nd); XMLEditorTreeNode[] children = this.PopulateTree(nd); XMLEditorTreeNode[] rootchildren = new XMLEditorTreeNode[children.Length + attrroot.Length]; System.Array.Copy(attrroot, rootchildren, attrroot.Length); System.Array.Copy(children, 0, rootchildren, attrroot.Length, children.Length); string nameattr = string.Empty; if (nd.Attributes != null) { XmlAttribute id = nd.Attributes["ID"]; if (id == null) id = nd.Attributes["id"]; if (id != null && id.Value != null) nameattr += " ID=\"" + id.Value.ToString() + "\" "; foreach (string nmatt in new string[] { "Name", "NAME", "name" }) { XmlAttribute nm = nd.Attributes[nmatt]; if (nm != null && nm.Value != null) { nameattr += " name=\"" + nm.Value.ToString() + "\""; break; } } } treend = new XMLEditorTreeNode("<" + nd.Name + nameattr + ">", rootchildren, nd); this.SetTreeNodeImageAndToolTip(treend, nd); arr.Add(treend); treend.Expand(); } else { XMLEditorTreeNode[] att = PopulateAttributes(nd); string nameattr = string.Empty; if (nd.Attributes != null) { XmlAttribute id = nd.Attributes["ID"]; if (id == null) id = nd.Attributes["id"]; if (id != null && id.Value != null) nameattr += " ID=\"" + id.Value.ToString() + "\" "; foreach (string nmatt in new string[] { "Name", "NAME", "name" }) { XmlAttribute nm = nd.Attributes[nmatt]; if (nm != null && nm.Value != null) { nameattr += " name=\"" + nm.Value.ToString() + "\""; break; } } } if (att == null) treend = new XMLEditorTreeNode("<" + nd.Name + nameattr + ">", nd); else treend = new XMLEditorTreeNode("<" + nd.Name + nameattr + ">", att, nd); this.SetTreeNodeImageAndToolTip(treend, nd); arr.Add(treend); treend.Collapse(); if (treend.Parent != null) treend.Parent.Collapse(); } } int i = 0; XMLEditorTreeNode[] nds = new XMLEditorTreeNode[arr.Count]; foreach (XMLEditorTreeNode t in arr) { nds[i] = t; ++i; } return nds; }