Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmisinco2012-09-17 21:26:14 +0000
committerRoberto E. Escobar2012-09-17 21:26:14 +0000
commit4b11cd1017a6993ab62e31b41f60347a5dbebe95 (patch)
tree84e6f29c985774c38c781b34842ee76c10fc21df
parent017b3a93a8c5bc7e73a91471c2bfec059ed44d52 (diff)
downloadorg.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
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java62
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAMembersTab.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/RemoveFromGoalAction.java5
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);
}

Back to the top