Bug 298677 - Analyse uses directive does not cancel
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/CalculateUsesOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/CalculateUsesOperation.java
index aea74b2..8497528 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/CalculateUsesOperation.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/search/dependencies/CalculateUsesOperation.java
@@ -40,6 +40,9 @@
if (packages.isEmpty())
return;
Map pkgsAndUses = findPackageReferences(packages, monitor);
+ if (monitor.isCanceled()) {
+ return;
+ }
handleSetUsesDirectives(pkgsAndUses);
} finally {
monitor.done();
@@ -68,6 +71,9 @@
IPackageFragment[] frags = PDEJavaHelper.getPackageFragments(jp, Collections.EMPTY_SET, false);
monitor.beginTask("", frags.length * 2); //$NON-NLS-1$
for (int i = 0; i < frags.length; i++) {
+ if (monitor.isCanceled()) {
+ return pkgsAndUses;
+ }
monitor.subTask(NLS.bind(PDEUIMessages.CalculateUsesOperation_calculatingDirective, frags[i].getElementName()));
if (packages.contains(frags[i].getElementName())) {
HashSet pkgs = new HashSet();