Bug 485748 - Progress bar stays even after completion
Proactively call done() on the status bar progress monitor at the
highest level possible.
Change-Id: I3d872df18faf00493acf0708ef470c0467372e71
Signed-off-by: Stefan Xenos <sxenos@gmail.com>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java
index 3e26cde..3bc7589 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java
@@ -51,6 +51,7 @@
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IScopeContext;
@@ -1208,8 +1209,14 @@
if (window == getEditorSite().getWorkbenchWindow() && fMarkOccurrenceAnnotations && isActivePart()) {
fForcedMarkOccurrencesSelection= getSelectionProvider().getSelection();
ITypeRoot inputJavaElement= getInputJavaElement();
- if (inputJavaElement != null)
- updateOccurrenceAnnotations((ITextSelection)fForcedMarkOccurrencesSelection, SharedASTProvider.getAST(inputJavaElement, SharedASTProvider.WAIT_NO, getProgressMonitor()));
+ if (inputJavaElement != null) {
+ IProgressMonitor monitor = getProgressMonitor();
+ try {
+ updateOccurrenceAnnotations((ITextSelection)fForcedMarkOccurrencesSelection, SharedASTProvider.getAST(inputJavaElement, SharedASTProvider.WAIT_NO, monitor));
+ } finally {
+ monitor.done();
+ }
+ }
}
}
@@ -2400,7 +2407,13 @@
if (inputJavaElement == null)
return;
- CompilationUnit ast= SharedASTProvider.getAST(inputJavaElement, SharedASTProvider.WAIT_NO /* DO NOT USE WAIT_ACTIVE_ONLY */ , getProgressMonitor());
+ IProgressMonitor monitor = getProgressMonitor();
+ CompilationUnit ast;
+ try {
+ ast= SharedASTProvider.getAST(inputJavaElement, SharedASTProvider.WAIT_NO /* DO NOT USE WAIT_ACTIVE_ONLY */ , monitor);
+ } finally {
+ monitor.done();
+ }
if (ast != null) {
fForcedMarkOccurrencesSelection= textSelection;
updateOccurrenceAnnotations((ITextSelection)textSelection, ast);
@@ -3355,8 +3368,14 @@
if (forceUpdate && getSelectionProvider() != null) {
fForcedMarkOccurrencesSelection= getSelectionProvider().getSelection();
ITypeRoot inputJavaElement= getInputJavaElement();
- if (inputJavaElement != null)
- updateOccurrenceAnnotations((ITextSelection)fForcedMarkOccurrencesSelection, SharedASTProvider.getAST(inputJavaElement, SharedASTProvider.WAIT_NO, getProgressMonitor()));
+ if (inputJavaElement != null) {
+ IProgressMonitor monitor = getProgressMonitor();
+ try {
+ updateOccurrenceAnnotations((ITextSelection)fForcedMarkOccurrencesSelection, SharedASTProvider.getAST(inputJavaElement, SharedASTProvider.WAIT_NO, monitor));
+ } finally {
+ monitor.done();
+ }
+ }
}
if (fOccurrencesFinderJobCanceler == null) {
@@ -3472,8 +3491,15 @@
fOverrideIndicatorManager= new OverrideIndicatorManager(model, inputElement, null);
if (provideAST) {
- CompilationUnit ast= SharedASTProvider.getAST(inputElement, SharedASTProvider.WAIT_ACTIVE_ONLY, getProgressMonitor());
- fOverrideIndicatorManager.reconciled(ast, true, getProgressMonitor());
+ IProgressMonitor monitor = getProgressMonitor();
+ try {
+ SubMonitor subMonitor= SubMonitor.convert(monitor, 2);
+ CompilationUnit ast= SharedASTProvider.getAST(inputElement, SharedASTProvider.WAIT_ACTIVE_ONLY,
+ subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
+ fOverrideIndicatorManager.reconciled(ast, true, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
+ } finally {
+ monitor.done();
+ }
}
}