diff options
author | jmisinco | 2012-09-17 21:26:14 +0000 |
---|---|---|
committer | Roberto E. Escobar | 2012-09-17 21:26:14 +0000 |
commit | 4b11cd1017a6993ab62e31b41f60347a5dbebe95 (patch) | |
tree | 84e6f29c985774c38c781b34842ee76c10fc21df | |
parent | 017b3a93a8c5bc7e73a91471c2bfec059ed44d52 (diff) | |
download | org.eclipse.osee-4b11cd1017a6993ab62e31b41f60347a5dbebe95.tar.gz org.eclipse.osee-4b11cd1017a6993ab62e31b41f60347a5dbebe95.tar.xz org.eclipse.osee-4b11cd1017a6993ab62e31b41f60347a5dbebe95.zip |
bug[ats_NZ8RP]: Cannot drop artifacts into empty goal
3 files changed, 41 insertions, 27 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java index dad50c10126..76e530faedb 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java @@ -292,7 +292,8 @@ public class SMAGoalMembersSection extends Composite implements ISelectedAtsArti @Override public void removedFromGoal(Collection<? extends Artifact> removed) { worldComposite.removeItems(removed); - worldComposite.update(); + worldComposite.getXViewer().remove(removed); + worldComposite.getXViewer().refresh(goalArtifact); } }; @@ -352,6 +353,8 @@ public class SMAGoalMembersSection extends Composite implements ISelectedAtsArti private class GoalDragAndDrop extends WorldViewDragAndDrop { + private boolean isFeedbackAfter = false; + public GoalDragAndDrop(WorldComposite worldComposite, String viewId) { super(worldComposite, viewId); } @@ -364,16 +367,26 @@ public class SMAGoalMembersSection extends Composite implements ISelectedAtsArti } @Override + public void operationChanged(DropTargetEvent event) { + if (!(event.detail == 1)) { + isFeedbackAfter = false; + } else { + isFeedbackAfter = true; + } + } + + @Override public void performDragOver(DropTargetEvent event) { if (isValidForArtifactDrop(event)) { event.detail = DND.DROP_MOVE; - if (getSelectedArtifact(event) != null) { - event.feedback = DND.FEEDBACK_INSERT_AFTER | DND.FEEDBACK_SCROLL; - } else { - event.feedback = DND.FEEDBACK_INSERT_BEFORE | DND.FEEDBACK_SCROLL; + Artifact selectedArtifact = getSelectedArtifact(event); + if (selectedArtifact != null) { + if (isFeedbackAfter) { + event.feedback = DND.FEEDBACK_INSERT_AFTER | DND.FEEDBACK_SCROLL; + } else { + event.feedback = DND.FEEDBACK_INSERT_BEFORE | DND.FEEDBACK_SCROLL; + } } - } else { - event.detail = DND.DROP_COPY; } } @@ -383,26 +396,25 @@ public class SMAGoalMembersSection extends Composite implements ISelectedAtsArti final List<Artifact> droppedArtifacts = Arrays.asList(artData.getArtifacts()); final Artifact dropTarget = getSelectedArtifact(event); if (ArtifactTransfer.getInstance().isSupportedType(event.currentDataType)) { - if (dropTarget == null) { - super.performDrop(event); - } else { - try { - Collections.reverse(droppedArtifacts); - List<Artifact> members = goalArtifact.getMembers(); - for (Artifact dropped : droppedArtifacts) { - if (!members.contains(dropped)) { - goalArtifact.addMember(dropped); - worldComposite.insert(dropped, members.indexOf(dropTarget)); - worldComposite.update(); - } - goalArtifact.setRelationOrder(AtsRelationTypes.Goal_Member, dropTarget, true, dropped); + try { + Collections.reverse(droppedArtifacts); + List<Artifact> members = goalArtifact.getMembers(); + for (Artifact dropped : droppedArtifacts) { + if (!members.contains(dropped)) { + goalArtifact.addMember(dropped); + int index = isFeedbackAfter ? members.indexOf(dropTarget) + 1 : members.indexOf(dropTarget); + worldComposite.insert(dropped, index); + worldComposite.update(); + } + if (dropTarget != null) { + goalArtifact.setRelationOrder(AtsRelationTypes.Goal_Member, dropTarget, isFeedbackAfter, dropped); } - goalArtifact.persist(SMAGoalMembersSection.class.getSimpleName()); - worldComposite.getXViewer().refresh(goalArtifact); - worldComposite.getXViewer().update(dropTarget, null); - } catch (OseeCoreException ex) { - OseeLog.log(Activator.class, Level.WARNING, Lib.exceptionToString(ex)); } + goalArtifact.persist(SMAGoalMembersSection.class.getSimpleName()); + worldComposite.getXViewer().refresh(goalArtifact); + worldComposite.getXViewer().update(dropTarget, null); + } catch (OseeCoreException ex) { + OseeLog.log(Activator.class, Level.WARNING, Lib.exceptionToString(ex)); } } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAMembersTab.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAMembersTab.java index 3950a0cb911..2a5ab9ef1f8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAMembersTab.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAMembersTab.java @@ -228,6 +228,7 @@ public class SMAMembersTab extends FormPage implements IWorldViewerEventHandler sc.setOrigin(origin); } }); + getSite().setSelectionProvider(smaGoalMembersSection.getWorldComposite().getWorldXViewer()); return true; } return false; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/RemoveFromGoalAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/RemoveFromGoalAction.java index 57c55b2030d..437f15560b5 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/RemoveFromGoalAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/RemoveFromGoalAction.java @@ -60,8 +60,9 @@ public class RemoveFromGoalAction extends Action { AWorkbench.popup("No items selected"); return; } - if (MessageDialog.openConfirm(Displays.getActiveShell(), "Remove from Goal", - String.format("Remove [%s] from Goal [%s]?", selected, goalArt))) { + if (MessageDialog.openConfirm(Displays.getActiveShell(), "Remove from Goal", String.format( + "Remove the selected %d artifact%s from the Goal [%s]?", selected.size(), selected.size() > 1 ? "s" : "", + goalArt))) { for (Artifact art : selected) { goalArt.deleteRelation(AtsRelationTypes.Goal_Member, art); } |