private void refreshFromDiskToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var selectedItem = tvWebResources.SelectedNode;

            if (selectedItem != null)
            {
                var tag = selectedItem.Tag;
                if (tag is string)
                {
                    invalidFilenames = new List<string>();

                    TreeViewHelper.UpdateFolderStructure(selectedItem, new DirectoryInfo(tag.ToString()),invalidFilenames, null);

                    if (invalidFilenames.Count > 0)
                    {
                        var errorDialog = new InvalidFileListDialog(invalidFilenames)
                        {
                            StartPosition =
                                FormStartPosition.CenterParent
                        };
                        errorDialog.ShowDialog(this);
                    }
                }
                else
                {
                    var resource = tag as WebResource;
                    if (resource != null)
                    {
                        var wr = resource;
                        wr.WebResourceEntity["content"] = Convert.ToBase64String(File.ReadAllBytes(wr.FilePath));
                        TvWebResourcesAfterSelect(tvWebResources, new TreeViewEventArgs(selectedItem));
                    }
                }
            }
        }
        private void TsmiRefreshFromDiskClick(object sender, EventArgs e)
        {
            try
            {
                var invalidFilesList = webresourceTreeView1.RefreshFromDisk();

                if (invalidFilesList.Any())
                {
                    var errorDialog = new InvalidFileListDialog(invalidFilesList)
                    {
                        StartPosition = FormStartPosition.CenterParent
                    };
                    errorDialog.ShowDialog(this);
                }
            }
            catch (Exception error)
            {
                MessageBox.Show(ParentForm,
                    error.Message,
                    Resources.MessageBox_ErrorTitle,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }
        }
        private void LoadWebResourcesToolStripMenuItem1Click(object sender, EventArgs e)
        {
            try
            {
                // Let the user decides where to find files
                // Let the user decides where to find files
                var fbd = new CustomFolderBrowserDialog(true);

                if (!string.IsNullOrEmpty(currentFolderForFiles))
                {
                    fbd.FolderPath = currentFolderForFiles;
                }

                if (fbd.ShowDialog() == DialogResult.OK)
                {
                    var extensionsToLoad = fbd.ExtensionsToLoad;
                    currentFolderForFiles = fbd.FolderPath;
                    tvWebResources.Nodes.Clear();
                    invalidFilenames = new List<string>();

                    var di = new DirectoryInfo(fbd.FolderPath);

                    foreach (DirectoryInfo diChild in di.GetDirectories("*_", SearchOption.TopDirectoryOnly))
                    {
                        if (WebResource.IsInvalidName(diChild.Name))
                        {
                            invalidFilenames.Add(diChild.FullName);
                            continue;
                        }

                        var rootFolderNode = new TreeNode(diChild.Name) { ImageIndex = 0, Tag = diChild.FullName };

                        tvWebResources.Nodes.Add(rootFolderNode);

                        TreeViewHelper.CreateFolderStructure(rootFolderNode, diChild, invalidFilenames, extensionsToLoad);
                    }

                    foreach (FileInfo fiChild in di.GetFiles("*.*", SearchOption.TopDirectoryOnly))
                    {
                        if (fiChild.Extension.Length == 0)
                        {
                            invalidFilenames.Add(fiChild.FullName);
                            continue;
                        }

                        if (WebResource.IsInvalidName(fiChild.Name) || !WebResource.ValidExtensions.Contains(fiChild.Extension.Remove(0, 1).ToLower()))
                        {
                            invalidFilenames.Add(fiChild.FullName);
                            continue;
                        }

                        if (extensionsToLoad.Contains(fiChild.Extension))
                        {
                            TreeViewHelper.CreateWebResourceNode(fiChild, tvWebResources);
                        }
                    }

                    tvWebResources.ExpandAll();
                    tvWebResources.TreeViewNodeSorter = new NodeSorter();
                    tvWebResources.Sort();

                    tsbClear.Visible = true;

                    if (invalidFilenames.Count > 0)
                    {
                        var errorDialog = new InvalidFileListDialog(invalidFilenames)
                        {
                            StartPosition =
                                FormStartPosition.CenterParent
                        };
                        errorDialog.ShowDialog(this);
                    }
                }
            }
            catch (Exception error)
            {
                MessageBox.Show(this, "Error while loading web resources: " + error.Message, "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void TsmiLoadWebResourcesFromDiskClick(object sender, EventArgs e)
        {
            try
            {
                // Let the user decides where to find files
                var fbd = new CustomFolderBrowserDialog(true);

                if (!string.IsNullOrEmpty(currentFolderForFiles))
                {
                    fbd.FolderPath = currentFolderForFiles;
                }

                if (fbd.ShowDialog() == DialogResult.OK)
                {
                    currentFolderForFiles = fbd.FolderPath;
                    Options.Instance.Save();

                    var invalidFilenames = webresourceTreeView1.LoadWebResourcesFromDisk(fbd.FolderPath, fbd.ExtensionsToLoad);

                    if (invalidFilenames.Count > 0)
                    {
                        var errorDialog = new InvalidFileListDialog(invalidFilenames)
                        {
                            StartPosition =
                                FormStartPosition.CenterParent
                        };
                        errorDialog.ShowDialog(this);
                    }
                }
            }
            catch (Exception error)
            {
                MessageBox.Show(this, "Error while loading web resources: " + error.Message, Resources.MessageBox_ErrorTitle,
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }