diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectFrameworkImpl.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectFrameworkImpl.java
index 32366c3..26768d3 100644
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectFrameworkImpl.java
+++ b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectFrameworkImpl.java
@@ -661,22 +661,22 @@
         if( project.isAccessible() &&
             project.isNatureEnabled( FacetedProjectNature.NATURE_ID ) )
         {
+            FacetedProject fproj = null;
+            
             synchronized( this.projects )
             {
-                FacetedProject fproj = this.projects.get( project.getName() );
+                fproj = this.projects.get( project.getName() );
                 
                 if( fproj == null )
                 {
                     fproj = new FacetedProject( project );
                     this.projects.put( project.getName(), fproj );
                 }
-                else
-                {
-                    fproj.refresh();
-                }
-                
-                return fproj;
             }
+
+            fproj.refresh();
+            
+            return fproj;
         }
 
         return null;
diff --git a/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsPropertyPage.java b/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsPropertyPage.java
index e006e84..c828a45 100644
--- a/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsPropertyPage.java
+++ b/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsPropertyPage.java
@@ -17,6 +17,7 @@
 import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gdhhint;
 import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gl;
 import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.glmargins;
+import static org.eclipse.wst.common.project.facet.ui.internal.util.SwtUtil.runOnDisplayThread;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.Set;
@@ -236,9 +237,17 @@
 	
 	private void handleProjectModifiedEvent()
 	{
-		updateApplyButton();
-		getContainer().updateButtons();
-		updateFurtherConfigHyperlink();
+        final Runnable runnable = new Runnable()
+        {
+            public void run()
+            {
+                updateApplyButton();
+                getContainer().updateButtons();
+                updateFurtherConfigHyperlink();
+            }
+        };
+        
+        runOnDisplayThread( this.topComposite.getDisplay(), runnable );
 	}
 	
 	private void updateFurtherConfigHyperlink()
diff --git a/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsSelectionPanel.java b/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsSelectionPanel.java
index 7de0fc5..0b3e21b 100644
--- a/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsSelectionPanel.java
+++ b/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsSelectionPanel.java
@@ -20,7 +20,7 @@
 import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gdwhint;
 import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gl;
 import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.glmargins;
-import static org.eclipse.wst.common.project.facet.ui.internal.util.SwtUtil.getPreferredWidth;
+import static org.eclipse.wst.common.project.facet.ui.internal.util.SwtUtil.*;
 
 import java.lang.reflect.Method;
 import java.net.URL;
@@ -1063,7 +1063,8 @@
                 }
             };
             
-            getDisplay().syncExec( uiRunnable );
+            getDisplay().asyncExec( uiRunnable );
+            
             return;
         }
         
@@ -1106,14 +1107,18 @@
         switch( event.getType() )
         {
             case FIXED_FACETS_CHANGED:
-            {
-                refresh();
-                
-                break;
-            }
             case TARGETED_RUNTIMES_CHANGED:
             {
-                refresh();
+                final Runnable runnable = new Runnable()
+                {
+                    public void run()
+                    {
+                        refresh();
+                    }
+                };
+                
+                runOnDisplayThread( getDisplay(), runnable );
+                
                 break;
             }
         }
diff --git a/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/util/SwtUtil.java b/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/util/SwtUtil.java
index b12c62f..f116724 100644
--- a/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/util/SwtUtil.java
+++ b/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/util/SwtUtil.java
@@ -13,6 +13,7 @@
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
 
 /**
  * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
@@ -24,5 +25,18 @@
     {
         return control.computeSize( SWT.DEFAULT, SWT.DEFAULT ).x;
     }
+    
+    public static void runOnDisplayThread( final Display display,
+                                           final Runnable runnable )
+    {
+        if( display.getThread() == Thread.currentThread() )
+        {
+            runnable.run();
+        }
+        else
+        {
+            display.asyncExec( runnable );
+        }
+    }
 
 }
