Exemple #1
0
        private void XmlRekursivImport(TreeNodeCollection elem, XmlNodeList xmlNodeList)
        {
            TreeNode treeNode;

            foreach (XmlNode myXmlNode in xmlNodeList)
            {
                //if (myXmlNode.Attributes != null)
                {
                    if (myXmlNode.Name == "output" || myXmlNode.Name == "windowstyle")
                    {
                        continue;
                    }

                    if (myXmlNode.Name == "#whitespace")
                    {
                        continue;
                    }
                    //MessageBox.Show(myXmlNode.Name);



                    String name = myXmlNode.Name;

                    if (myXmlNode.Attributes != null && myXmlNode.Attributes["name"] != null)
                    {
                        name += " - " + myXmlNode.Attributes["name"].Value;
                    }

                    String ext = XmlElementStringLookup(myXmlNode.Name);
                    if (ext.Length > 0)
                    {
                        if (myXmlNode.Attributes != null && myXmlNode.Attributes[ext] != null)
                        {
                            name += " : " + myXmlNode.Attributes[ext].Value;
                        }
                        else
                        {
                            name += " " + myXmlNode.Value;
                        }
                    }
                    treeNode = new TreeNode(name /*Attributes["value"].Value*/);
                    setImageIndex(myXmlNode, treeNode);



                    if (myXmlNode.ChildNodes.Count > 0)
                    {
                        XmlRekursivImport(treeNode.Nodes, myXmlNode.ChildNodes);
                    }
                    elem.Add(treeNode);
                    sElementList element = new sElementList(treeNode.GetHashCode(), treeNode.Parent.GetHashCode(), treeNode, myXmlNode);
                    ElementList.Add(element);
                }
            }
        }
        private void XmlRekursivImport(TreeNodeCollection elem, XmlNodeList xmlNodeList)
        {
            TreeNode     treeNode;
            sElementList element;

            foreach (XmlNode myXmlNode in xmlNodeList)
            {
                if (myXmlNode.Name == "output" ||
                    myXmlNode.Name == "windowstyle" ||
                    myXmlNode.Name == "#whitespace")
                {
                    continue;
                }
                //MessageBox.Show(myXmlNode.Name);

                String name = getTreeName(myXmlNode);

                if (myXmlNode.Name == "include")
                {
                    XmlDocument incDocument = new XmlDocument();
                    string      fname       = myXmlNode.Attributes["filename"].Value;
                    if (File.Exists(cDataBase.getPath(fname)))
                    {
                        incDocument.Load(cDataBase.getPath(fname));
                        string pname = cProperties.getProperty("path_skin_xml");
                        string sname = pname.Substring(0, pname.Length - 4) + "_"; // "Name-of-skin/skin_"
                        if (!fname.StartsWith(sname))
                        {
                            sname = "skin_";
                        }
                        string iname = fname.StartsWith(sname) && fname.EndsWith(".xml") ? fname.Substring(sname.Length, fname.Length - 4 - sname.Length) : fname;
                        treeNode     = new TreeNode(name + " : " + iname);
                        treeNode.Tag = incDocument;
                        setImageIndex(myXmlNode, treeNode);
                        XmlRekursivImport(treeNode.Nodes, incDocument.DocumentElement.ChildNodes);
                        elem.Add(treeNode);
                        element = new sElementList(treeNode.GetHashCode(), treeNode.Parent.GetHashCode(), treeNode, myXmlNode);
                        ElementList.Add(element);
                        continue;
                    }
                }

                treeNode = new TreeNode(name /*Attributes["value"].Value*/);
                setImageIndex(myXmlNode, treeNode);

                if (myXmlNode.ChildNodes.Count > 0)
                {
                    XmlRekursivImport(treeNode.Nodes, myXmlNode.ChildNodes);
                }
                elem.Add(treeNode);
                element = new sElementList(treeNode.GetHashCode(), treeNode.Parent.GetHashCode(), treeNode, myXmlNode);
                ElementList.Add(element);
            }
        }
Exemple #3
0
        public TreeNode XmlSyncAddTreeChild(int hash, TreeNode elem, XmlNode node)
        {
            TreeNode treeNode = new TreeNode("new" /*Attributes["value"].Value*/);

            elem.Nodes.Add(treeNode);

            sElementList element = new sElementList(treeNode.GetHashCode(), treeNode.Parent.GetHashCode(), treeNode, node);

            ElementList.Add(element);

            return(treeNode);
        }
        public void XmlToTreeView(TreeView treeView)
        {
            treeView.Nodes.Clear();
            ElementList = new ArrayList();

            TreeNode treeNode;

            treeNode = new TreeNode("skin");
            treeView.Nodes.Add(treeNode);

            rootNode = treeNode.GetHashCode();
            sElementList element = new sElementList(rootNode, 0, treeNode, xmlDocument.DocumentElement /*.ParentNode*/);

            ElementList.Add(element);


            XmlRekursivImport(treeNode.Nodes, xmlDocument.DocumentElement.ChildNodes);

            xmlTreeView = treeView;
        }
        public void XmlReplaceNodeAndChilds(int hash, String node)
        {
            // 3. Remove all Child Nodes
            // 1. Find the node to replace
            // 2. Replace it

            // 4. Import the Child Nodes
            // 5. Find old Parent and give him new Element

            XmlTextReader xmlReader = new XmlTextReader(new StringReader(node));

            for (int i = 0; i < ElementList.Count;)
            {
                sElementList tempChild = (sElementList)ElementList[i];
                if (tempChild.ParentHandle == hash)
                {
                    tempChild.TreeNode.Remove();
                    ElementList.Remove(tempChild);
                }
                else
                {
                    i++;
                }
            }

            foreach (sElementList temp in ElementList)
            {
                if (temp.Handle == hash)
                {
                    if (temp.ParentHandle == 0)
                    {
                        //We are the root element

                        temp.Node.OwnerDocument.ReplaceChild(temp.Node.OwnerDocument.ReadNode(xmlReader), temp.Node);
                        temp.Node = temp.Node.OwnerDocument.DocumentElement /*.ParentNode*/;
                        XmlRekursivImport(temp.TreeNode.Nodes, temp.Node.ChildNodes);
                    }
                    else
                    {
                        // Find parent
                        foreach (sElementList tempParent in ElementList)
                        {
                            if (tempParent.Handle == temp.ParentHandle)
                            {
                                //Find with the old node, the childnode and replace it
                                for (int i = 0; i < tempParent.Node.ChildNodes.Count; i++)
                                {
                                    if (tempParent.Node.ChildNodes[i] == temp.Node)
                                    {
                                        if (node.Length == 0) // Delete node
                                        {
                                            tempParent.Node.RemoveChild(tempParent.Node.ChildNodes[i]);
                                            temp.TreeNode.Remove();
                                            ElementList.Remove(temp);
                                        }
                                        else // Replace node
                                        {
                                            temp.Node = temp.Node.OwnerDocument.ReadNode(xmlReader);
                                            tempParent.Node.ReplaceChild(temp.Node, tempParent.Node.ChildNodes[i]);
                                            XmlRekursivImport(temp.TreeNode.Nodes, temp.Node.ChildNodes);
                                        }
                                        break;
                                    }
                                }
                                break;
                            }
                        }
                    }
                    break;
                }
            }
        }