private void PopulateDirectoryTree() { DirectoryTreeController.ClearMultiSelection(); DirectoryTree.Clear(); DirectoryTreeViewNode rootNode = new DirectoryTreeViewNode("/", null, DirectoryTreeController); IDictionary <string, TreeViewNode> directoryLookup = new SortedDictionary <string, TreeViewNode>(); directoryLookup[rootNode.DisplayString] = rootNode; foreach (SongMetadata song in m_DataModel.Database.Songs) { TreeViewNode parent = FindDirectoryNode(song.Directory, directoryLookup, rootNode); SongMetadataTreeViewNode leaf = new SongMetadataTreeViewNode(song.Filename, song, parent, DirectoryTreeController); parent.AddChild(leaf); } AssignTreeViewNodeIDs(rootNode, 0); if (rootNode.Children.Count > 0) { DirectoryTree.Add(rootNode); rootNode.IsExpanded = true; } }
public void ShowSongsInDirectoryTree(IEnumerable <SongMetadata> selectedSongs) { DirectoryTreeController.ClearMultiSelection(); // This looks more complex than necessary because it is trying to // support multiple roots. foreach (TreeViewNode root in DirectoryTreeController.RootLevelNodes) { if (root is DirectoryTreeViewNode) { DirectoryTreeViewNode rootDirectory = root as DirectoryTreeViewNode; foreach (TreeViewNode node in rootDirectory.Children) { node.IsExpanded = false; foreach (SongMetadata song in selectedSongs) { SearchAndSelectPath(node, song.Path); } } } } }