private void RefreshFolderContents(TreeNode folderNode) { if (IsDirectoryInfoTreeNode(folderNode)) { LibraryFolder libFolder = (LibraryFolder)folderNode.Tag; libFolder.RefreshFullContent(); tVLibraryTree.BeginUpdate(); if (libFolder.SubFiles.Count > 0 || libFolder.SubFolders.Count > 0) { folderNode.Nodes.Clear(); SynchronizeSubNodes(folderNode, libFolder); tVLibraryTree.SelectedNode = folderNode; } else { folderNode.Parent.Nodes.Remove(folderNode); } tVLibraryTree.EndUpdate(); } }
public void RefreshFolderContent() { this.subFolders.Clear(); if (this.libraryFolder.Exists) { DirectoryInfo[] subFolderCollection = null; try { subFolderCollection = this.libraryFolder.GetDirectories(); } catch (Exception) { } if (subFolderCollection != null) { foreach (DirectoryInfo folder in subFolderCollection) { LibraryFolder libFolder = LibraryFolder.CreateFolder(folder); if (libFolder.subFiles.Count > 0 || libFolder.subFolders.Count > 0) { this.subFolders.Add(libFolder); } } } } }
private void SynchronizeSubFiles(TreeNode folderNode, LibraryFolder libraryFolder) { foreach (LibraryFile file in libraryFolder.SubFiles) { TreeNode subNode = CreateTreeNodeForFile(file); folderNode.Nodes.Add(subNode); } }
internal static LibraryFolder CreateFolder(DirectoryInfo parentFolder) { LibraryFolder result = new LibraryFolder(parentFolder); result.RefreshFullContent(); return(result); }
private void SynchronizeSubNodes(TreeNode folderNode, LibraryFolder libraryFolder) { foreach (LibraryFolder folder in libraryFolder.SubFolders) { TreeNode subNode = CreateTreeNodeForFolder(folder); SynchronizeSubNodes(subNode, folder); folderNode.Nodes.Add(subNode); } SynchronizeSubFiles(folderNode, libraryFolder); }
private TreeNode CreateTreeNodeForFolder(LibraryFolder folderInfo) { TreeNode folderNode = new TreeNode(folderInfo.DirectoryName); folderNode.Tag = folderInfo; folderNode.ImageKey = "folder"; folderNode.SelectedImageKey = "folder"; folderNode.ContextMenuStrip = contMSTreeViewDirectory; return(folderNode); }
public void OpenTagFolder(TreeNode treeNode) { if (treeNode != null && treeNode.Tag != null) { if (IsDirectoryInfoTreeNode(treeNode)) { LibraryFolder libFolder = (LibraryFolder)treeNode.Tag; libFolder.OpenFolder(); } else if (IsFileTreeNode(treeNode)) { LibraryFile labFile = (LibraryFile)treeNode.Tag; labFile.OpenFileFolder(); } } }
private void RefreshFolderContentsForFiles(TreeNode folderNode) { if (IsDirectoryInfoTreeNode(folderNode)) { tVLibraryTree.BeginUpdate(); RemoveFileNodes(folderNode); LibraryFolder libFolder = (LibraryFolder)folderNode.Tag; libFolder.RefreshFileContent(); SynchronizeSubFiles(folderNode, libFolder); tVLibraryTree.SelectedNode = folderNode; tVLibraryTree.EndUpdate(); } }
private bool HandleNewLibraryDirectory(string path) { bool result = false; this.defaultLibraryPath = string.Empty; tBLibraryAddress.Text = string.Empty; tSSLLibraryRoot.Text = string.Empty; ClearTreeView(); if (Directory.Exists(path)) { result = true; this.defaultLibraryPath = path; tBLibraryAddress.Text = path; tSSLLibraryRoot.Text = path; DirectoryInfo rootFolder = new DirectoryInfo(path); LibraryFolder libraryRootFolder = LibraryFolder.CreateFolder(rootFolder); TreeNode rootNode = CreateTreeNodeForFolder(libraryRootFolder); tVLibraryTree.SuspendLayout(); tVLibraryTree.BeginUpdate(); SynchronizeSubNodes(rootNode, libraryRootFolder); tVLibraryTree.Nodes.Add(rootNode); rootNode.Expand(); SetNodeName(rootNode); tVLibraryTree.EndUpdate(); tVLibraryTree.ResumeLayout(true); } return(result); }
public static LibraryFolder CreateLibraryFolderFromXml(XmlNode node) { LibraryFolder result = null; if (node.Name == xmlNodeName) { XmlAttribute attr; attr = node.Attributes["FullName"]; if (attr != null && !string.IsNullOrEmpty(attr.Value)) { DirectoryInfo directory = new DirectoryInfo(attr.Value); result = new LibraryFolder(directory); XmlNodeList list; list = node.SelectNodes(xmlNodeName); foreach (XmlNode item in list) { LibraryFolder folder = LibraryFolder.CreateLibraryFolderFromXml(item); if (folder.subFiles.Count > 0 || folder.subFolders.Count > 0) { result.subFolders.Add(folder); } } list = node.SelectNodes(LibraryFile.xmlNodeName); foreach (XmlNode item in list) { LibraryFile file = LibraryFile.CreateLibraryFileFromXml(item); result.subFiles.Add(file); } } } return(result); }
private void tVLibraryTree_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { Point treePoint = tVLibraryTree.PointToClient(new Point(e.X, e.Y)); TreeNode node = tVLibraryTree.GetNodeAt(treePoint); if (node != null) { TreeNode folderNode = null; if (IsDirectoryInfoTreeNode(node)) { folderNode = node; } else if (IsFileTreeNode(node)) { if (IsDirectoryInfoTreeNode(node.Parent)) { folderNode = node.Parent; } } if (folderNode != null) { LibraryFolder libFolder = (LibraryFolder)folderNode.Tag; string[] filePathCollection = (string[])e.Data.GetData(DataFormats.FileDrop); bool allRight = true; StringBuilder sb = new StringBuilder(); foreach (string filePath in filePathCollection) { if (File.Exists(filePath)) { string newFileName = Path.GetFileName(filePath); string newFilePath = Path.Combine(libFolder.FullName, newFileName); if (File.Exists(newFilePath)) { allRight = false; sb.AppendLine(newFileName); } } } if (!allRight) { MessageBox.Show(this, "В папке уже существуют следующие файлы :\r\n\r\n" + sb.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } bool moveFiles = false; string question = string.Format("Произвести перемещение в папку {0}?", libFolder.DirectoryName); System.Windows.Forms.DialogResult questionResult = MessageBox.Show(this, question, "Вопрос", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (questionResult == System.Windows.Forms.DialogResult.Yes) { moveFiles = true; } else if (questionResult == System.Windows.Forms.DialogResult.No) { moveFiles = false; } else { return; } foreach (string filePath in filePathCollection) { if (File.Exists(filePath)) { string newFilePath = Path.Combine(libFolder.FullName, Path.GetFileName(filePath)); if (!File.Exists(newFilePath)) { if (moveFiles) { File.Move(filePath, newFilePath); } else { File.Copy(filePath, newFilePath); } } } } RefreshFolderContentsForFiles(folderNode); } } } }