private void LoadWebresources(LoadResourcesSettings settings)
        {
            tv.Enabled = false;
            tv.OrganizationMajorVersion = ConnectionDetail?.OrganizationMajorVersion ?? -1;
            tv.Service = Service;

            CloseOpenedContents();

            WorkAsync(new WorkAsyncInfo("Loading web resources...", e =>
            {
                var request  = new RetrieveProvisionedLanguagesRequest();
                var response = (RetrieveProvisionedLanguagesResponse)Service.Execute(request);

                var args = (LoadResourcesSettings)e.Argument;

                var items = Webresource.RetrieveWebresources(this, Service, args.Solution?.Id ?? Guid.Empty,
                                                             args.TypesToload,
                                                             args.FilterByLcid,
                                                             response.RetrieveProvisionedLanguages);
                e.Result = items;

                WebresourcesCache.Clear();

                foreach (var item in items)
                {
                    WebresourcesCache.Add(item);
                }
            })
            {
                AsyncArgument    = settings,
                PostWorkCallBack = e =>
                {
                    tv.Enabled = true;
                    tv.DisplayNodes((IEnumerable <Webresource>)e.Result, settings.Solution);

                    if (settings.Solution != null)
                    {
                        tsmiReloadFromCurrentSolution.Text = string.Format(
                            tsmiReloadFromCurrentSolution.Tag.ToString(),
                            settings.Solution.GetAttributeValue <string>("friendlyname"),
                            settings.Solution.GetAttributeValue <string>("version"));
                        tsmiReloadFromCurrentSolution.Visible = true;
                    }
                    else
                    {
                        tsmiReloadFromCurrentSolution.Visible = false;
                    }
                }
            });
        }
        public void LoadWebresourcesGeneral(bool fromSolution)
        {
            lastSettings = new LoadResourcesSettings();

            // If from solution, display the solution picker so that user can
            // select the solution containing the web resources he wants to
            // display
            if (fromSolution)
            {
                var sPicker = new SolutionPicker(Service)
                {
                    StartPosition = FormStartPosition.CenterParent
                };
                if (sPicker.ShowDialog(ParentForm) == DialogResult.OK)
                {
                    lastSettings.Solution            = sPicker.SelectedSolution;
                    lastSettings.LoadAllWebresources = sPicker.LoadAllWebresources;

                    if (lastSettings.LoadAllWebresources)
                    {
                        lastSettings.FilterByLcid = sPicker.FilterByLcid;
                    }
                }
                else
                {
                    return;
                }
            }

            if (!lastSettings.LoadAllWebresources)
            {
                // Display web resource types selection dialog
                var dialog = new WebResourceTypeSelectorDialog(ConnectionDetail?.OrganizationMajorVersion ?? -1);
                if (dialog.ShowDialog(ParentForm) == DialogResult.OK)
                {
                    lastSettings.TypesToload  = dialog.TypesToLoad;
                    lastSettings.FilterByLcid = dialog.FilterByLcid;
                }
                else
                {
                    return;
                }
            }

            LoadWebresources(lastSettings);
        }