diff options
author | Susan Franklin | 2008-04-17 22:58:05 +0000 |
---|---|---|
committer | Susan Franklin | 2008-04-17 22:58:05 +0000 |
commit | d2677d2457798d0dc10711a78430477339195870 (patch) | |
tree | 5dc40a093672366dbde3bb035e91fab4d88b6323 /bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox | |
parent | c7311feda96cd177c48a05768275702edcc86ab8 (diff) | |
download | rt.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')
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)) { |