package org.objectstyle.wolips.wizards.template; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.widgets.Composite; import org.objectstyle.wolips.templateengine.ProjectTemplate; import org.objectstyle.wolips.wizards.NewWOProjectWizard; public class NewProjectFromTemplateWizard extends NewWOProjectWizard { private SelectTemplateWizardPage _selectTemplatePage; private TemplateInputsWizardPage _templateInputsPage; public NewProjectFromTemplateWizard() { // DO NOTHING } public NewProjectFromTemplateWizard(String projectTemplateName) { setProjectTemplate(ProjectTemplate.loadProjectTemplateNamed(null, ProjectTemplate.PROJECT_TEMPLATES, projectTemplateName)); } @Override protected WizardType getWizardType() { return WizardType.NEWPROJ_TEMPLATE_WIZARD; } @Override public void createPageControls(Composite pageContainer) { super.createPageControls(pageContainer); } @Override public void addPages() { ProjectTemplate projectTemplate = getProjectTemplate(); if (projectTemplate == null) { _selectTemplatePage = new SelectTemplateWizardPage(); addPage(_selectTemplatePage); } _templateInputsPage = new TemplateInputsWizardPage(); if (projectTemplate != null) { _templateInputsPage.setProjectTemplate(projectTemplate); } if (projectTemplate == null || projectTemplate.getInputs().size() > 0) { addPage(_templateInputsPage); } super.addPages(); } @Override public IWizardPage getNextPage(IWizardPage page) { IWizardPage currentPage = page; if (currentPage == _selectTemplatePage) { ProjectTemplate projectTemplate = _selectTemplatePage.getSelectedProjectTemplate(); setProjectTemplate(projectTemplate); if (projectTemplate != null && projectTemplate.getInputs().size() == 0) { currentPage = _templateInputsPage; } } IWizardPage nextPage = super.getNextPage(currentPage); if (nextPage == _templateInputsPage) { _templateInputsPage.setProjectTemplate(getProjectTemplate()); } return nextPage; } @Override protected void postInstallTemplate(IProject project, IProgressMonitor progressMonitor) throws Exception { // DO NOTHING } }