public IEnumerable<Project> ShowProjectSelectorWindow( string instructionText, IPackage package, Predicate<Project> checkedStateSelector, Predicate<Project> enabledStateSelector) { if (!_uiDispatcher.CheckAccess()) { // Use Invoke() here to block the worker thread object result = _uiDispatcher.Invoke( new Func<string, IPackage, Predicate<Project>, Predicate<Project>, IEnumerable<Project>>(ShowProjectSelectorWindow), instructionText, package, checkedStateSelector, enabledStateSelector); return (IEnumerable<Project>)result; } var viewModel = new SolutionExplorerViewModel( ServiceLocator.GetInstance<DTE>().Solution, package, checkedStateSelector, enabledStateSelector); // only show the solution explorer window if there is at least one compatible project if (viewModel.HasProjects) { var window = new SolutionExplorer() { DataContext = viewModel }; window.InstructionText.Text = instructionText; bool? dialogResult = null; using (NuGetEventTrigger.Instance.TriggerEventBeginEnd( NuGetEvent.SelectProjectDialogBegin, NuGetEvent.SelectProjectDialogEnd)) { dialogResult = window.ShowModal(); } if (dialogResult ?? false) { return viewModel.GetSelectedProjects(); } else { return null; } } else { IEnumerable<FrameworkName> supportedFrameworks = package.GetSupportedFrameworks() .Where(name => name != null && name != VersionUtility.UnsupportedFrameworkName); string errorMessage = supportedFrameworks.Any() ? String.Format( CultureInfo.CurrentCulture, Resources.Dialog_NoCompatibleProject, package.Id, Environment.NewLine + String.Join(Environment.NewLine, supportedFrameworks)) : String.Format( CultureInfo.CurrentCulture, Resources.Dialog_NoCompatibleProjectNoFrameworkNames, package.Id); // if there is no project compatible with the selected package, show an error message and return MessageHelper.ShowWarningMessage(errorMessage, title: null); return null; } }
public IEnumerable <Project> ShowProjectSelectorWindow( string instructionText, IPackage package, Predicate <Project> checkedStateSelector, Predicate <Project> enabledStateSelector) { if (!_uiDispatcher.CheckAccess()) { // Use Invoke() here to block the worker thread object result = _uiDispatcher.Invoke( new Func <string, IPackage, Predicate <Project>, Predicate <Project>, IEnumerable <Project> >(ShowProjectSelectorWindow), instructionText, package, checkedStateSelector, enabledStateSelector); return((IEnumerable <Project>)result); } var viewModel = new SolutionExplorerViewModel( ServiceLocator.GetInstance <DTE>().Solution, package, checkedStateSelector, enabledStateSelector); // only show the solution explorer window if there is at least one compatible project if (viewModel.HasProjects) { var window = new SolutionExplorer() { DataContext = viewModel }; window.InstructionText.Text = instructionText; bool?dialogResult = null; using (NuGetEventTrigger.Instance.TriggerEventBeginEnd( NuGetEvent.SelectProjectDialogBegin, NuGetEvent.SelectProjectDialogEnd)) { dialogResult = window.ShowModal(); } if (dialogResult ?? false) { return(viewModel.GetSelectedProjects()); } else { return(null); } } else { IEnumerable <FrameworkName> supportedFrameworks = package.GetSupportedFrameworks() .Where(name => name != null && name != VersionUtility.UnsupportedFrameworkName); string errorMessage = supportedFrameworks.Any() ? String.Format( CultureInfo.CurrentCulture, Resources.Dialog_NoCompatibleProject, package.Id, Environment.NewLine + String.Join(Environment.NewLine, supportedFrameworks)) : String.Format( CultureInfo.CurrentCulture, Resources.Dialog_NoCompatibleProjectNoFrameworkNames, package.Id); // if there is no project compatible with the selected package, show an error message and return MessageHelper.ShowWarningMessage(errorMessage, title: null); return(null); } }