Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java')
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java
index e1d12f642..78e62e440 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/ProvisioningOperationWizard.java
@@ -49,6 +49,7 @@ public abstract class ProvisioningOperationWizard extends Wizard {
private ProvisioningContext provisioningContext;
protected LoadMetadataRepositoryJob repoPreloadJob;
IStatus couldNotResolveStatus = Status.OK_STATUS; // we haven't tried and failed
+ boolean resolveWithRelaxedConstraints = false;
boolean waitingForOtherJobs = false;
@@ -191,6 +192,34 @@ public abstract class ProvisioningOperationWizard extends Wizard {
return new ProvisioningContext(ui.getSession().getProvisioningAgent());
}
+
+ public void recomputePlanWithRelaxedConstraints(IRunnableContext runnableContext) {
+ couldNotResolveStatus = Status.OK_STATUS;
+ provisioningContext = getProvisioningContext();
+ initializeResolutionModelElements(getOperationSelections());
+ if (planSelections.length == 0) {
+ operation = null;
+ couldNotResolve(ProvUIMessages.ResolutionWizardPage_NoSelections);
+ } else {
+ operation = ui.getLuckyOperation(provisioningContext);
+ operation.setProvisioningContext(provisioningContext);
+ try {
+ runnableContext.run(true, true, new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) {
+ operation.resolveModal(monitor);
+ }
+ });
+
+ } catch (InterruptedException e) {
+ // Nothing to report if thread was interrupted
+ } catch (InvocationTargetException e) {
+ ProvUI.handleException(e.getCause(), null, StatusManager.SHOW | StatusManager.LOG);
+ couldNotResolve(null);
+ }
+ }
+ planChanged();
+ }
+
/**
* Recompute the provisioning plan based on the items in the IUElementListRoot and the given provisioning context.
* Report progress using the specified runnable context. This method may be called before the page is created.
@@ -198,6 +227,10 @@ public abstract class ProvisioningOperationWizard extends Wizard {
* @param runnableContext
*/
public void recomputePlan(IRunnableContext runnableContext) {
+ if (resolveWithRelaxedConstraints) {
+ recomputePlanWithRelaxedConstraints(runnableContext);
+ return;
+ }
couldNotResolveStatus = Status.OK_STATUS;
provisioningContext = getProvisioningContext();
initializeResolutionModelElements(getOperationSelections());
@@ -350,4 +383,8 @@ public abstract class ProvisioningOperationWizard extends Wizard {
public boolean statusOverridesOperation() {
return false;
}
+
+ public void setRelaxedResolution(boolean value) {
+ this.resolveWithRelaxedConstraints = value;
+ }
}

Back to the top