private void SortNodes(TreeNodeSimulation tns) { if (tns.Nodes.Count == 0) { return; } tns.Nodes.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true)); foreach (var t in tns.Nodes) { SortNodes(t); } }
private void BindTree(TreeNodeSimulation visual, TreeNodeCollection nodes) { var n = new TreeNode(visual.Name); n.Name = visual.Name; n.Tag = visual.Tag; n.SelectedImageIndex = 4; n.ImageIndex = visual.ImageIndex; nodes.Add(n); if (visual.Nodes.Count == 0) return; foreach (var child in visual.Nodes) { BindTree(child, n.Nodes); } }
private void IterateUiLayerFolder() { var basedPath = Path.GetDirectoryName(TxtSourceFolder.Text); var doc = new XmlDocument(); try { doc.Load(TxtSourceFolder.Text); } catch { MessageBox.Show("Cant load project file"); return; } _projNode = new TreeNodeSimulation(Path.GetFileName(TxtSourceFolder.Text), TxtSourceFolder.Text, 0); var nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("ms", "http://schemas.microsoft.com/developer/msbuild/2003"); var includedFiles = doc.SelectNodes(@"//ms:Compile[@Include] | //ms:Content[@Include]", nsmgr); var total = includedFiles.Count; int index = 1; foreach (var f in includedFiles) { Invoke((MethodInvoker)delegate { toolStripLabel1.Text = "Loading " + index++ + "/" + total + " files."; }); var fnode = f as XmlNode; var n = fnode.Attributes.GetNamedItem("Include"); var temp = n.Value; var segments = temp.Split(new[] { "\\" }, StringSplitOptions.None); if (Path.GetExtension(segments[segments.Length - 1]).ToLower() == ".vb" && (segments[segments.Length - 1].Substring(segments[segments.Length - 1].Length - 12, 12).ToLower() != ".designer.vb" && segments[segments.Length - 1].ToLower() != "assemblyinfo.vb")) { if (segments.Length == 1) { var fNode = new TreeNodeSimulation(segments[0], Path.Combine(basedPath, temp), GetImageIndex(segments[0])); _projNode.Nodes.Add(fNode); ParseUiClassToGetMtClassesAndMtMethodNames(fNode.Tag); } else { var parN = _projNode; for (var i = 0; i < segments.Length - 1; i++) { var curN = parN.Nodes.FirstOrDefault(p => p.Name == segments[i]); if (curN == null) { var currPath = string.Empty; for (var j = 0; j <= i; j++) { currPath += segments[j] + "\\"; } curN = new TreeNodeSimulation(segments[i], Path.Combine(basedPath, currPath), 1); parN.Nodes.Add(curN); } parN = curN; } var fileName = segments[segments.Length - 1]; var leafN = new TreeNodeSimulation(fileName, Path.Combine(basedPath, temp), GetImageIndex(fileName)); parN.Nodes.Add(leafN); ParseUiClassToGetMtClassesAndMtMethodNames(leafN.Tag); } } } SortNodes(_projNode); Invoke((MethodInvoker)delegate { BindTree(_projNode, treeView1.Nodes); if (treeView1.Nodes.Count > 0) treeView1.Nodes[0].Expand(); toolStripProgressBar1.MarqueeAnimationSpeed = 0; toolStripProgressBar1.Style = ProgressBarStyle.Blocks; toolStripLabel1.Text = "Loaded files"; }); }