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();