@Override
 public IWizardPage getNextPage(IWizardPage page) {
   IWizardPage nextPage = super.getNextPage(page);
   if (nextPage == fContentPage) {
     if (!fMainPage.isCreatePlugin()) {
       nextPage = fWizardSelectionPage;
     }
   }
   return nextPage;
 }
 @Override
 public IWizardPage getPreviousPage(IWizardPage page) {
   IWizardPage prevPage = super.getPreviousPage(page);
   if (prevPage == fContentPage) {
     if (!fMainPage.isCreatePlugin()) {
       prevPage = fMainPage;
     }
   }
   return prevPage;
 }
  @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;
  }