package monolipse.ui.wizards; import monolipse.core.AssemblySourceLanguage; import monolipse.core.BooCore; import monolipse.core.IMonoProject; import monolipse.ui.BooUI; import monolipse.ui.IBooUIConstants; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRunnable; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; public class NewBooProjectWizard extends Wizard implements INewWizard { private WizardNewProjectCreationPage _projectPage; public boolean performFinish() { try { ResourcesPlugin.getWorkspace().run(projectCreation(), null); } catch (CoreException e) { e.printStackTrace(); return false; } return true; } private IWorkspaceRunnable projectCreation() { return new IWorkspaceRunnable() { public void run(IProgressMonitor monitor) throws CoreException { IProject project = _projectPage.getProjectHandle(); project.create(monitor); project.open(monitor); IMonoProject booProject = BooCore.createProject(project, monitor); // TODO: allow user to select which language to use booProject.addAssemblySource(new Path("src").append(project.getName()), AssemblySourceLanguage.BOO); } }; } public void init(IWorkbench workbench, IStructuredSelection selection) { setDefaultPageImageDescriptor(BooUI.getImageDescriptor(IBooUIConstants.PROJECT)); setWindowTitle("New Boo Project"); } public void addPages() { super.addPages(); _projectPage = new WizardNewProjectCreationPage("basicNewProjectPage"); _projectPage.setTitle("Create a Boo project"); _projectPage.setDescription("Create a new Boo project in the workspace or in a external location"); addPage(_projectPage); } }