[213005] can't use a new targeted runtime in the WebProject creati...
[214375] Facet runtime filtered on initial 1st page dropdown
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizardPage.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizardPage.java
index ec057a4..bcbfdef 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizardPage.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizardPage.java
@@ -23,6 +23,7 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelEvent;
@@ -423,18 +424,27 @@
 	 * @see org.eclipse.wst.common.frameworks.internal.operation.WTPOperationDataModelListener#propertyChanged(java.lang.String,
 	 *      java.lang.Object, java.lang.Object)
 	 */
-	public void propertyChanged(DataModelEvent event) {
+	public void propertyChanged(final DataModelEvent event) {
 		DataModelWizard w = getDataModelWizard();
-		if(w == null || !w.isExecuting()){
-			String propertyName = event.getPropertyName();
-			if (validationPropertyNames != null && (event.getFlag() == DataModelEvent.VALUE_CHG || (!isPageComplete() && event.getFlag() == DataModelEvent.VALID_VALUES_CHG))) {
-				for (int i = 0; i < validationPropertyNames.length; i++) {
-					if (validationPropertyNames[i].equals(propertyName)) {
-						validatePage(showValidationErrorsOnEnter());
-						break;
-					}
-				}
-			}
+		if(w == null || !w.isExecuting())
+		{
+		    final Runnable uiChanges = new Runnable()
+		    {
+		        public void run()
+		        {
+        			String propertyName = event.getPropertyName();
+        			if (validationPropertyNames != null && (event.getFlag() == DataModelEvent.VALUE_CHG || (!isPageComplete() && event.getFlag() == DataModelEvent.VALID_VALUES_CHG))) {
+        				for (int i = 0; i < validationPropertyNames.length; i++) {
+        					if (validationPropertyNames[i].equals(propertyName)) {
+        						validatePage(showValidationErrorsOnEnter());
+        						break;
+        					}
+        				}
+        			}
+		        }
+		    };
+		    
+		    Display.getDefault().syncExec(uiChanges);
 		}
 	}
 
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java
index 914cbac..de11b89 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java
@@ -47,6 +47,7 @@
 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent;
 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener;
 import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
+import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
 
 public class FacetProjectCreationDataModelProvider extends AbstractDataModelProvider implements IFacetProjectCreationDataModelProperties {
 
@@ -117,7 +118,7 @@
                     model.notifyPropertyChange(FACET_RUNTIME, IDataModel.VALID_VALUES_CHG);
                 }
             },
-            IFacetedProjectEvent.Type.TARGETABLE_RUNTIMES_CHANGED
+            IFacetedProjectEvent.Type.AVAILABLE_RUNTIMES_CHANGED
         );
 		
 		IDataModel projectDataModel = DataModelFactory.createDataModel(new ProjectCreationDataModelProviderNew());
@@ -369,10 +370,32 @@
             final IFacetedProjectWorkingCopy fpjwc 
                 = (IFacetedProjectWorkingCopy) this.model.getProperty( FACETED_PROJECT_WORKING_COPY );
             
-            final Set<IRuntime> targetableRuntimes = fpjwc.getTargetableRuntimes();
+            final Set<IProjectFacet> fixedFacets = fpjwc.getFixedProjectFacets();
+            final ArrayList list = new ArrayList();
 
-			DataModelPropertyDescriptor[] descriptors = new DataModelPropertyDescriptor[targetableRuntimes.size() + 1];
-			Iterator iterator = targetableRuntimes.iterator();
+            for( IRuntime rt : RuntimeManager.getRuntimes() ) 
+            {
+                // add this runtime in the list only if it supports all of the required facets
+
+                boolean supports = true;
+                
+                for( IProjectFacet facet : fixedFacets )
+                {
+                    if( ! rt.supports( facet ) )
+                    {
+                        supports = false;
+                        break;
+                    }
+                }
+                
+                if( supports ) 
+                {
+                    list.add(rt);
+                }
+            }
+
+            DataModelPropertyDescriptor[] descriptors = new DataModelPropertyDescriptor[list.size() + 1];
+			Iterator iterator = list.iterator();
 			for (int i = 0; i < descriptors.length - 1; i++) {
 				IRuntime runtime = (IRuntime) iterator.next();
 				descriptors[i] = new DataModelPropertyDescriptor(runtime, runtime.getLocalizedName());