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;
 	}