@Override
  public boolean performFinish() {
    IStatus status = Status.OK_STATUS;
    if (destinationPage.isFolder()) status = generateFolder(destinationPage.getFolderPath());
    else status = generateJar(destinationPage.getJarPath());

    if (!status.isOK()) ErrorDialog.openError(getShell(), "Error", null, status);

    return status.isOK();
  }
  @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;
    }
  }