private void OnAddEmptyDirBtnClick(object sender, EventArgs e) { FolderTreeNode parentNode = (FolderTreeNode)fsFolderTree.SelectedNode; if (parentNode == null) { MessageBox.Show("Please select a folder to add to"); return; } if (parentNode.deleted) { MessageBox.Show("Folder was deleted"); return; } retry_input: String newFolderName = ""; if (TreeHelper.InputBox("Add empty folder", "Folder name:", ref newFolderName) != DialogResult.OK || string.IsNullOrEmpty(newFolderName)) { return; } // Help user: don't let them allow root dirs such as "SomeDir". Instead, force "C_" or "%Program Files%" for root nodes. if (parentNode.Parent == null) // Adding to root dir { if ((newFolderName.Length < 2) || (newFolderName.Length == 2 && newFolderName[1] != '_') || (newFolderName.Length > 2 && newFolderName[0] != '%')) { if (MessageBox.Show(Messages.Messages.incorrectRootDir, "Warning", MessageBoxButtons.YesNo) != DialogResult.Yes) { goto retry_input; } } } if (newFolderName.Contains("\\")) { MessageBox.Show("Folder must not contain '\\'. Please specify one folder at a time."); return; } VirtFsNode virtFsNode = new VirtFsNode(); #pragma warning disable 1690 virtFsNode.FileName = TreeHelper.FullPath(parentNode.virtFsNode.FileName, newFolderName); #pragma warning restore 1690 virtFsNode.FileFlags = 0; // Folder, not file //String[] subdirs = newFolderName.Split('\\'); FolderTreeNode curParentNode = parentNode; FolderTreeNode folderOverwrite = null; //foreach (String subdir in subdirs) { foreach (FolderTreeNode childNode in curParentNode.Nodes) { if (childNode.Text.Equals(newFolderName, StringComparison.CurrentCultureIgnoreCase)) { if (!childNode.deleted) { MessageBox.Show("Folder already exists"); return; } else { folderOverwrite = childNode; childNode.deleted = false; if (childNode.childFiles != null) { foreach (FileData file in childNode.childFiles) { file.deleted = true;// make sure files from a previously deleted folder dont come back.. } } } } } } FolderTreeNode newNode; if (folderOverwrite != null) { newNode = folderOverwrite; } else { newNode = AddFileOrFolder(virtFsNode, newFolderName); // Also sets dirty = true if (newNode != null) { newNode.addedEmpty = true; } } RefreshFolderNodeRecursively(parentNode, 0); TreeViewEventArgs ev = new TreeViewEventArgs(parentNode); OnFolderTreeSelect(sender, ev); }
private void OnAddEmptyDirBtnClick(object sender, EventArgs e) { FolderTreeNode parentNode = (FolderTreeNode)fsFolderTree.SelectedNode; if (parentNode == null) { MessageBox.Show("Please select a folder to add to"); return; } if (parentNode.deleted) { MessageBox.Show("Folder was deleted"); return; } String newFolderName = ""; if (TreeHelper.InputBox("Add empty folder", "Folder name:", ref newFolderName) != DialogResult.OK || string.IsNullOrEmpty(newFolderName)) { return; } if (newFolderName.Contains("\\")) { MessageBox.Show("Folder must not contain '\\'. Please specify one folder at a time."); return; } VirtFsNode virtFsNode = new VirtFsNode(); #pragma warning disable 1690 virtFsNode.FileName = TreeHelper.FullPath(parentNode.virtFsNode.FileName, newFolderName); #pragma warning restore 1690 virtFsNode.FileFlags = 0; // Folder, not file //String[] subdirs = newFolderName.Split('\\'); FolderTreeNode curParentNode = parentNode; FolderTreeNode folderOverwrite = null; //foreach (String subdir in subdirs) { foreach (FolderTreeNode childNode in curParentNode.Nodes) { if (childNode.Text.Equals(newFolderName, StringComparison.CurrentCultureIgnoreCase)) { if (!childNode.deleted) { MessageBox.Show("Folder already exists"); return; } else { folderOverwrite = childNode; childNode.deleted = false; if (childNode.childFiles != null) { foreach (FileData file in childNode.childFiles) { file.deleted = true;// make sure files from a previously deleted folder dont come back.. } } } } } } FolderTreeNode newNode; if (folderOverwrite != null) { newNode = folderOverwrite; } else { newNode = AddFileOrFolder(virtFsNode, newFolderName); // Also sets dirty = true if (newNode != null) { newNode.addedEmpty = true; } } RefreshFolderNodeRecursively(parentNode, 0); TreeViewEventArgs ev = new TreeViewEventArgs(parentNode); OnFolderTreeSelect(sender, ev); }