178512 DnD: Error occurs when DnD a role who is responsible for a WP to CP/DP
diff --git a/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/process/command/OBSDropCommand.java b/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/process/command/OBSDropCommand.java
index 90b3914..92a53ff 100755
--- a/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/process/command/OBSDropCommand.java
+++ b/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/process/command/OBSDropCommand.java
@@ -65,7 +65,7 @@
private IConfigurator configrator;
private boolean newDuplicatesRemoved;
-
+
public OBSDropCommand(Activity act, List roles) {
super(act, roles);
for (Iterator iter = dropElements.iterator(); iter.hasNext();) {
@@ -168,14 +168,25 @@
List selectedWorkProducts = new ArrayList(
wpToExistingDescriptorMap.keySet());
workProducts.removeAll(selectedWorkProducts);
+
+ final List finalSelectedWps = new ArrayList();
if (!workProducts.isEmpty()) {
- List selected = UserInteractionHelper
- .selectWorkProducts(workProducts, role);
- if (selected != null) {
- selectedWorkProducts.addAll(selected);
- }
+ final List finalWps = new ArrayList();
+ finalWps.addAll(workProducts);
+ final Role finalRole = role;
+
+ UserInteractionHelper.runInUIThread(new Runnable() {
+ public void run() {
+ List selected = UserInteractionHelper
+ .selectWorkProducts(finalWps, finalRole);
+ if (selected != null) {
+ finalSelectedWps.addAll(selected);
+ }
+ }
+ });
}
+ selectedWorkProducts.addAll(finalSelectedWps);
if (!selectedWorkProducts.isEmpty()) {
HashSet allSelectedTasks = new HashSet();
@@ -250,10 +261,19 @@
}
if (!tasks.isEmpty()) {
+ final List finalTasks = tasks;
+ final WorkProduct finalWp = wp;
+ final List finalSelected = new ArrayList();
+ List selectedTasks = new ArrayList();
// show task selections dialog
- List selectedTasks = UserInteractionHelper
- .selectTasks(tasks, wp);
-
+ UserInteractionHelper.runInUIThread(new Runnable() {
+ public void run() {
+ List selected = UserInteractionHelper
+ .selectTasks(finalTasks, finalWp);
+ finalSelected.addAll(selected);
+ }
+ });
+ selectedTasks.addAll(finalSelected);
if ((selectedTasks != null)
&& ((!selectedTasks.isEmpty()))) {
allSelectedTasks.addAll(selectedTasks);
diff --git a/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/process/command/PBSDropCommand.java b/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/process/command/PBSDropCommand.java
index 3c951ee..8c7a333 100755
--- a/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/process/command/PBSDropCommand.java
+++ b/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/process/command/PBSDropCommand.java
@@ -215,10 +215,21 @@
List tasks = ProcessUtil.getTasksForWorkProduct(wp, config);
if ((tasks != null) && (tasks.size() > 0)) {
+ // show task selections dialog
+ final List finalTasks = tasks;
+ final WorkProduct finalWp = wp;
+ final List finalSelected = new ArrayList();
+ List selectedTasks = new ArrayList();
// show task selections dialog
- List selectedTasks = UserInteractionHelper.selectTasks(
- tasks, wp);
-
+ UserInteractionHelper.runInUIThread(new Runnable() {
+ public void run() {
+ List selected = UserInteractionHelper.selectTasks(
+ finalTasks, finalWp);
+ finalSelected.addAll(selected);
+ }
+ });
+ selectedTasks.addAll(finalSelected);
+
// create task descriptors for this workproduct
if ((selectedTasks != null) && (!(selectedTasks.isEmpty()))) {
for (int j = 0; j < selectedTasks.size(); j++) {