Index: src/Common/DelftTools.Controls.Swf/FileSystemTreeView.cs =================================================================== diff -u -r8f6ae890fed8e8eae3a32f9c0498a10f82e0ddf9 -r5fc71a385897af92ccb092f2f969b5709afab85a --- src/Common/DelftTools.Controls.Swf/FileSystemTreeView.cs (.../FileSystemTreeView.cs) (revision 8f6ae890fed8e8eae3a32f9c0498a10f82e0ddf9) +++ src/Common/DelftTools.Controls.Swf/FileSystemTreeView.cs (.../FileSystemTreeView.cs) (revision 5fc71a385897af92ccb092f2f969b5709afab85a) @@ -4,6 +4,7 @@ using System.Drawing; using System.IO; using System.Linq; +using DelftTools.Controls.Swf.Properties; using DelftTools.Controls.Swf.TreeViewControls; namespace DelftTools.Controls.Swf @@ -13,125 +14,36 @@ /// public partial class FileSystemTreeView : TreeView { - public class ComputerInfo - { - public string HostName { get; set; } - } + private string searchPattern; - public class ComputerTreeNodePresenter : TreeViewNodePresenterBase + public FileSystemTreeView() { - private static readonly Bitmap ComputerIcon = Properties.Resources.computer; + InitializeComponent(); - public override IEnumerable GetChildNodeObjects(ComputerInfo parentNodeData, ITreeNode node) - { - foreach (var logicalDrive in Environment.GetLogicalDrives()) - { - yield return new DriveInfo(logicalDrive); - } - } + NodePresenters.Add(new ComputerTreeNodePresenter()); + NodePresenters.Add(new DriveTreeNodePresenter()); + NodePresenters.Add(new DirectoryTreeNodePresenter()); + NodePresenters.Add(new FileTreeNodePresenter()); - public override void UpdateNode(ITreeNode parentNode, ITreeNode node, ComputerInfo data) - { - node.Text = data.HostName; - node.Image = ComputerIcon; - node.ShowCheckBox = false; - } - } + CheckBoxes = true; - public class DriveTreeNodePresenter : TreeViewNodePresenterBase - { - private static readonly Bitmap DriveIcon = Properties.Resources.drive; - public string SearchPattern { get; set; } - - public override IEnumerable GetChildNodeObjects(DriveInfo parentNodeData, ITreeNode node) + Data = new ComputerInfo { - var list = new List(); - if (parentNodeData.IsReady) - { - list.AddRange(parentNodeData.RootDirectory.GetDirectories()); - list.AddRange(parentNodeData.RootDirectory.GetFiles(string.IsNullOrEmpty(SearchPattern) ? "*" : SearchPattern)); - } - return list; - } + HostName = "My Computer" + }; - public override void UpdateNode(ITreeNode parentNode, ITreeNode node, DriveInfo data) - { - node.Text = data.Name; - node.Image = DriveIcon; - node.ShowCheckBox = false; - } + Nodes[0].Expand(); } - public class DirectoryTreeNodePresenter : TreeViewNodePresenterBase - { - private static readonly Bitmap FolderIcon = Properties.Resources.folder; - public string SearchPattern { get; set; } - - public override IEnumerable GetChildNodeObjects(DirectoryInfo parentNodeData, ITreeNode node) - { - var childDirectories = Enumerable.Empty(); - try - { - childDirectories = parentNodeData.GetDirectories(); - } - catch(UnauthorizedAccessException) - { - } - catch(IOException) - { - } - - foreach (var directoryInfo in childDirectories) - { - yield return directoryInfo; - } - - var childFiles = Enumerable.Empty(); - try - { - childFiles = parentNodeData.GetFiles(string.IsNullOrEmpty(SearchPattern) ? "*" : SearchPattern); - } - catch (UnauthorizedAccessException) - { - } - catch (IOException) - { - } - - foreach (var fileInfo in childFiles) - { - yield return fileInfo; - } - } - - public override void UpdateNode(ITreeNode parentNode, ITreeNode node, DirectoryInfo data) - { - node.Text = data.Name; - node.Image = FolderIcon; - node.Tag = data; - } - } - - public class FileTreeNodePresenter : TreeViewNodePresenterBase - { - private static readonly Bitmap FileIcon = Properties.Resources.page_white; - - public override void UpdateNode(ITreeNode parentNode, ITreeNode node, FileInfo data) - { - node.Text = data.Name; - node.Image = FileIcon; - node.Tag = data; - } - } - - private string searchPattern; - /// /// Seach pattern as used in DirectoryInfo.GetFiles() method (Example : *.CSV) /// public string SearchPattern { - get { return searchPattern; } + get + { + return searchPattern; + } set { searchPattern = value; @@ -154,26 +66,10 @@ { return AllLoadedNodes .Where(n => n.Checked && n.Tag is FileInfo) - .Select(n => (FileInfo)n.Tag); + .Select(n => (FileInfo) n.Tag); } } - public FileSystemTreeView() - { - InitializeComponent(); - - NodePresenters.Add(new ComputerTreeNodePresenter()); - NodePresenters.Add(new DriveTreeNodePresenter()); - NodePresenters.Add(new DirectoryTreeNodePresenter()); - NodePresenters.Add(new FileTreeNodePresenter()); - - CheckBoxes = true; - - Data = new ComputerInfo { HostName = "My Computer" }; - - Nodes[0].Expand(); - } - /// /// Expand treeview to given path /// @@ -182,39 +78,41 @@ public bool ExpandTo(string path) { DirectoryInfo directoryInfo = null; - if(File.Exists(path)) + if (File.Exists(path)) { directoryInfo = new FileInfo(path).Directory; } if (Directory.Exists(path)) { directoryInfo = new DirectoryInfo(path); } - if(directoryInfo == null) return false; + if (directoryInfo == null) + { + return false; + } - ITreeNode node = FindDirectoryNode(Nodes[0], directoryInfo); - if(node != null) + if (node != null) { SelectedNode = node; node.Expand(); return true; } - + return false; } private ITreeNode FindDirectoryNode(ITreeNode node, DirectoryInfo directoryInfo) { foreach (var child in node.Nodes) { - if(child.Tag is DirectoryInfo) + if (child.Tag is DirectoryInfo) { - if (directoryInfo.FullName.StartsWith(((DirectoryInfo)child.Tag).FullName, StringComparison.OrdinalIgnoreCase)) + if (directoryInfo.FullName.StartsWith(((DirectoryInfo) child.Tag).FullName, StringComparison.OrdinalIgnoreCase)) { ITreeNode returnNode = FindDirectoryNode(child, directoryInfo); - if(returnNode != null) + if (returnNode != null) { return returnNode; } @@ -223,7 +121,7 @@ } else if (child.Tag is DriveInfo) { - if (directoryInfo.FullName.StartsWith(((DriveInfo)child.Tag).Name,StringComparison.OrdinalIgnoreCase)) + if (directoryInfo.FullName.StartsWith(((DriveInfo) child.Tag).Name, StringComparison.OrdinalIgnoreCase)) { ITreeNode returnNode = FindDirectoryNode(child, directoryInfo); if (returnNode != null) @@ -236,5 +134,108 @@ } return null; } + + public class ComputerInfo + { + public string HostName { get; set; } + } + + public class ComputerTreeNodePresenter : TreeViewNodePresenterBase + { + private static readonly Bitmap ComputerIcon = Resources.computer; + + public override IEnumerable GetChildNodeObjects(ComputerInfo parentNodeData, ITreeNode node) + { + foreach (var logicalDrive in Environment.GetLogicalDrives()) + { + yield return new DriveInfo(logicalDrive); + } + } + + public override void UpdateNode(ITreeNode parentNode, ITreeNode node, ComputerInfo data) + { + node.Text = data.HostName; + node.Image = ComputerIcon; + node.ShowCheckBox = false; + } + } + + public class DirectoryTreeNodePresenter : TreeViewNodePresenterBase + { + private static readonly Bitmap FolderIcon = Resources.folder; + public string SearchPattern { get; set; } + + public override IEnumerable GetChildNodeObjects(DirectoryInfo parentNodeData, ITreeNode node) + { + var childDirectories = Enumerable.Empty(); + try + { + childDirectories = parentNodeData.GetDirectories(); + } + catch (UnauthorizedAccessException) {} + catch (IOException) {} + + foreach (var directoryInfo in childDirectories) + { + yield return directoryInfo; + } + + var childFiles = Enumerable.Empty(); + try + { + childFiles = parentNodeData.GetFiles(string.IsNullOrEmpty(SearchPattern) ? "*" : SearchPattern); + } + catch (UnauthorizedAccessException) {} + catch (IOException) {} + + foreach (var fileInfo in childFiles) + { + yield return fileInfo; + } + } + + public override void UpdateNode(ITreeNode parentNode, ITreeNode node, DirectoryInfo data) + { + node.Text = data.Name; + node.Image = FolderIcon; + node.Tag = data; + } + } + + public class DriveTreeNodePresenter : TreeViewNodePresenterBase + { + private static readonly Bitmap DriveIcon = Resources.drive; + public string SearchPattern { get; set; } + + public override IEnumerable GetChildNodeObjects(DriveInfo parentNodeData, ITreeNode node) + { + var list = new List(); + if (parentNodeData.IsReady) + { + list.AddRange(parentNodeData.RootDirectory.GetDirectories()); + list.AddRange(parentNodeData.RootDirectory.GetFiles(string.IsNullOrEmpty(SearchPattern) ? "*" : SearchPattern)); + } + return list; + } + + public override void UpdateNode(ITreeNode parentNode, ITreeNode node, DriveInfo data) + { + node.Text = data.Name; + node.Image = DriveIcon; + node.ShowCheckBox = false; + } + } + + public class FileTreeNodePresenter : TreeViewNodePresenterBase + { + private static readonly Bitmap FileIcon = Resources.page_white; + + public override void UpdateNode(ITreeNode parentNode, ITreeNode node, FileInfo data) + { + node.Text = data.Name; + node.Image = FileIcon; + node.Tag = data; + } + } } } \ No newline at end of file