Bug 66682
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
index fc7b62a..673519d 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
@@ -819,6 +819,7 @@
NewFeaturePatch.SpecPage.id = Patch I&d:
NewFeaturePatch.SpecPage.name = Patch N&ame:
NewFeaturePatch.SpecPage.provider = Patch P&rovider:
+NewFeaturePatch.SpecPage.notFound = Feature {0} not found.
FeatureSelectionDialog.title = Feature Selection
FeaturePropertiesDialog.type=Type:
FeaturePropertiesDialog.arch=Architectures:
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/FeatureData.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/FeatureData.java
index 2041a26..348ae39 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/FeatureData.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/FeatureData.java
@@ -19,16 +19,24 @@
String provider;
String library;
boolean hasCustomHandler;
+ boolean isPatch;
+ String featureToPatchId;
+ String featureToPatchVersion;
public FeatureData() {
library = null;
hasCustomHandler = false;
+ isPatch = false;
}
public boolean hasCustomHandler() {
return hasCustomHandler;
}
+ public boolean isPatch(){
+ return isPatch;
+ }
+
public String getSourceFolderName() {
return PreferenceConstants.getPreferenceStore().getString(
PreferenceConstants.SRCBIN_SRCNAME);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/NewFeaturePatchWizard.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/NewFeaturePatchWizard.java
index 1012b7f..9e9ba70 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/NewFeaturePatchWizard.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/NewFeaturePatchWizard.java
@@ -306,11 +306,17 @@
feature.addPlugins(added);
FeatureImport featureImport = (FeatureImport) model.getFactory().createImport();
- featureImport.loadFrom(featureModel.getFeature());
- featureImport.setPatch(true);
- featureImport.setVersion(featureModel.getFeature().getVersion());
- featureImport.setId(featureModel.getFeature().getId());
-
+ if (featureModel != null){
+ featureImport.loadFrom(featureModel.getFeature());
+ featureImport.setPatch(true);
+ featureImport.setVersion(featureModel.getFeature().getVersion());
+ featureImport.setId(featureModel.getFeature().getId());
+ } else if (data.isPatch()){
+ featureImport.setPatch(true);
+ featureImport.setVersion(data.featureToPatchVersion);
+ featureImport.setId(data.featureToPatchId);
+ }
+
feature.addImports(new IFeatureImport[]{featureImport});
IFeatureInstallHandler handler = feature.getInstallHandler();
if (handler == null) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/PatchPluginListPage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/PatchPluginListPage.java
index 2ac8bbf..267c5e1 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/PatchPluginListPage.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/PatchPluginListPage.java
@@ -109,26 +109,10 @@
return featureModel.getFeature().getPlugins();
}
-// public IFeature[] getSelectedFeatures() {
-// Object[] result = tablePart.getSelection();
-// IFeature[] features = new IFeature[result.length];
-// for (int i = 0; i < result.length; i++) {
-// IFeatureChild child = (IFeatureChild) result[i];
-// features[i] = child.getModel().getFeature();
-// }
-// return features;
-// }
-//
-// public IFeatureChild[] getSelectedFeatureChildren(){
-// Object[] result = tablePart.getSelection();
-// IFeatureChild[] children = new IFeatureChild[result.length];
-// for (int i = 0 ;i<children.length; i++){
-// children[i] = (IFeatureChild)result[i];
-// }
-// return children;
-// }
-
public IFeaturePlugin[] getSelectedPlugins(){
+ IFeatureModel featureModel = ((FeaturePatchProvider)provider).getFeatureToPatch();
+ if (featureModel== null)
+ return new IFeaturePlugin[0];
Object[] result = tablePart.getSelection();
IFeaturePlugin[] plugins = new IFeaturePlugin[result.length];
for (int i = 0 ;i<plugins.length; i++){
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/PatchSpecPage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/PatchSpecPage.java
index 5c70e31..ebdca6d 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/PatchSpecPage.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/PatchSpecPage.java
@@ -13,6 +13,8 @@
import java.util.*;
+import org.eclipse.jface.dialogs.*;
+import org.eclipse.jface.wizard.*;
import org.eclipse.pde.internal.core.ifeature.*;
import org.eclipse.pde.internal.ui.*;
import org.eclipse.ui.dialogs.*;
@@ -58,26 +60,35 @@
setErrorMessage(PDEPlugin.getResourceString(KEY_LIBRARY_MISSING));
return;
}
-
- if (canFlipToNextPage()) {
-
- IFeatureModel[] featureModels = getAllFeatureModels();
-
- for (int i = 0; i < featureModels.length; i++) {
- IFeature feature = featureModels[i].getFeature();
- if (feature.getId().equals(featureIdText.getText())
- && feature.getVersion().equals(featureVersionText.getText())) {
- fFeatureToPatch = feature.getModel();
- return;
- }
- }
- fFeatureToPatch = null;
+ IFeatureModel[] featureModels = getAllFeatureModels();
+
+ for (int i = 0; i < featureModels.length; i++) {
+ IFeature feature = featureModels[i].getFeature();
+ if (feature.getId().equals(featureIdText.getText())
+ && feature.getVersion().equals(featureVersionText.getText())) {
+ fFeatureToPatch = feature.getModel();
+ setMessage(null);
+ setPageComplete(true);
+ setErrorMessage(null);
+ return;
+ }
}
-
- setPageComplete(true);
+
+ fFeatureToPatch = null;
+ setMessage(PDEPlugin.getFormattedMessage("NewFeaturePatch.SpecPage.notFound", featureIdText.getText()), DialogPage.WARNING); //$NON-NLS-1$
setErrorMessage(null);
-
+ getContainer().updateButtons();
+ return;
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.WizardPage#getNextPage()
+ */
+ public IWizardPage getNextPage() {
+ if (fFeatureToPatch == null)
+ return null;
+ return super.getNextPage();
+ }
private String getPatchId() {
if (patchIdText == null)
@@ -96,7 +107,7 @@
return ""; //$NON-NLS-1$
return patchProviderText.getText();
}
-
+
public FeatureData getFeatureData() {
FeatureData data = new FeatureData();
data.id = getPatchId();
@@ -105,6 +116,9 @@
data.name = getPatchName();
data.library = getInstallHandlerLibrary();
data.hasCustomHandler = customChoice.getSelection();
+ data.isPatch = true;
+ data.featureToPatchId = featureIdText.getText();
+ data.featureToPatchVersion = featureVersionText.getText();
return data;
}