/**
* Copyright (c) 2009-2011, The HATS Consortium. All rights reserved.
* This file is licensed under the terms of the Modified BSD License.
*/
package org.absmodels.abs.plugin.wizards;
import static org.absmodels.abs.plugin.util.Constants.ABSPERSPECTIVE_ID;
import static org.absmodels.abs.plugin.util.Constants.NATURE_ID;
import java.io.File;
import org.absmodels.abs.plugin.util.UtilityFunctions;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.dialogs.MessageDialog;
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;
/**
* Wizard for creating a new ABS project
* @author cseise, mweber
*
*/
public class NewABSProjectWizard extends Wizard implements INewWizard {
private IWorkbench workbench;
private WizardNewProjectCreationPage mainPage;
public NewABSProjectWizard() {
}
private final String WIZARD_TITLE = "New ABS project";
private final String WIZARD_DESCRIPTION = "Create a new ABS project";
private final String OVERWRITE_TITLE = "Overwriting project";
private final String OVERWRITE_TEXT = "A .project file exist in the given location" +
" (maybe an existing project). Should the project be overwritten?";
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
this.workbench = workbench;
setWindowTitle("New ABS project");
}
@Override
public void addPages() {
mainPage = new WizardNewProjectCreationPage(WIZARD_TITLE);
mainPage.setDescription(WIZARD_DESCRIPTION);
mainPage.setTitle(WIZARD_TITLE);
addPage(mainPage);
}
@Override
public boolean performFinish() {
try{
IProject project = mainPage.getProjectHandle();
IProjectDescription desc;
File projectFile;
if(!mainPage.useDefaults()){
projectFile = new File(mainPage.getLocationPath().toFile(), ".project");
desc = ResourcesPlugin.getWorkspace().newProjectDescription(mainPage.getProjectName());
desc.setLocation(mainPage.getLocationPath());
} else {
File projectDir = new File(mainPage.getLocationPath().toFile(), mainPage.getProjectName());
projectFile = new File(projectDir, ".project");
desc = ResourcesPlugin.getWorkspace().newProjectDescription(mainPage.getProjectName());
}
if(projectFile.exists()){
boolean overwrite = MessageDialog.
openQuestion(getShell(), OVERWRITE_TITLE,OVERWRITE_TEXT);
if(overwrite)
projectFile.delete();
else
return false;
}
project.create(desc, null);
project.open(null);
desc.setNatureIds(new String[]{NATURE_ID}); //, JavaCore.NATURE_ID});
project.setDescription(desc, null);
workbench.showPerspective(ABSPERSPECTIVE_ID, workbench.getActiveWorkbenchWindow());
return true;
}catch(CoreException ex){
ex.printStackTrace();
UtilityFunctions.showErrorMessage("Could not create new Project: \n"+ex.getLocalizedMessage());
}
return false;
}
}