public void CreateProject(TemplateSelectionOptions templateOptions,
                                  ProjectDetails projectDetails, GitOptions gitOptions = null, object miscOptions = null)
        {
            PrintToTestRunner(templateOptions, projectDetails, gitOptions, miscOptions);
            ReproStep("Create a new project", templateOptions, projectDetails, gitOptions, miscOptions);
            var newProject = new NewProjectController();

            if (projectDetails.AddProjectToExistingSolution)
            {
                newProject.Open(projectDetails.SolutionName);
            }
            else
            {
                newProject.Open();
            }
            TakeScreenShot("Open");

            OnSelectTemplate(newProject, templateOptions);

            OnEnterTemplateSpecificOptions(newProject, projectDetails.ProjectName, miscOptions);

            OnEnterProjectDetails(newProject, projectDetails, gitOptions, miscOptions);

            OnClickCreate(newProject, projectDetails);

            FoldersToClean.Add(projectDetails.SolutionLocation);
        }
Пример #2
0
 public NewProject(Main frmMain)
 {
     InitializeComponent();
     frmForm          = frmMain;
     ProjectDirectory = "";
     ProjectName      = "";
     controller       = new NewProjectController(this);
 }
 protected virtual void OnClickCreate(NewProjectController newProject, ProjectDetails projectDetails)
 {
     if (projectDetails.AddProjectToExistingSolution)
     {
         newProject.Create();
     }
     else
     {
         Session.RunAndWaitForTimer(() => newProject.Create(), "Ide.Shell.SolutionOpened");
     }
 }
        protected virtual void OnEnterProjectDetails(NewProjectController newProject, ProjectDetails projectDetails,
                                                     GitOptions gitOptions = null, object miscOptions = null)
        {
            if (!newProject.SetProjectName(projectDetails.ProjectName, projectDetails.AddProjectToExistingSolution))
            {
                throw new CreateProjectException(string.Format("Failed at entering ProjectName as '{0}'", projectDetails.ProjectName));
            }

            if (!string.IsNullOrEmpty(projectDetails.SolutionName))
            {
                if (!newProject.SetSolutionName(projectDetails.SolutionName, projectDetails.AddProjectToExistingSolution))
                {
                    throw new CreateProjectException(string.Format("Failed at entering SolutionName as '{0}'", projectDetails.SolutionName));
                }
            }

            if (!string.IsNullOrEmpty(projectDetails.SolutionLocation))
            {
                if (!newProject.SetSolutionLocation(projectDetails.SolutionLocation))
                {
                    throw new CreateProjectException(string.Format("Failed at entering SolutionLocation as '{0}'", projectDetails.SolutionLocation));
                }
            }

            if (!newProject.CreateProjectInSolutionDirectory(projectDetails.ProjectInSolution))
            {
                throw new CreateProjectException(string.Format("Failed at entering ProjectInSolution as '{0}'", projectDetails.ProjectInSolution));
            }

            if (gitOptions != null && !projectDetails.AddProjectToExistingSolution)
            {
                if (!newProject.UseGit(gitOptions))
                {
                    throw new CreateProjectException(string.Format("Failed at setting Git as - '{0}'", gitOptions));
                }
            }

            TakeScreenShot("AfterProjectDetailsFilled");
        }
        protected virtual void OnSelectTemplate(NewProjectController newProject, TemplateSelectionOptions templateOptions)
        {
            if (!newProject.SelectTemplateType(templateOptions.CategoryRoot, templateOptions.Category))
            {
                throw new TemplateSelectionException(string.Format("Failed to select Category '{0}' under '{1}'",
                                                                   templateOptions.Category, templateOptions.CategoryRoot));
            }
            TakeScreenShot("TemplateCategorySelected");

            if (!newProject.SelectTemplate(templateOptions.TemplateKindRoot, templateOptions.TemplateKind))
            {
                throw new TemplateSelectionException(string.Format("Failed to select Template '{0}' under '{1}'",
                                                                   templateOptions.TemplateKind, templateOptions.TemplateKindRoot));
            }
            TakeScreenShot("TemplateSelected");

            if (!newProject.Next())
            {
                throw new TemplateSelectionException("Clicking Next failed after selecting template");
            }
            TakeScreenShot("NextAfterTemplateSelected");
        }
 protected virtual void OnEnterTemplateSpecificOptions(NewProjectController newProject, string projectName, object miscOptions)
 {
 }