public override void BuildChildNodes(ITreeBuilder builder, object dataObject) { string path = GetFolderPath(dataObject); if (builder.Options ["ShowAllFiles"] && Directory.Exists(path)) { Project project = (Project)builder.GetParentDataItem(typeof(Project), true); SolutionFolderFileCollection folderFiles = null; if (dataObject is Solution) { folderFiles = ((Solution)dataObject).RootFolder.Files; } else if (dataObject is SolutionFolder) { folderFiles = ((SolutionFolder)dataObject).Files; } foreach (string file in Directory.GetFiles(path)) { if ((project == null || project.Files.GetFile(file) == null) && (folderFiles == null || !folderFiles.Contains(file))) { builder.AddChild(new SystemFile(file, project)); } } foreach (string folder in Directory.GetDirectories(path)) { if (!builder.HasChild(Path.GetFileName(folder), typeof(ProjectFolder))) { builder.AddChild(new ProjectFolder(folder, project)); } } } }
public override void BuildChildNodes(ITreeBuilder builder, object dataObject) { if (!builder.Options ["ShowAllFiles"]) { return; } string path = GetFolderPath(dataObject); if (Directory.Exists(path)) { Project project = (Project)builder.GetParentDataItem(typeof(Project), true); SolutionFolderFileCollection folderFiles = null; if (dataObject is Solution) { folderFiles = ((Solution)dataObject).RootFolder.Files; } else if (dataObject is SolutionFolder) { folderFiles = ((SolutionFolder)dataObject).Files; } builder.AddChildren(Directory.EnumerateFiles(path) .Where(file => (project == null || project.Files.GetFile(file) == null) && (folderFiles == null || !folderFiles.Contains(file))) .Select(file => new SystemFile(file, project))); builder.AddChildren(Directory.EnumerateDirectories(path) .Where(folder => !builder.HasChild(Path.GetFileName(folder), typeof(ProjectFolder))) .Select(folder => new ProjectFolder(folder, project))); } }