using System; using System.IO; using System.Windows.Controls; using System.Windows; namespace TapeCatalog.Methods { // Reusable helper methods for copy-related UI functionality public static class CopyMethods { public static void PopulateTree(TreeView tree, string path) { if (tree == null) return; tree.Items.Clear(); if (string.IsNullOrWhiteSpace(path) || !Directory.Exists(path)) return; var rootDir = new DirectoryInfo(path); var rootItem = CreateDirectoryNode(rootDir); rootItem.IsExpanded = true; tree.Items.Add(rootItem); } public static TreeViewItem CreateDirectoryNode(DirectoryInfo dir) { var item = new TreeViewItem { Header = dir.Name, Tag = dir.FullName }; try { foreach (var sub in dir.GetDirectories()) { item.Items.Add(CreateDirectoryNode(sub)); } foreach (var f in dir.GetFiles()) { var fileItem = new TreeViewItem { Tag = f.FullName }; var sp = new StackPanel { Orientation = Orientation.Horizontal }; var cb = new CheckBox { VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(0, 0, 4, 0) }; var tb = new TextBlock { Text = f.Name, VerticalAlignment = VerticalAlignment.Center }; sp.Children.Add(cb); sp.Children.Add(tb); fileItem.Header = sp; item.Items.Add(fileItem); } } catch { // ignore access exceptions } return item; } } }