Source:
<code>private void reload(final Repository repository) { final boolean repositoryChanged = currentRepository != repository; final AtomicReference<IndexDiff> results = new AtomicReference<IndexDiff>(); final String jobTitle = MessageFormat.format(UIText.StagingView_IndexDiffReload, StagingView.getRepositoryName(repository)); if (reloadJob != null) reloadJob.cancel(); reloadJob = new Job(jobTitle) { @Override protected IStatus run(IProgressMonitor monitor) { IndexDiff indexDiff = doReload(repository, monitor, jobTitle); results.set(indexDiff); if (monitor.isCanceled()) return Status.CANCEL_STATUS; return Status.OK_STATUS; } @Override public boolean belongsTo(Object family) { if (family.equals(JobFamilies.STAGING_VIEW_REFRESH)) return true; return super.belongsTo(family); } }; reloadJob.setUser(false); reloadJob.setRule(ResourcesPlugin.getWorkspace().getRoot()); reloadJob.addJobChangeListener(new JobChangeAdapter() { public void done(final IJobChangeEvent event) { asyncExec(new Runnable() { public void run() { if (form.isDisposed()) return; if (!event.getResult().isOK()) <START> return; <END> final IndexDiff indexDiff = results.get(); final StagingViewUpdate update = new StagingViewUpdate(currentRepository, indexDiff, null); unstagedTableViewer.setInput(update); stagedTableViewer.setInput(update); enableCommitWidgets(true); commitAction.setEnabled(repository.getRepositoryState() .canCommit()); form.setText(StagingView.getRepositoryName(repository)); updateCommitMessageComponent(repositoryChanged); updateSectionText(); } }); } }); schedule(reloadJob); }</code><technical_language>Thinking more, this check in done call asyncExec is scheduled if result displayed</technical_language>

Target:
private void reload(final Repository repository) { final boolean repositoryChanged = currentRepository != repository; final AtomicReference<IndexDiff> results = new AtomicReference<IndexDiff>(); final String jobTitle = MessageFormat.format(UIText.StagingView_IndexDiffReload, StagingView.getRepositoryName(repository)); if (reloadJob != null) reloadJob.cancel(); reloadJob = new Job(jobTitle) { @Override protected IStatus run(IProgressMonitor monitor) { IndexDiff indexDiff = doReload(repository, monitor, jobTitle); results.set(indexDiff); if (monitor.isCanceled()) return Status.CANCEL_STATUS; return Status.OK_STATUS; } @Override public boolean belongsTo(Object family) { if (family.equals(JobFamilies.STAGING_VIEW_REFRESH)) return true; return super.belongsTo(family); } }; reloadJob.setUser(false); reloadJob.setRule(ResourcesPlugin.getWorkspace().getRoot()); reloadJob.addJobChangeListener(new JobChangeAdapter() { public void done(final IJobChangeEvent event) { if (!event.getResult().isOK()) return; asyncExec(new Runnable() { public void run() { if (form.isDisposed()) return; final IndexDiff indexDiff = results.get(); final StagingViewUpdate update = new StagingViewUpdate(currentRepository, indexDiff, null); unstagedTableViewer.setInput(update); stagedTableViewer.setInput(update); enableCommitWidgets(true); commitAction.setEnabled(repository.getRepositoryState() .canCommit()); form.setText(StagingView.getRepositoryName(repository)); updateCommitMessageComponent(repositoryChanged); updateSectionText(); } }); } }); schedule(reloadJob); }