private IFolder createNewExperiment(@NonNull String experimentName) { final IFolder[] experimentFolders = new IFolder[1]; final TmfExperimentFolder root = fExperimentFolderRoot; if (root == null) { return null; } WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { @Override public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException { NewExperimentOperation createOperation = new NewExperimentOperation(root, experimentName); createOperation.run(monitor); IStatus status = createOperation.getStatus(); if (!status.isOK()) { if (status.getSeverity() == IStatus.CANCEL) { throw new OperationCanceledException(); } Throwable exception = status.getException(); if (exception != null) { throw new InvocationTargetException(exception); } return; } experimentFolders[0] = createOperation.getExperimentFolder(); } }; try { PlatformUI.getWorkbench().getProgressService().busyCursorWhile(operation); } catch (InterruptedException | RuntimeException exception) { return null; } catch (InvocationTargetException exception) { TraceUtils.displayErrorMsg( "", NLS.bind("", exception.getTargetException().getMessage())); // $NON-NLS-1$ //$NON-NLS-2$ return null; } return experimentFolders[0]; }