package bndtools.wizards.bndfile; import java.lang.reflect.InvocationTargetException; import org.bndtools.core.ui.IRunDescriptionExportWizard; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.wizard.Wizard; import aQute.bnd.build.Project; import aQute.bnd.build.model.BndEditModel; import bndtools.Plugin; public class ExecutableJarExportWizard extends Wizard implements IRunDescriptionExportWizard { private final ExecutableJarWizardPage destinationPage = new ExecutableJarWizardPage(); private Project bndProject; public ExecutableJarExportWizard() { addPage(destinationPage); setNeedsProgressMonitor(true); } @Override public void setBndModel(BndEditModel model, Project bndProject) { this.bndProject = bndProject; } @Override public boolean performFinish() { IRunnableWithProgress task; destinationPage.saveLastExport(); String path = destinationPage.getJarPath(); if (destinationPage.isFolder()) path = destinationPage.getFolderPath(); task = new GenerateLauncherJarRunnable(bndProject, path, destinationPage.isFolder()); try { getContainer().run(true, true, task); return true; } catch (InvocationTargetException e) { ErrorDialog.openError(getShell(), "Error", null, new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error occurred during export.", e.getTargetException())); return false; } catch (InterruptedException e) { return false; } catch (Exception e) { ErrorDialog.openError(getShell(), "Error", null, new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error occurred during export.", e)); return false; } } }