package LinGUIne.handlers; import java.io.IOException; import javax.inject.Inject; import javax.inject.Named; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.core.di.annotations.Optional; import org.eclipse.e4.ui.services.IServiceConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.widgets.Shell; import LinGUIne.model.Project; import LinGUIne.model.ProjectManager; import LinGUIne.wizards.NewProjectWizard; /** * Handler for creating a new Project. * * @author Kyle Mullins */ public class NewProjectHandler { @Inject @Optional private ProjectManager projectMan; /** * Opens the NewProjectWizard then creates a new Project in the * workspace. * * @param shell The currently active Shell. */ @Execute public IStatus execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) { NewProjectWizard projectWizard = new NewProjectWizard(projectMan); WizardDialog wizardDialog = new WizardDialog(shell, projectWizard); int retval = wizardDialog.open(); if(retval == WizardDialog.OK) { Project newProj = projectWizard.getProject(); newProj.setParentDirectory(projectMan.getWorkspace()); try { newProj.createProjectFiles(); projectMan.addProject(newProj); return Status.OK_STATUS; } catch(IOException ioe) { MessageDialog.openError(shell, "Error", "Could not create " + "Project directory: " + ioe.getMessage()); } } return Status.CANCEL_STATUS; } }