@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;
  }
  @Override
  public boolean doPerformFinish(IProgressMonitor monitor) {
    try {
      String moduleName = fNewQvtModulePage.getModuleName();
      assert QvtNamesChecker.validateQvtModuleIdentifier(moduleName).isOK();

      String contents = createTransformationContents(moduleName);
      IFile transformationFile = fNewQvtModulePage.createNewFile(contents, monitor);

      if (fOpenInEditor) {
        NewQvtModuleCreationPage.openInEditor(getShell(), transformationFile);
      }
      return true;
    } catch (Exception exception) {
      QVTUIPlugin.log(exception);
      return false;
    }
  }