Beispiel #1
0
		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;
             }
         }
     }
 }
Beispiel #3
0
        DirectoryNode CreatePropertiesFolderNodeWithParentProjectNodeCalledViews()
        {
            var projectNode    = CreateProjectNode(@"d:\projects\MyProject\Views.csproj", "Views");
            var propertiesNode = new DirectoryNode(@"d:\projects\MyProject\Properties");

            propertiesNode.AddTo(projectNode);
            return(propertiesNode);
        }
Beispiel #4
0
		DirectoryNode CreateControllersChildFolderNode()
		{
			DirectoryNode controllersNode = CreateControllersFolderNode();
			
			string path = @"d:\projects\MyAspNetProject\Controllers\Child";
			var childNode = new DirectoryNode(path);
			childNode.AddTo(controllersNode);
			return childNode;
		}
Beispiel #5
0
        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;
		}