Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSusan Franklin2008-07-24 17:52:02 +0000
committerSusan Franklin2008-07-24 17:52:02 +0000
commita5db9ddc90f5a30f6ecc8cf66b950ec20c8325b3 (patch)
treed705ac64cc920618e49dd7df1a7ba2bd2f731ad2
parent58d0822a912809beaf78d913afc70bd4bc122236 (diff)
downloadrt.equinox.p2-a5db9ddc90f5a30f6ecc8cf66b950ec20c8325b3.tar.gz
rt.equinox.p2-a5db9ddc90f5a30f6ecc8cf66b950ec20c8325b3.tar.xz
rt.equinox.p2-a5db9ddc90f5a30f6ecc8cf66b950ec20c8325b3.zip
Bug 241845 - [ui] UI code should check CANCEL status and OperationCanceledException
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/updates/AutomaticUpdater.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/PlanStatusHelper.java6
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RevertProfileWizardPage.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/ProfileModificationAction.java4
5 files changed, 17 insertions, 2 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java
index 6f48c9f2f..b814a7377 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/ProvSDKUIActivator.java
@@ -206,6 +206,8 @@ public class ProvSDKUIActivator extends AbstractUIPlugin {
public boolean continueWorkingWithPlan(ProvisioningPlan plan, Shell shell) {
if (plan == null)
return false;
+ if (plan.getStatus().getSeverity() == IStatus.CANCEL)
+ return false;
// If the plan requires install handler support, we want to open the old update UI
if (UpdateManagerCompatibility.requiresInstallHandlerSupport(plan)) {
MessageDialog dialog = new MessageDialog(shell, ProvSDKMessages.ProvSDKUIActivator_UnsupportedFeatureTitle, null, ProvSDKMessages.ProvSDKUIActivator_UnsupportedFeatureMessage, MessageDialog.WARNING, new String[] {ProvSDKMessages.ProvSDKUIActivator_LaunchUpdateManager, IDialogConstants.CANCEL_LABEL}, 0);
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/updates/AutomaticUpdater.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/updates/AutomaticUpdater.java
index 80000dc0e..5ef8ab4eb 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/updates/AutomaticUpdater.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/updates/AutomaticUpdater.java
@@ -81,6 +81,9 @@ public class AutomaticUpdater implements IUpdateListener {
// We are just checking prefs to determine whether to to show the popup or not.
String openPlan = prefs.getString(PreferenceConstants.PREF_OPEN_WIZARD_ON_ERROR_PLAN);
if (plan != null) {
+ // If the user cancelled the operation, don't continue
+ if (plan.getStatus().getSeverity() == IStatus.CANCEL)
+ return false;
boolean noError = plan.getStatus().getSeverity() != IStatus.ERROR;
if (noError || !(MessageDialogWithToggle.NEVER.equals(openPlan))) {
// Show the affordance if user prefers always opening a currentPlan or being prompted
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/PlanStatusHelper.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/PlanStatusHelper.java
index 3bd9a17eb..2de82526e 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/PlanStatusHelper.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/PlanStatusHelper.java
@@ -53,12 +53,14 @@ public class PlanStatusHelper {
public static IStatus computeStatus(ProvisioningPlan plan, IInstallableUnit[] ius) {
if (plan == null)
return getStatus(IStatusCodes.UNEXPECTED_NOTHING_TO_DO, null);
- // If the plan is ok, nothing to do
- if (plan.getStatus().isOK())
+ // If the plan is ok or cancel, no further analysis is needed
+ if (plan.getStatus().isOK() || plan.getStatus().getSeverity() == IStatus.CANCEL)
return plan.getStatus();
+
// If this is a status we have already checked, don't bother doing so again.
if (plan.getStatus().getCode() == IStatusCodes.UNEXPECTED_NOTHING_TO_DO)
return plan.getStatus();
+
// If the plan has no IU operands and some were expected, then nothing will happen.
if (ius != null && ius.length > 0) {
boolean iusInPlan = false;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RevertProfileWizardPage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RevertProfileWizardPage.java
index e9da4aead..4a026ce76 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RevertProfileWizardPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RevertProfileWizardPage.java
@@ -12,6 +12,7 @@ package org.eclipse.equinox.internal.p2.ui.dialogs;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
import org.eclipse.equinox.internal.p2.ui.viewers.IUDetailsLabelProvider;
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
@@ -231,6 +232,9 @@ public class RevertProfileWizardPage extends WizardPage {
ProvisioningOperationRunner.run(op, getShell(), StatusManager.SHOW | StatusManager.LOG);
return true;
}
+ // If user cancelled, do not report an error
+ if (plan[0].getStatus().getSeverity() == IStatus.CANCEL)
+ return false;
ProvUI.reportStatus(plan[0].getStatus(), StatusManager.LOG);
setMessage(ProvUIMessages.ProfileModificationWizardPage_UnexpectedError, IMessageProvider.ERROR);
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/ProfileModificationAction.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/ProfileModificationAction.java
index 0773934ec..8bc179ab2 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/ProfileModificationAction.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/ProfileModificationAction.java
@@ -15,6 +15,7 @@ import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
import org.eclipse.equinox.internal.provisional.p2.director.ProvisioningPlan;
@@ -104,6 +105,9 @@ public abstract class ProfileModificationAction extends ProvisioningAction {
*/
protected boolean validatePlan(ProvisioningPlan plan) {
if (plan != null) {
+ // Don't validate the plan if the user cancelled
+ if (plan.getStatus().getSeverity() == IStatus.CANCEL)
+ return false;
if (getPlanValidator() != null)
return getPlanValidator().continueWorkingWithPlan(plan, getShell());
if (plan.getStatus().isOK())

Back to the top