398653: Support for optional install
- fixed parsing of "optional/required" attribute (xml attribute name changed from optional to required)
- fixed initial selection state for install
Bug: 398653
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=398653
diff --git a/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/xml/IuContentHandler.java b/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/xml/IuContentHandler.java
index db6b55e..0491f70 100644
--- a/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/xml/IuContentHandler.java
+++ b/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/xml/IuContentHandler.java
@@ -28,10 +28,21 @@
public void startElement(String uri, String localName, Attributes attributes) {
if (localName.equals("iu")) { //$NON-NLS-1$
model = new Iu();
+ //FIXME at some point we sent optional, at another required, so we handle both for now...
+ Boolean optional = null;
String optionalValue = attributes.getValue(NS_URI, "optional"); //$NON-NLS-1$
if (optionalValue != null) {
- model.setOptional(Boolean.valueOf(optionalValue));
+ optional = Boolean.valueOf(optionalValue);
}
+ String requiredValue = attributes.getValue(NS_URI, "required"); //$NON-NLS-1$
+ if (requiredValue != null) {
+ Boolean required = Boolean.valueOf(requiredValue);
+ optional = optional == null ? !required : optional && !required;
+ }
+ if (optional != null) {
+ model.setOptional(optional);
+ }
+
String selectedValue = attributes.getValue(NS_URI, "selected"); //$NON-NLS-1$
if (selectedValue != null) {
model.setSelected(Boolean.valueOf(selectedValue));
diff --git a/org.eclipse.epp.mpc.ui/src/org/eclipse/epp/internal/mpc/ui/wizards/SelectionModel.java b/org.eclipse.epp.mpc.ui/src/org/eclipse/epp/internal/mpc/ui/wizards/SelectionModel.java
index 5bee7c7..41ccee1 100644
--- a/org.eclipse.epp.mpc.ui/src/org/eclipse/epp/internal/mpc/ui/wizards/SelectionModel.java
+++ b/org.eclipse.epp.mpc.ui/src/org/eclipse/epp/internal/mpc/ui/wizards/SelectionModel.java
@@ -157,7 +157,10 @@
Operation selectedOperation = parent.getSelectedOperation();
switch (selectedOperation) {
case INSTALL:
- return !featureEntry.isInstalled() || featureEntry.hasUpdateAvailable();
+ if (!featureEntry.isInstalled()) {
+ return featureEntry.isRequiredInstall() || featureEntry.getInstallableUnitItem().isDefaultSelected();
+ }
+ return featureEntry.hasUpdateAvailable();
case UNINSTALL:
return featureEntry.isInstalled();
case UPDATE: