//set design file group private static void SetDesignFileIco(Module.M_DomCs cs, string extenision, params string[] filename) { switch (extenision) { case ".cs": { cs.IsType = OpenProject.Come.Module.CsType.winform; //winform design type file foreach (string s in filename) { Module.M_DomCs csdom = new OpenProject.Come.Module.M_DomCs(); csdom.FileName = s; csdom.IsType = OpenProject.Come.Module.CsType.design; //design type file cs._cslist.Add(csdom); } break; } case ".aspx": { cs.IsType = OpenProject.Come.Module.CsType.aspx; //asp.net page type file foreach (string s in filename) { Module.M_DomCs csdom = new OpenProject.Come.Module.M_DomCs(); csdom.FileName = s; csdom.IsType = OpenProject.Come.Module.CsType.design; //design type file cs._cslist.Add(csdom); } break; } } }
//recursion get directory info private static void GetDirectoryCsFileList(string formDirectory, Module.M_DomDirectory dirdom) { if (Directory.Exists(formDirectory)) { string[] directory = Directory.GetDirectories(formDirectory); if (directory.Length > 0) { foreach (string path in directory)//foreach current directory list { if (Path.GetFileNameWithoutExtension(path) == "obj" || (Path.GetFileNameWithoutExtension(path) == "bin")) { continue; } Module.M_DomDirectory dir = new OpenProject.Come.Module.M_DomDirectory(); dir.FileName = Path.GetFileNameWithoutExtension(path); dir.FilePath = path; if (Path.GetFileNameWithoutExtension(path) == "Properties") { dir.DirectoryType = OpenProject.Come.Module.DirType.Propertties; //file path is properties } dirdom.DirCollection.Add(dir); //would current directory add directory collection GetDirectoryCsFileList(path, dir); //current get files List <string> files = new List <string>(); files.AddRange(Directory.GetFiles(path));//get current path file list for (int index = 0; index < files.Count; index++) { if (Path.GetExtension(files[index]) == ".csproj") { files.RemoveAt(index); } } if (files.Count > 0) { files.Sort();//element sort.employ element indent for (int i = 0; i < files.Count;) { if ((i + 2) < files.Count) { string filename = Path.GetFileName(files[i]).Split('.')[0]; string filename2 = Path.GetFileName(files[i + 1]).Split('.')[0]; string filename3 = Path.GetFileName(files[i + 2]).Split('.')[0]; if ((filename == filename2) && (filename2 == filename3))//is design type file { Module.M_DomCs csdom = new OpenProject.Come.Module.M_DomCs(); csdom.FileName = Path.GetFileName(files[i]); csdom.FilePath = files[i]; SetDesignFileIco(csdom, Path.GetExtension(files[i]), Path.GetFileName(files[i + 1]), Path.GetFileName(files[i + 2])); dir.CsFileCollection.Add(csdom); files.RemoveAt(i + 2); files.RemoveAt(i + 1); files.RemoveAt(i); continue; } } Module.M_DomCs cs = new OpenProject.Come.Module.M_DomCs(); cs.FileName = Path.GetFileName(files[i]); cs.FilePath = files[i]; SetFileIco(cs, Path.GetExtension(files[i])); dir.CsFileCollection.Add(cs); i++; } } } List <string> filess = new List <string>(); filess.AddRange(Directory.GetFiles(formDirectory));//get current path file list for (int index = 0; index < filess.Count; index++) { if (Path.GetExtension(filess[index]) == ".csproj") { filess.RemoveAt(index); } } if (filess.Count > 0) { filess.Sort();//element sort.employ element indent for (int i = 0; i < filess.Count;) { if ((i + 2) < filess.Count) { string filename = Path.GetFileName(filess[i]).Split('.')[0]; string filename2 = Path.GetFileName(filess[i + 1]).Split('.')[0]; string filename3 = Path.GetFileName(filess[i + 2]).Split('.')[0]; if ((filename == filename2) && (filename2 == filename3))//is design type file { Module.M_DomCs csdom = new OpenProject.Come.Module.M_DomCs(); csdom.FileName = Path.GetFileName(filess[i]); csdom.FilePath = filess[i]; SetDesignFileIco(csdom, Path.GetExtension(filess[i]), Path.GetFileName(filess[i + 1]), Path.GetFileName(filess[i + 2])); dirdom.CsFileCollection.Add(csdom); filess.RemoveAt(i + 2); filess.RemoveAt(i + 1); filess.RemoveAt(i); continue; } } Module.M_DomCs cs = new OpenProject.Come.Module.M_DomCs(); cs.FileName = Path.GetFileName(filess[i]); cs.FilePath = filess[i]; SetFileIco(cs, Path.GetExtension(filess[i])); dirdom.CsFileCollection.Add(cs); i++; } } } } }