Beispiel #1
0
        public static void UpdateFolderStructure(TreeNode parentFolderNode, DirectoryInfo di, List <string> invalidFilenames, List <string> extensionsToLoad)
        {
            var subNodes   = parentFolderNode.Nodes;
            var subFolders = di.GetDirectories();

            foreach (var subFolder in subFolders)
            {
                if (!subNodes.ContainsKey(subFolder.Name) || subNodes[subFolder.Name].ImageIndex != 1)
                {
                    var folderNode = new TreeNode(subFolder.Name)
                    {
                        ImageIndex = 1, SelectedImageIndex = 1, Tag = subFolder.FullName, Name = subFolder.Name
                    };
                    parentFolderNode.Nodes.Add(folderNode);

                    UpdateFolderStructure(folderNode, subFolder, invalidFilenames, extensionsToLoad);
                }
                else
                {
                    UpdateFolderStructure(subNodes[subFolder.Name], subFolder, invalidFilenames, extensionsToLoad);
                }
            }

            foreach (FileInfo fiChild in di.GetFiles("*.*", SearchOption.TopDirectoryOnly))
            {
                if (WebResource.IsInvalidName(fiChild.Name) || !WebResource.ValidExtensions.Contains(fiChild.Extension.Remove(0, 1).ToLower()))
                {
                    invalidFilenames.Add(fiChild.FullName);
                    continue;
                }

                if (extensionsToLoad == null || extensionsToLoad.Contains(fiChild.Extension))
                {
                    if (!subNodes.ContainsKey(fiChild.Name) || subNodes[fiChild.Name].ImageIndex <= 1)
                    {
                        CreateWebResourceNode(fiChild, parentFolderNode);
                    }
                    else
                    {
                        var wr = (WebResource)subNodes[fiChild.Name].Tag;
                        wr.WebResourceEntity["content"] = Convert.ToBase64String(File.ReadAllBytes(wr.FilePath));
                    }
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Create a TreeView folder structure depending on the DirectoryInfo
        /// element in parameters
        /// </summary>
        /// <param name="parentFolderNode">Current TreeNode</param>
        /// <param name="di">Current physical directory info</param>
        /// <param name="invalidFilenames"></param>
        /// <param name="inValidWrNameRegex"></param>
        public static void CreateFolderStructure(TreeNode parentFolderNode, DirectoryInfo di, List <string> invalidFilenames, List <string> extensionsToLoad)
        {
            foreach (DirectoryInfo diChild in di.GetDirectories())
            {
                if (WebResource.IsInvalidName(diChild.Name))
                {
                    invalidFilenames.Add(diChild.FullName);
                    continue;
                }

                // If the current physical directory has sub directories or
                // javascript file, a new TreeNode has to be created
                if (diChild.GetDirectories().Length > 0 || diChild.GetFiles("*.*").Length > 0)
                {
                    var folderNode = new TreeNode(diChild.Name)
                    {
                        ImageIndex = 1, SelectedImageIndex = 1
                    };

                    parentFolderNode.Nodes.Add(folderNode);

                    CreateFolderStructure(folderNode, diChild, invalidFilenames, extensionsToLoad);
                }
            }

            foreach (FileInfo fiChild in di.GetFiles("*.*", SearchOption.TopDirectoryOnly))
            {
                if (WebResource.IsInvalidName(fiChild.Name) || !WebResource.ValidExtensions.Contains(fiChild.Extension.Remove(0, 1).ToLower()))
                {
                    invalidFilenames.Add(fiChild.FullName);
                    continue;
                }

                if (extensionsToLoad.Contains(fiChild.Extension))
                {
                    // Create a TreeNode for each javascript file
                    CreateWebResourceNode(fiChild, parentFolderNode);
                }
            }
        }
Beispiel #3
0
        internal static void AddExistingWebResource(TreeView tv, Control mainControl)
        {
            TreeNode selectedNode = tv.SelectedNode;
            TreeNode tempNode     = selectedNode;

            string name = tempNode.Text;

            while (tempNode.Parent != null)
            {
                name     = string.Format("{0}/{1}", tempNode.Parent.Text, name);
                tempNode = tempNode.Parent;
            }

            var ofd = new OpenFileDialog {
                Multiselect = true, Title = "Select file(s) for web resource(s)"
            };

            if (ofd.ShowDialog(mainControl) == DialogResult.OK)
            {
                var errorList = new List <string>();

                foreach (string fileName in ofd.FileNames)
                {
                    var fi = new FileInfo(fileName);

                    //Test valid characters
                    if (WebResource.IsInvalidName(fi.Name))
                    {
                        errorList.Add(fileName);
                    }
                    else
                    {
                        var webResource = new Entity("webresource");
                        webResource["content"]         = Convert.ToBase64String(File.ReadAllBytes(fileName));
                        webResource["webresourcetype"] =
                            new OptionSetValue(WebResource.GetTypeFromExtension(fi.Extension.Remove(0, 1)));
                        webResource["name"]        = string.Format("{0}/{1}", name, fi.Name);
                        webResource["displayname"] = string.Format("{0}/{1}", name, fi.Name);
                        var wr = new WebResource(webResource, fileName);

                        var node = new TreeNode(fi.Name)
                        {
                            ImageIndex =
                                WebResource.GetImageIndexFromExtension(fi.Extension.Remove(0,
                                                                                           1))
                        };
                        node.SelectedImageIndex = node.ImageIndex;
                        node.Tag = wr;

                        selectedNode.Nodes.Add(node);

                        selectedNode.Expand();
                    }

                    if (errorList.Count > 0)
                    {
                        MessageBox.Show("Some file have not been added since their name does not match naming policy\r\n"
                                        + string.Join("\r\n", errorList));
                    }
                }
            }

            tv.TreeViewNodeSorter = new NodeSorter();
            tv.Sort();
        }