/// <summary> /// Recursively copies all of the child file nodes from the source parent to the destination parent. Also copies the physical files. /// </summary> /// <param name="sourceParent">The node to copy from.</param> /// <param name="destinationProject">The project to place the copied nodes into.</param> /// <param name="destinationParent">The node to copy to.</param> private bool CopyNodeFiles(FolderNode sourceParent, Project destinationProject, FolderNode destinationParent) { bool canceled; foreach (Node sourceNode in sourceParent.Children) { if (sourceNode is FileNode) { string fileName = Path.GetFileName(sourceNode.AbsolutePath); string destinationPath = Path.Combine(destinationParent.AbsoluteDirectory, fileName); Node addedNode = destinationProject.AddCopyOfFile(sourceNode.AbsolutePath, destinationPath, out canceled); if (addedNode == null || canceled) { return(false); } } else if (sourceNode is FolderNode && !(sourceNode is ReferenceFolderNode)) { FolderNode destNode = destinationProject.CreateAndAddFolder(destinationParent, sourceNode.Caption); // Recure return(this.CopyNodeFiles((FolderNode)sourceNode, destinationProject, destNode)); } } return(true); }
/// <summary> /// Recursively copies all of the child file nodes from the source parent to the destination parent. Also copies the physical files. /// </summary> /// <param name="sourceParent">The node to copy from.</param> /// <param name="destinationProject">The project to place the copied nodes into.</param> /// <param name="destinationParent">The node to copy to.</param> private bool CopyNodeFiles(FolderNode sourceParent, Project destinationProject, FolderNode destinationParent) { bool canceled; foreach (Node sourceNode in sourceParent.Children) { if (sourceNode is FileNode) { string fileName = Path.GetFileName(sourceNode.AbsolutePath); string destinationPath = Path.Combine(destinationParent.AbsoluteDirectory, fileName); Node addedNode = destinationProject.AddCopyOfFile(sourceNode.AbsolutePath, destinationPath, out canceled); if (addedNode == null || canceled) { return false; } } else if (sourceNode is FolderNode && !(sourceNode is ReferenceFolderNode)) { FolderNode destNode = destinationProject.CreateAndAddFolder(destinationParent, sourceNode.Caption); // Recure return this.CopyNodeFiles((FolderNode)sourceNode, destinationProject, destNode); } } return true; }