/**
  * This method gets called when wizard's finish button is clicked.
  *
  * @return True, if project gets created successfully; else false.
  */
 @Override
 public boolean performFinish() {
   final String projName = waProjWizPage.getTextProjName();
   final String projLocation = waProjWizPage.getTextLocation();
   final boolean isDefault = waProjWizPage.isDefaultLocation();
   final WorkingSetGroup workingSetGroup = waProjWizPage.getWorkingSetGroup();
   final IWorkingSet[] selWorkingSets = workingSetGroup.getSelectedWorkingSets();
   final IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager();
   final Map<String, String> depParams = getDeployPageValues();
   final Map<String, Boolean> keyFtr = getKeyFtrPageValues();
   final IProject proj = getSelectProject();
   boolean retVal = true;
   IRunnableWithProgress runnable =
       new IRunnableWithProgress() {
         public void run(IProgressMonitor monitor) throws InvocationTargetException {
           try {
             doFinish(
                 projName,
                 projLocation,
                 isDefault,
                 selWorkingSets,
                 workingSetManager,
                 depParams,
                 keyFtr,
                 proj);
           } finally {
             monitor.done();
           }
         }
       };
   try {
     /*
      * Check if third party JDK and server is selected
      * then license is accepted or not.
      */
     boolean tempAccepted = true;
     if (WATabPage.isThirdPartyJdkChecked() && !WATabPage.isAccepted()) {
       tempAccepted = JdkSrvConfig.createAccLicenseAggDlg(getShell(), true);
     }
     if (WATabPage.isThirdPartySrvChecked() && !WATabPage.isServerAccepted()) {
       tempAccepted = JdkSrvConfig.createAccLicenseAggDlg(getShell(), false);
     }
     if (tempAccepted) {
       getContainer().run(true, false, runnable);
     } else {
       return false;
     }
   } catch (InterruptedException e) {
     PluginUtil.displayErrorDialog(this.getShell(), Messages.pWizErrTitle, Messages.pWizErrMsg);
     retVal = false;
   } catch (InvocationTargetException e) {
     PluginUtil.displayErrorDialogAndLog(
         this.getShell(), Messages.pWizErrTitle, Messages.pWizErrMsg, e);
     retVal = false;
   }
   // re-initializing context menu to default option : false
   Activator.getDefault().setContextMenu(false);
   return retVal;
 }
 /**
  * If wizard can be finished or not.
  *
  * @return boolean
  */
 @Override
 public boolean canFinish() {
   boolean validPage = false;
   // check starting page is valid
   if (waProjWizPage.canFlipToNextPage()) {
     validPage = waProjWizPage.isPageComplete();
   }
   if (validPage) {
     validPage = waProjWizPage.isPageComplete() && tabPg.isPageComplete();
   }
   return validPage;
 }