/// <summary> /// Initializes a new instance of the <see cref="ProjectsViewModel" /> class. /// </summary> /// <param name="visualStudioService">The visual studio service.</param> /// <param name="settingsService">The settings service.</param> /// <param name="projectFactory">The project factory.</param> /// <param name="fileSystem">The file system.</param> /// <param name="messageBoxService">The message box service.</param> /// <param name="folderBrowserDialogService">The folder browser dialog service.</param> /// <param name="viewModelAndViewsFactory">The view model and views factory.</param> public ProjectsViewModel( IVisualStudioService visualStudioService, ISettingsService settingsService, IProjectFactory projectFactory, IFileSystem fileSystem, IMessageBoxService messageBoxService, IFolderBrowserDialogService folderBrowserDialogService, IViewModelAndViewsFactory viewModelAndViewsFactory) : base(settingsService) { TraceService.WriteLine("ProjectsViewModel::Constructor Start"); this.settingsService = settingsService; this.fileSystem = fileSystem; this.messageBoxService = messageBoxService; this.folderBrowserDialogService = folderBrowserDialogService; this.projects = new ObservableCollection<SelectableItemViewModel<ProjectTemplateInfo>>(); IEnumerable<ProjectTemplateInfo> projectTemplateInfos = projectFactory.GetAllowedProjects(); foreach (SelectableItemViewModel<ProjectTemplateInfo> viewModel in projectTemplateInfos .Select(projectTemplateInfo => new SelectableItemViewModel<ProjectTemplateInfo>(projectTemplateInfo, projectTemplateInfo.PreSelected))) { this.projects.Add(viewModel); } //// set the defaults! this.Project = visualStudioService.GetDefaultProjectName(); string defaultPath = this.settingsService.DefaultProjectsPath; //// if we are already in the solution disable project name and path. this.solutionAlreadyCreated = this.Project.Length > 0; this.Path = string.IsNullOrEmpty(defaultPath) == false ? defaultPath : visualStudioService.DTEService.GetDefaultProjectsLocation(); this.useNuget = this.settingsService.UseNugetForProjectTemplates; this.viewTypes = viewModelAndViewsFactory.GetAvailableViewTypes(); this.selectedViewType = this.settingsService.SelectedViewType; TraceService.WriteLine("ProjectsViewModel::Constructor End"); }