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();
            }
        }
Пример #2
0
        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);
     }
 }
Пример #4
0
        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);
        }
Пример #10
0
        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);
                    }
                }
            }
        }