private void openEditor() { Job job = new Job("My Job's Name") { protected IStatus run(IProgressMonitor monitor) { try { // stuff happens openEditor(new Object[10000]); return Status.OK_STATUS; } finally { monitor.done(); } } }; job.schedule(); } void openEditor(final Object[] lotsOfObjects) { UIJob job = new UIJob(/* Display */ null, "Opening editor...") { public IStatus runInUIThread(IProgressMonitor monitor) { try { IDE.openEditor(/* IWorkbenchPage */ null, /* new MyEditorInput(lotsOfObjects) */ (IEditorInput) null, "myEditorID"); } catch (PartInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } return Status.OK_STATUS; } }; }