try { getContainer().run(true, true, op); } catch (InterruptedException e) { return null; } catch (InvocationTargetException e) {  Throwable t = e.getTargetException(); if (t instanceof CoreException) { if (((CoreException) t).getStatus().getCode() == IResourceStatus.CASE_VARIANT_EXISTS) { MessageDialog .openError( getShell(), Messages .getString("NewReportProjectWizard.errorMessage"), Messages .getFormattedString( "NewReportProjectWizard.caseVariantExistsError", new String[]{newProjectHandle.getName()}) ); } else { ErrorDialog.openError(getShell(), Messages .getString("NewReportProjectWizard.errorMessage"), null, ((CoreException) t).getStatus()); } } else {   ExceptionHandler.handle( e );
description.setNatureIds( natures );  addJavaBuildSpec( description );   WorkspaceModifyOperation op = new WorkspaceModifyOperation( ) {  protected void execute( IProgressMonitor monitor ) throws CoreException { createProject( description, newProjectHandle, monitor ); } };   try { getContainer( ).run( true, true, op ); } catch ( InterruptedException e ) { return null; } catch ( InvocationTargetException e ) {  Throwable t = e.getTargetException( ); if ( t instanceof CoreException ) { if ( ( (CoreException) t ).getStatus( ).getCode( ) == IResourceStatus.CASE_VARIANT_EXISTS ) {
		private IProject createNewProject() {			if (newProject != null)				return newProject;			// get a project handle			final IProject newProjectHandle = mainPage.getProjectHandle();			// get a project descriptor			IPath newPath = null;			if (!mainPage.useDefaults())				newPath = mainPage.getLocationPath();			IWorkspace workspace = ResourcesPlugin.getWorkspace();			final IProjectDescription description = workspace					.newProjectDescription(newProjectHandle.getName());			description.setLocation(newPath);			description.setNatureIds(new String[]{"org.eclipse.birt.report.designer.ui.reportprojectnature"}); //$NON-NLS-1$					// create the new project operation			WorkspaceModifyOperation op = new WorkspaceModifyOperation() {				protected void execute(IProgressMonitor monitor)						throws CoreException {					createProject(description, newProjectHandle, monitor);				}			};			// run the new project creation operation			try {				getContainer().run(true, true, op);			} catch (InterruptedException e) {				return null;			} catch (InvocationTargetException e) {				// ie.- one of the steps resulted in a core exception				Throwable t = e.getTargetException();				if (t instanceof CoreException) {					if (((CoreException) t).getStatus().getCode() == IResourceStatus.CASE_VARIANT_EXISTS) {						MessageDialog								.openError(										getShell(),										Messages												.getString("NewReportProjectWizard.errorMessage"), //$NON-NLS-1$										Messages												.getFormattedString(														"NewReportProjectWizard.caseVariantExistsError", new String[]{newProjectHandle.getName()}) //$NON-NLS-1$,								);					} else {						ErrorDialog.openError(getShell(), Messages								.getString("NewReportProjectWizard.errorMessage"), //$NON-NLS-1$								null, // no special message								((CoreException) t).getStatus());					}				} else {					// CoreExceptions are handled above, but unexpected runtime					// exceptions and errors may still occur.					ExceptionHandler.handle( e );				    					MessageDialog							.openError(									getShell(),									Messages											.getString("NewReportProjectWizard.errorMessage"), //$NON-NLS-1$									Messages											.getFormattedString(													"NewReportProjectWizard.internalError", new Object[]{t.getMessage()})); //$NON-NLS-1$				}				return null;			}			newProject = newProjectHandle;			return newProject;		}