DirectoryNode CreatePropertiesFolderNodeWithParentProjectNodeCalledControllers() { var projectNode = CreateProjectNode(@"d:\projects\MyProject\Controllers.csproj", "Controllers"); var propertiesNode = new DirectoryNode(@"d:\projects\MyProject\Properties"); propertiesNode.AddTo(projectNode); return propertiesNode; }
public void AddParentFolder(string virtualName, string relativeDirectoryPath, Dictionary <string, DirectoryNode> directoryNodeList) { if ((relativeDirectoryPath.Length == 0) || (string.Compare(virtualName, 0, relativeDirectoryPath, 0, relativeDirectoryPath.Length, StringComparison.InvariantCultureIgnoreCase) == 0)) { int pos = virtualName.IndexOf('/', relativeDirectoryPath.Length + 1); if (pos > 0) { string subFolderName = virtualName.Substring(relativeDirectoryPath.Length, pos - relativeDirectoryPath.Length); DirectoryNode node; if (directoryNodeList.TryGetValue(subFolderName, out node)) { if (node.FileNodeStatus == FileNodeStatus.None) { node.FileNodeStatus = FileNodeStatus.InProject; } } else { node = new DirectoryNode(Path.Combine(this.Directory, subFolderName), FileNodeStatus.Missing); node.AddTo(this); directoryNodeList[subFolderName] = node; } } } }
DirectoryNode CreatePropertiesFolderNodeWithParentProjectNodeCalledViews() { var projectNode = CreateProjectNode(@"d:\projects\MyProject\Views.csproj", "Views"); var propertiesNode = new DirectoryNode(@"d:\projects\MyProject\Properties"); propertiesNode.AddTo(projectNode); return(propertiesNode); }
DirectoryNode CreateControllersChildFolderNode() { DirectoryNode controllersNode = CreateControllersFolderNode(); string path = @"d:\projects\MyAspNetProject\Controllers\Child"; var childNode = new DirectoryNode(path); childNode.AddTo(controllersNode); return childNode; }
DirectoryNode CreateViewsChildFolderNode() { DirectoryNode viewsNode = CreateViewsFolderNode(); string path = @"d:\projects\MyAspNetProject\Views\Child"; var childNode = new DirectoryNode(path); childNode.AddTo(viewsNode); return(childNode); }
void CreateSelectedFolderNode(string folder) { projectForSelectedFolder = TestableProject.CreateProject(); projectNode = new ProjectNode(projectForSelectedFolder); directoryNode = new DirectoryNode(folder); directoryNode.AddTo(projectNode); selectedFolderNode = new SelectedFolderNodeInProjectsView(directoryNode); }
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); }
protected override void Initialize() { Dictionary <string, FileNode> fileNodeDictionary = new Dictionary <string, FileNode>((IEqualityComparer <string>)StringComparer.InvariantCultureIgnoreCase); Dictionary <string, DirectoryNode> directoryNodeList = new Dictionary <string, DirectoryNode>((IEqualityComparer <string>)StringComparer.InvariantCultureIgnoreCase); string relativeDirectoryPath = (this.RelativePath.Length <= 0) ? string.Empty : (this.RelativePath.Replace('\\', '/') + "/"); foreach (FileProjectItem item in this.Project.Items.OfType <FileProjectItem>()) { string virtualName = item.VirtualName.Replace('\\', '/'); if (virtualName.EndsWith("/", StringComparison.Ordinal)) { virtualName = virtualName.Substring(0, virtualName.Length - 1); } string fileName = Path.GetFileName(virtualName); if (!string.Equals(virtualName, relativeDirectoryPath + fileName, StringComparison.InvariantCultureIgnoreCase)) { this.AddParentFolder(virtualName, relativeDirectoryPath, directoryNodeList); // continue; } if (item.ItemType == ItemType.Folder || item.ItemType == ItemType.WebReferences) { DirectoryNode newDirectoryNode = DirectoryNodeFactory.CreateDirectoryNode(this, this.Project, fileName); if (!System.IO.Directory.Exists(item.FileName)) { newDirectoryNode.FileNodeStatus = FileNodeStatus.Missing; } newDirectoryNode.ProjectItem = item; newDirectoryNode.AddTo(this); directoryNodeList[fileName] = newDirectoryNode; } else { FileNode fileNode = new FileNode(item.FileName); if (!File.Exists(item.FileName)) { fileNode.FileNodeStatus = FileNodeStatus.Missing; } fileNode.ProjectItem = item; fileNodeDictionary[fileName] = fileNode; fileNode.AddTo(this); } } // Add files found in file system if (System.IO.Directory.Exists(this.Directory)) { foreach (string subDirectory in System.IO.Directory.GetDirectories(this.Directory)) { string filename = Path.GetFileName(subDirectory); if (filename != ".svn") { DirectoryNode node; if (directoryNodeList.TryGetValue(filename, out node)) { if (node.FileNodeStatus == FileNodeStatus.None) { node.FileNodeStatus = FileNodeStatus.InProject; } } else { node = DirectoryNodeFactory.CreateDirectoryNode(this, this.Project, subDirectory); node.AddTo(this); } } } foreach (string fullpath in System.IO.Directory.GetFiles(this.Directory)) { string file = Path.GetFileName(fullpath); FileNode node; if (fileNodeDictionary.TryGetValue(file, out node)) { if (node.FileNodeStatus == FileNodeStatus.None) { node.FileNodeStatus = FileNodeStatus.InProject; } } else { node = new FileNode(file); node.AddTo(this); } } } }
public static void CopyDirectory(string directoryName, DirectoryNode node, bool includeInProject) { directoryName = Path.GetFullPath(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); } } } } FileUtility.DeepCopy(directoryName, copiedFileName, true); DirectoryNode newNode = new DirectoryNode(copiedFileName); newNode.AddTo(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 static void CopyDirectory(string directoryName, DirectoryNode node, bool includeInProject) { directoryName = Path.GetFullPath(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); } } } } FileUtility.DeepCopy(directoryName, copiedFileName, true); DirectoryNode newNode = new DirectoryNode(copiedFileName); newNode.AddTo(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); } } } } }
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; }