206433 Drag and drop operation causes a problem in Capability Patterns
diff --git a/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/ui/TeamSelection.java b/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/ui/TeamSelection.java
index b2b9032..494d7b8 100644
--- a/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/ui/TeamSelection.java
+++ b/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/ui/TeamSelection.java
@@ -10,10 +10,10 @@
 //------------------------------------------------------------------------------
 package org.eclipse.epf.library.edit.ui;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
 import org.eclipse.epf.library.edit.LibraryEditResources;
 import org.eclipse.epf.library.edit.TngAdapterFactory;
@@ -73,23 +73,35 @@
 //		labelProvider.dispose();
 //		return (TeamProfile) obj;
 		
-		IUserInteractionHandler uiHandler = ExtensionManager
+		final IUserInteractionHandler uiHandler = ExtensionManager
 				.getDefaultUserInteractionHandler();
 		if (uiHandler != null) {
-			ILabelProvider labelProvider = new AdapterFactoryLabelProvider(
+			final ILabelProvider labelProvider = new AdapterFactoryLabelProvider(
 					TngAdapterFactory.INSTANCE.getOBS_ComposedAdapterFactory());
-			String title = LibraryEditResources.selectTeamsDialog_title;
-			String msg = NLS.bind(LibraryEditResources.selectTeamsDialog_text, (new Object[] { role.getName() }));
+			final String title = LibraryEditResources.selectTeamsDialog_title;
+			final String msg = NLS.bind(LibraryEditResources.selectTeamsDialog_text, (new Object[] { role.getName() }));
 			try {
-				List selected = uiHandler.select(teamList, labelProvider, false,
-						teamList, title, msg);
-				if (selected == null) {
+				final List finalSelected = new ArrayList();
+				final List finalTeams = new ArrayList();
+				finalTeams.addAll(teamList);
+			
+				UserInteractionHelper.runInUIThread(new Runnable() {
+					public void run() {
+						List selected = uiHandler.select(finalTeams, labelProvider, false,
+								finalTeams, title, msg);
+						
+						if (selected != null)
+							finalSelected.addAll(selected);
+					}
+				});
+				
+				if (finalSelected == null) {
 					throw new OperationCanceledException();
 				}
-				if(selected.isEmpty()) {
+				if(finalSelected.isEmpty()) {
 					return null;
 				}
-				return (TeamProfile) selected.get(0);
+				return (TeamProfile) finalSelected.get(0);
 			}
 			finally {
 				labelProvider.dispose();