[294630] Invalid thread access FacetsSelectionPanel.handleProjectFacetsChangedEvent
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 d4ed091..ea313c6 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
@@ -910,6 +910,21 @@
     
     private void handleProjectFacetsChangedEvent( final IFacetedProjectEvent event )
     {
+        if( ! Thread.currentThread().equals( getDisplay().getThread() ) )
+        {
+            final Runnable uiRunnable = new Runnable()
+            {
+                public void run()
+                {
+                    handleProjectFacetsChangedEvent( event );
+                }
+            };
+            
+            getDisplay().asyncExec( uiRunnable );
+            
+            return;
+        }
+        
         final Set<ICategory> affectedCategories = new HashSet<ICategory>();
         
         if( event != null )
@@ -924,13 +939,8 @@
                 final IProjectFacet f = fv.getProjectFacet();
                 final boolean checked = fpjwc.hasProjectFacet( fv );
                 
-                final CheckboxTreeViewer treeViewer = this.treeViewer;
-                Display.getDefault().asyncExec(new Runnable() {
-                        public void run() {
-                            treeViewer.setChecked( f, checked );
-                            treeViewer.update( f, null );
-                        }
-                });
+                this.treeViewer.setChecked( f, checked );
+                this.treeViewer.update( f, null );
 
                 final ICategory category = f.getCategory();