diff options
author | Susan Franklin | 2008-07-24 17:52:02 +0000 |
---|---|---|
committer | Susan Franklin | 2008-07-24 17:52:02 +0000 |
commit | a5db9ddc90f5a30f6ecc8cf66b950ec20c8325b3 (patch) | |
tree | d705ac64cc920618e49dd7df1a7ba2bd2f731ad2 | |
parent | 58d0822a912809beaf78d913afc70bd4bc122236 (diff) | |
download | rt.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
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()) |