@Override
  public boolean performFinish() {
    if (fIsFinishPerformed) {
      return true;
    }

    try {
      fMainPage.updateData();
      fContentPage.updateData();

      if (fConfig != null) {
        BasicNewProjectResourceWizard.updatePerspective(fConfig);
      }

      if (!fProjectData.isCreateJava()) {
        // ensure no Activator class is requested to generate, in case
        // it has been previously selected in the new content page
        fProjectData.setDoGenerateClass(false);
      }

      final WorkspaceModifyOperation operation;
      if (fMainPage.isCreatePlugin()) {
        operation = createNewPluginProjectOperation();
      } else {
        operation = createNewSimpleProjectOperation();
      }

      getContainer().run(false, true, operation);
    } catch (InterruptedException e) {
      // operation canceled
    } catch (Exception e) {
      QVTUIPlugin.log(e);
      String title = Messages.NewQVTProjectWizard_Error;
      String message = Messages.NewQVTProjectWizard_ErrorSeeLog;
      Throwable exc =
          (e instanceof InvocationTargetException)
              ? ((InvocationTargetException) e).getTargetException()
              : e;
      Status status = new Status(IStatus.ERROR, QVTUIPlugin.PLUGIN_ID, IStatus.ERROR, message, exc);
      ErrorDialog.openError(getShell(), title, e.getMessage(), status);
      return false;
    }

    fIsFinishPerformed = true;
    return true;
  }