/// <summary> /// Initializes a new instance of the <see cref="SelectProjectsView"/> class. /// </summary> /// <param name="viewModel"> /// The view Model. /// </param> /// <remarks> /// This constructor can be used to use view-model injection. /// </remarks> public SelectProjectsView(SelectProjectsViewModel viewModel) : base(viewModel) { StyleHelper.CreateStyleForwardersForDefaultStyles(Application.Current.Resources, Resources); InitializeComponent(); }
/// <summary> /// Called when the link projects menu item is clicked. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The e.</param> private void OnLinkProjects(object sender, EventArgs e) { Log.Info("Linking projects"); if (!IsSolutionOpenend()) { return; } var serviceLocator = ServiceLocator.Default; var uiVisualizerService = serviceLocator.ResolveType<IUIVisualizerService>(); var configurationService = serviceLocator.ResolveType<IConfigurationService>(); Log.Info("Loading configuration for current solution"); var dte = GetVisualStudio(); var configuration = configurationService.LoadConfigurationForCurrentSolution(); var vm = new SelectProjectsViewModel(dte, dte.Solution.GetAllProjects()); if (uiVisualizerService.ShowDialog(vm) ?? false) { Log.Info("Linking projects dialog returned success, linking projects"); var pleaseWaitService = serviceLocator.ResolveType<IPleaseWaitService>(); pleaseWaitService.Show("Linking projects, please be patient"); var activeProject = vm.RootProject; var projectsToLink = (from selectableProject in vm.SelectableProjects where selectableProject.IsChecked select selectableProject.Project).ToArray(); var linker = new Linker(activeProject, projectsToLink, configuration); linker.RemoveMissingFiles = vm.RemoveMissingFiles; linker.LinkFiles(); Log.Info("Linked projects"); pleaseWaitService.Hide(); } }