public IEnumerable <TreeNode> EnumerateDataFiles <T>(DataSubFolder subFolder, Func <FileInfo, DataFile <T> > fileParser, SearchOption searchOption = SearchOption.TopDirectoryOnly) where T : class { switch (searchOption) { case SearchOption.AllDirectories: return (from dataFolder in EnumerateDataFolders(subFolder) let treeNode = new TreeNode(dataFolder.Name) { Tag = dataFolder } where treeNode.AddChildrenIfAny( dataFolder.EnumerateDataFiles(fileParser), DataFileToTreeNode) select treeNode); case SearchOption.TopDirectoryOnly: return (new DataFolder(OpenSubFolder(subFolder)) .EnumerateDataFiles(fileParser) .Select(DataFileToTreeNode)); default: throw new ArgumentException(searchOption + " is not implemented!", "searchOption"); } }
private async Task AddDataFilesToTreeAsync <T>(DataSubFolder subFolder, Func <FileInfo, DataFile <T> > fileParser, SearchOption searchOption = SearchOption.TopDirectoryOnly) where T : class { var dataFiles = dataManagerComponent.EnumerateDataFiles(subFolder, fileParser, searchOption); treeViewUnits.Nodes["Node" + subFolder].Nodes.AddRange(await Task.Run(() => dataFiles.ToArray())); }
private DirectoryInfo OpenSubFolder(DataSubFolder subFolder) { return(DataDirectory.EnumerateDirectories(subFolder.ToString()).Single()); }
public IEnumerable <DataFolder> EnumerateDataFolders(DataSubFolder subFolder) { return(OpenSubFolder(subFolder).EnumerateDirectories().Select(childDir => new DataFolder(childDir))); }