/// <summary> /// Create an item (script file or folder) on disk depending on specifed /// TreeNode /// </summary> /// <param name="node">TreeNode element</param> /// <param name="folderPath">Current physical path</param> public static void CreateItem(TreeNode node, string folderPath) { // If current node has child, it is a folder, not a script if (node.Nodes.Count > 0) { var doContinue = node.Nodes.Cast <TreeNode>().Any(childNode => childNode.Checked); // Check if current node has child nodes checked. If not, no need // to create a folder on disk if (doContinue) { Directory.CreateDirectory(Path.Combine(folderPath, node.Text)); foreach (TreeNode childNode in node.Nodes) { if (node.Checked) { CreateItem(childNode, Path.Combine(folderPath, node.Text)); } } } } else { // If checked, create a script file on disk if (node.Checked) { var webResource = ((WebResource)node.Tag).WebResourceEntity; using (var writer = new StreamWriter(Path.Combine(folderPath, node.Text), false)) { if (webResource.Contains("content")) { writer.Write(WebResourceManager.GetContentFromBase64String(webResource["content"].ToString())); } else { writer.WriteLine(string.Empty); } } } } }