Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSusan Franklin2008-04-17 22:58:05 +0000
committerSusan Franklin2008-04-17 22:58:05 +0000
commitd2677d2457798d0dc10711a78430477339195870 (patch)
tree5dc40a093672366dbde3bb035e91fab4d88b6323 /bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox
parentc7311feda96cd177c48a05768275702edcc86ab8 (diff)
downloadrt.equinox.p2-d2677d2457798d0dc10711a78430477339195870.tar.gz
rt.equinox.p2-d2677d2457798d0dc10711a78430477339195870.tar.xz
rt.equinox.p2-d2677d2457798d0dc10711a78430477339195870.zip
Bug 215560 - [prov] [ui] denote unwritable (locked) IUs
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox')
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/ProfileModificationAction.java16
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UninstallAction.java3
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UpdateAction.java3
3 files changed, 22 insertions, 0 deletions
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 e704c045e..a50f74c73 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
@@ -16,9 +16,11 @@ import org.eclipse.core.runtime.IProgressMonitor;
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;
+import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.internal.provisional.p2.ui.*;
import org.eclipse.equinox.internal.provisional.p2.ui.model.ElementUtils;
+import org.eclipse.equinox.internal.provisional.p2.ui.operations.ProvisioningUtil;
import org.eclipse.equinox.internal.provisional.p2.ui.policy.*;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
@@ -131,4 +133,18 @@ public abstract class ProfileModificationAction extends ProvisioningAction {
}
protected abstract boolean isEnabledFor(Object[] selections);
+
+ protected int getLock(IInstallableUnit iu) {
+ try {
+ IProfile profile = ProvisioningUtil.getProfile(profileId);
+ String value = profile.getInstallableUnitProperty(iu, IInstallableUnit.PROP_PROFILE_LOCKED_IU);
+ if (value != null)
+ return Integer.parseInt(value);
+ } catch (ProvisionException e) {
+ // ignore, we have bigger problems to report elsewhere
+ } catch (NumberFormatException e) {
+ // ignore and assume no lock
+ }
+ return IInstallableUnit.LOCK_NONE;
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UninstallAction.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UninstallAction.java
index 80a46b492..5997d6e2a 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UninstallAction.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UninstallAction.java
@@ -41,6 +41,9 @@ public class UninstallAction extends ProfileModificationAction {
for (int i = 0; i < selectionArray.length; i++) {
if (selectionArray[i] instanceof InstalledIUElement) {
InstalledIUElement element = (InstalledIUElement) selectionArray[i];
+ int lock = getLock(element.getIU());
+ if ((lock & IInstallableUnit.LOCK_UNINSTALL) == IInstallableUnit.LOCK_UNINSTALL)
+ return false;
if (parent == null) {
parent = element.getParent(null);
} else if (parent != element.getParent(null)) {
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UpdateAction.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UpdateAction.java
index 18e261664..f1ddbbd73 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UpdateAction.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/actions/UpdateAction.java
@@ -104,6 +104,9 @@ public class UpdateAction extends ProfileModificationAction {
for (int i = 0; i < selectionArray.length; i++) {
if (selectionArray[i] instanceof InstalledIUElement) {
InstalledIUElement element = (InstalledIUElement) selectionArray[i];
+ int lock = getLock(element.getIU());
+ if ((lock & IInstallableUnit.LOCK_UPDATE) == IInstallableUnit.LOCK_UPDATE)
+ return false;
if (parent == null) {
parent = element.getParent(null);
} else if (parent != element.getParent(null)) {

Back to the top