public override void Run() { TreeNode selectedNode = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; DirectoryNode node = selectedNode as DirectoryNode; Directory.CreateDirectory(node.Directory); IncludeFileInProject.IncludeDirectoryNode(node, false); }
FileProjectItem CreateNewFile(DirectoryNode upper, string fileName) { upper.Expanding(); FileNode fileNode = new FileNode(fileName, FileNodeStatus.InProject); fileNode.AddTo(upper); fileNode.EnsureVisible(); return(IncludeFileInProject.IncludeFileNode(fileNode)); }
DirectoryNode CreateNewDirectory(DirectoryNode upper, string directoryName) { upper.Expanding(); Directory.CreateDirectory(directoryName); DirectoryNode directoryNode = new DirectoryNode(directoryName, FileNodeStatus.InProject); directoryNode.AddTo(upper); IncludeFileInProject.IncludeDirectoryNode(directoryNode, false); return(directoryNode); }
DirectoryNode CreateNewDirectory(DirectoryNode upper, string directoryName) { upper.Expanding(); Directory.CreateDirectory(directoryName); FileService.FireFileCreated(directoryName, true); DirectoryNode directoryNode = new DirectoryNode(directoryName, FileNodeStatus.InProject); directoryNode.InsertSorted(upper); IncludeFileInProject.IncludeDirectoryNode(directoryNode, false); return(directoryNode); }
public static FileProjectItem CopyFile(string fileName, DirectoryNode node, bool includeInProject) { string copiedFileName = Path.Combine(node.Directory, Path.GetFileName(fileName)); if (!FileUtility.IsEqualFileName(fileName, copiedFileName)) { FileService.CopyFile(fileName, copiedFileName, false, true); } if (includeInProject) { FileNode fileNode; foreach (TreeNode childNode in node.AllNodes) { if (childNode is FileNode) { fileNode = (FileNode)childNode; if (FileUtility.IsEqualFileName(fileNode.FileName, copiedFileName)) { if (fileNode.FileNodeStatus == FileNodeStatus.Missing) { fileNode.FileNodeStatus = FileNodeStatus.InProject; } else if (fileNode.FileNodeStatus == FileNodeStatus.None) { return(IncludeFileInProject.IncludeFileNode(fileNode)); } return(fileNode.ProjectItem as FileProjectItem); } } } fileNode = new FileNode(copiedFileName); fileNode.InsertSorted(node); return(IncludeFileInProject.IncludeFileNode(fileNode)); } return(null); }
public static void CopyDirectory(string directoryName, DirectoryNode node, bool includeInProject) { directoryName = FileUtility.NormalizePath(directoryName); string copiedFileName = Path.Combine(node.Directory, Path.GetFileName(directoryName)); LoggingService.Debug("Copy " + directoryName + " to " + copiedFileName); if (!FileUtility.IsEqualFileName(directoryName, copiedFileName)) { if (includeInProject && ProjectService.OpenSolution != null) { // get ProjectItems in source directory foreach (IProject project in ProjectService.OpenSolution.Projects) { if (!FileUtility.IsBaseDirectory(project.Directory, directoryName)) { continue; } LoggingService.Debug("Searching for child items in " + project.Name); foreach (ProjectItem item in project.Items) { FileProjectItem fileItem = item as FileProjectItem; if (fileItem == null) { continue; } string virtualFullName = Path.Combine(project.Directory, fileItem.VirtualName); if (FileUtility.IsBaseDirectory(directoryName, virtualFullName)) { if (item.ItemType == ItemType.Folder && FileUtility.IsEqualFileName(directoryName, virtualFullName)) { continue; } LoggingService.Debug("Found file " + virtualFullName); FileProjectItem newItem = new FileProjectItem(node.Project, fileItem.ItemType); if (FileUtility.IsBaseDirectory(directoryName, fileItem.FileName)) { newItem.FileName = FileUtility.RenameBaseDirectory(fileItem.FileName, directoryName, copiedFileName); } else { newItem.FileName = fileItem.FileName; } fileItem.CopyMetadataTo(newItem); if (fileItem.IsLink) { string newVirtualFullName = FileUtility.RenameBaseDirectory(virtualFullName, directoryName, copiedFileName); fileItem.SetEvaluatedMetadata("Link", FileUtility.GetRelativePath(node.Project.Directory, newVirtualFullName)); } ProjectService.AddProjectItem(node.Project, newItem); } } } } FileService.CopyFile(directoryName, copiedFileName, true, false); DirectoryNode newNode = new DirectoryNode(copiedFileName); newNode.InsertSorted(node); if (includeInProject) { IncludeFileInProject.IncludeDirectoryNode(newNode, false); } newNode.Expanding(); } else if (includeInProject) { foreach (TreeNode childNode in node.Nodes) { if (childNode is DirectoryNode) { DirectoryNode directoryNode = (DirectoryNode)childNode; if (FileUtility.IsEqualFileName(directoryNode.Directory, copiedFileName)) { IncludeFileInProject.IncludeDirectoryNode(directoryNode, true); } } } } }
public override void Run() { ProjectBrowserPad.Instance.BringToFront(); DirectoryNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedDirectoryNode; if (node == null) { return; } node.Expanding(); node.Expand(); using (FolderBrowserDialog dlg = new FolderBrowserDialog()) { dlg.SelectedPath = node.Directory; dlg.ShowNewFolderButton = false; if (dlg.ShowDialog(WorkbenchSingleton.MainForm) == DialogResult.OK) { string folderName = dlg.SelectedPath; string copiedFolderName = Path.Combine(node.Directory, Path.GetFileName(folderName)); if (!FileUtility.IsEqualFileName(folderName, copiedFolderName)) { if (FileUtility.IsBaseDirectory(folderName, node.Directory)) { MessageService.ShowError("Cannot copy " + folderName + " to " + copiedFolderName); return; } if (Directory.Exists(copiedFolderName)) { MessageService.ShowError("Cannot copy " + folderName + " to " + copiedFolderName + ": target already exists."); return; } int res = MessageService.ShowCustomDialog( "${res:ProjectComponent.ContextMenu.ExistingFolder}", "${res:ProjectComponent.ContextMenu.ExistingFolder.CopyQuestion}", 0, 1, "${res:ProjectComponent.ContextMenu.AddExistingFiles.Copy}", "${res:Global.CancelButtonText}"); if (res != 0) { return; } if (!FileService.CopyFile(folderName, copiedFolderName, true, false)) { return; } } // ugly HACK to get IncludeDirectoryNode to work properly AbstractProjectBrowserTreeNode.ShowAll = true; try { node.RecreateSubNodes(); DirectoryNode newNode = node.AllNodes.OfType <DirectoryNode>() .FirstOrDefault(dir => FileUtility.IsEqualFileName(copiedFolderName, dir.Directory)); if (newNode != null) { newNode.Expanding(); IncludeFileInProject.IncludeDirectoryNode(newNode, true); } } finally { AbstractProjectBrowserTreeNode.ShowAll = false; } node.RecreateSubNodes(); } } }