示例#1
0
        /// <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);
                        }
                    }
                }
            }
        }