blob: 9da72718e2fc7383818ef119860ccd29e7d4d9ba [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2016 GianMaria Romanato
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.virgo.ide.ui.wizards;
import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.pde.internal.ui.wizards.NewWizard;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.statushandlers.StatusManager;
import org.eclipse.virgo.ide.facet.core.CreatePlanProjectOperation;
import org.eclipse.virgo.ide.ui.ServerIdeUiPlugin;
public class NewPlanProjectWizard extends NewWizard {
WizardNewProjectCreationPage mainPage;
private NewPlanProjectFilePage planPage;
public NewPlanProjectWizard() {
super();
setWindowTitle(Messages.NewPlanProjectWizard_title);
setDefaultPageImageDescriptor(ServerIdeUiPlugin.getImageDescriptor("full/wizban/wizban-par.png")); //$NON-NLS-1$
setNeedsProgressMonitor(true);
}
/**
* {@inheritDoc}
*/
@Override
public void addPages() {
super.addPages();
mainPage = new WizardNewProjectCreationPage("planPage");
mainPage.setTitle(Messages.NewPlanProjectNamePage_title);
mainPage.setDescription(Messages.NewPlanProjectNamePage_description);
addPage(mainPage);
planPage = new NewPlanProjectFilePage();
addPage(planPage);
}
@Override
public boolean performFinish() {
URI location = null;
if (!mainPage.useDefaults()) {
location = mainPage.getLocationURI();
}
String name = planPage.getPlanName();
boolean atomic = planPage.isAtomic();
boolean scoped = planPage.isScoped();
final CreatePlanProjectOperation operation = new CreatePlanProjectOperation(mainPage.getProjectHandle(), location, name, scoped, atomic,
getShell());
try {
getContainer().run(true, false, new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
try {
ResourcesPlugin.getWorkspace().run(operation, monitor);
} catch (CoreException e) {
StatusManager.getManager().handle(e.getStatus(), StatusManager.LOG | StatusManager.SHOW);
}
}
});
} catch (Exception e) {
IStatus s = new Status(IStatus.ERROR, ServerIdeUiPlugin.PLUGIN_ID, e.getMessage(), e);
StatusManager.getManager().handle(s, StatusManager.LOG | StatusManager.SHOW);
}
IFile file = operation.getPlanFile();
if (file!=null) {
IEditorDescriptor editorDesc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(file.getName());
try {
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(new FileEditorInput(file), editorDesc.getId());
} catch (PartInitException e) {
// ignore
}
}
return true;
}
}