Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorddunne2010-04-09 17:12:05 +0000
committerddunne2010-04-09 17:12:05 +0000
commita7a3f9067af7843c19680bab9ea5bdb417a569fb (patch)
tree6ab401c1e2545a070c40251046ea4f3f74e6b879
parentac593b73fcf9aa3361d109e4086c3192146a1c63 (diff)
downloadorg.eclipse.osee-a7a3f9067af7843c19680bab9ea5bdb417a569fb.tar.gz
org.eclipse.osee-a7a3f9067af7843c19680bab9ea5bdb417a569fb.tar.xz
org.eclipse.osee-a7a3f9067af7843c19680bab9ea5bdb417a569fb.zip
goal ordering
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java26
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAGoalMembersSection.java4
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java13
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewer.java53
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java2
5 files changed, 70 insertions, 28 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java
index 3b256d78b88..1ccc3a29d9c 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/GoalArtifact.java
@@ -183,6 +183,9 @@ public class GoalArtifact extends StateMachineArtifact {
}
}
+ /**
+ * change goal, prompt if member of two goals
+ */
public static GoalArtifact promptChangeGoalOrder(Artifact artifact) throws OseeCoreException {
if (!isHasGoal(artifact)) {
AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact));
@@ -203,15 +206,26 @@ public class GoalArtifact extends StateMachineArtifact {
return null;
}
}
+ return promptChangeGoalOrder(goal, artifact);
+ }
+
+ /**
+ * change goal order for artifact within given goal
+ */
+ public static GoalArtifact promptChangeGoalOrder(GoalArtifact goalArtifact, Artifact artifact) throws OseeCoreException {
+ if (!isHasGoal(artifact) || goalArtifact == null) {
+ AWorkbench.popup(String.format("No Goal set for artifact [%s]", artifact));
+ return null;
+ }
- List<Artifact> members = goal.getMembers();
- String currIndexStr = getGoalOrder(goal, artifact);
+ List<Artifact> members = goalArtifact.getMembers();
+ String currIndexStr = getGoalOrder(goalArtifact, artifact);
EntryDialog ed =
new EntryDialog(
"Change Goal Order",
String.format(
"Goal: %s\n\nCurrent Order: %s\n\nEnter New Order Number from 1..%d or %d for last\n\nNote: Goal will be placed before number entered.",
- goal, currIndexStr, members.size(), members.size() + 1));
+ goalArtifact, currIndexStr, members.size(), members.size() + 1));
ed.setNumberFormat(NumberFormat.getIntegerInstance());
int result = ed.open();
@@ -225,9 +239,9 @@ public class GoalArtifact extends StateMachineArtifact {
return null;
}
Artifact insertTarget = members.get(membersIndex);
- goal.setRelationOrder(AtsRelationTypes.Goal_Member, insertTarget, insertLast ? true : false, artifact);
- goal.persist();
- return goal;
+ goalArtifact.setRelationOrder(AtsRelationTypes.Goal_Member, insertTarget, insertLast ? true : false, artifact);
+ goalArtifact.persist();
+ return goalArtifact;
}
return null;
}
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 5f6e1aa84e1..618f56cfc0f 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
@@ -75,12 +75,14 @@ public class SMAGoalMembersSection extends SectionPart implements IWorldEditor {
addDropToAddLabel(toolkit, sectionBody);
addDropToRemoveLabel(toolkit, sectionBody);
- worldComposite = new WorldComposite(this, new GoalXViewerFactory(), sectionBody, SWT.BORDER);
+ worldComposite =
+ new WorldComposite(this, new GoalXViewerFactory((GoalArtifact) editor.getSma()), sectionBody, SWT.BORDER);
try {
CustomizeData customizeData = worldComposite.getCustomizeDataCopy();
worldComposite.load("Members", editor.getSma().getRelatedArtifacts(AtsRelationTypes.Goal_Member),
customizeData, TableLoadOption.None);
((WorldLabelProvider) worldComposite.getXViewer().getLabelProvider()).setParentGoal((GoalArtifact) editor.getSma());
+
} catch (OseeCoreException ex) {
OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE, ex);
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java
index 954037af933..59ca7d4b882 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/GoalXViewerFactory.java
@@ -17,6 +17,7 @@ import org.eclipse.nebula.widgets.xviewer.XViewer;
import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
import org.eclipse.nebula.widgets.xviewer.XViewerSorter;
import org.eclipse.nebula.widgets.xviewer.customize.CustomizeData;
+import org.eclipse.osee.ats.artifact.GoalArtifact;
import org.eclipse.osee.ats.internal.AtsPlugin;
import org.eclipse.osee.ats.world.AtsWorldEditorItems;
import org.eclipse.osee.ats.world.IAtsWorldEditorItem;
@@ -30,6 +31,7 @@ import org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet.SkynetXViewer
*/
public class GoalXViewerFactory extends SkynetXViewerFactory {
+ private GoalArtifact soleGoalArtifact;
public static final List<XViewerColumn> GoalViewerVisibleColumns =
Arrays.asList(WorldXViewerFactory.Goal_Order, WorldXViewerFactory.Goal_Order_Vote_Col,
WorldXViewerFactory.Title_Col, WorldXViewerFactory.Type_Col, WorldXViewerFactory.State_Col,
@@ -38,8 +40,9 @@ public class GoalXViewerFactory extends SkynetXViewerFactory {
WorldXViewerFactory.Version_Target_Col, WorldXViewerFactory.Notes_Col);
public static Integer[] widths = new Integer[] {75, 75, 250, 60, 60, 20, 20, 100, 50, 50, 50, 80};
- public GoalXViewerFactory() {
+ public GoalXViewerFactory(GoalArtifact soleGoalArtifact) {
super("org.eclipse.osee.ats.GoalXViewer");
+ this.soleGoalArtifact = soleGoalArtifact;
int widthIndex = 0;
// Create new column from world columns but set show and width for task
for (XViewerColumn taskCol : GoalViewerVisibleColumns) {
@@ -86,4 +89,12 @@ public class GoalXViewerFactory extends SkynetXViewerFactory {
return customizeData;
}
+ public GoalArtifact getSoleGoalArtifact() {
+ return soleGoalArtifact;
+ }
+
+ public void setSoleGoalArtifact(GoalArtifact soleGoalArtifact) {
+ this.soleGoalArtifact = soleGoalArtifact;
+ }
+
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewer.java
index 1c1ad42133d..3cd49a71015 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewer.java
@@ -48,6 +48,7 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
import org.eclipse.osee.ats.artifact.VersionArtifact.VersionReleaseType;
import org.eclipse.osee.ats.editor.SMAPromptChangeStatus;
+import org.eclipse.osee.ats.goal.GoalXViewerFactory;
import org.eclipse.osee.ats.internal.AtsPlugin;
import org.eclipse.osee.ats.task.TaskEditor;
import org.eclipse.osee.ats.task.TaskEditorSimpleProvider;
@@ -725,18 +726,6 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts, IArt
return arts;
}
- public ArrayList<GoalArtifact> getLoadedGoals() {
- ArrayList<GoalArtifact> arts = new ArrayList<GoalArtifact>();
- if (getRoot() != null) {
- for (Object artifact : (Collection<?>) getRoot()) {
- if (artifact instanceof GoalArtifact) {
- arts.add((GoalArtifact) artifact);
- }
- }
- }
- return arts;
- }
-
public void clear(boolean forcePend) {
((WorldContentProvider) getContentProvider()).clear(forcePend);
}
@@ -1014,11 +1003,7 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts, IArt
} else if (xCol.equals(WorldXViewerFactory.Priority_Col)) {
modified = PromptChangeUtil.promptChangePriority(sma, persist);
} else if (xCol.equals(WorldXViewerFactory.Goal_Order)) {
- GoalArtifact changedGoal = GoalArtifact.promptChangeGoalOrder((Artifact) treeItem.getData());
- if (changedGoal != null) {
- refresh(changedGoal);
- update(useArt, null);
- }
+ handleAltLeftClickGoalOrder(treeItem, sma);
return false;
}
if (modified) {
@@ -1031,6 +1016,27 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts, IArt
return false;
}
+ private void handleAltLeftClickGoalOrder(TreeItem treeItem, StateMachineArtifact sma) throws OseeCoreException {
+
+ GoalArtifact parentGoalArtifact = null;
+ if (xViewerFactory instanceof GoalXViewerFactory) {
+ parentGoalArtifact = ((GoalXViewerFactory) xViewerFactory).getSoleGoalArtifact();
+ }
+ if (parentGoalArtifact == null) {
+ parentGoalArtifact = getParentGoalArtifact(treeItem);
+ }
+ GoalArtifact changedGoal = null;
+ if (parentGoalArtifact != null) {
+ changedGoal = GoalArtifact.promptChangeGoalOrder(parentGoalArtifact, (Artifact) treeItem.getData());
+ } else {
+ changedGoal = GoalArtifact.promptChangeGoalOrder((Artifact) treeItem.getData());
+ }
+ if (changedGoal != null) {
+ refresh(changedGoal);
+ update(sma, null);
+ }
+ }
+
public String getExtendedStatusString() {
return extendedStatusString;
}
@@ -1066,14 +1072,21 @@ public class WorldXViewer extends XViewer implements ISelectedAtsArtifacts, IArt
}
+ private GoalArtifact getParentGoalArtifact(TreeItem treeItem) {
+ if (Widgets.isAccessible(treeItem) && Widgets.isAccessible(treeItem.getParentItem()) && treeItem.getParentItem().getData() instanceof GoalArtifact) {
+ return (GoalArtifact) treeItem.getParentItem().getData();
+ }
+ return null;
+ }
+
/**
* store off parent goalItem in label provider so it can determine parent when providing order of goal member
*/
protected void doUpdateItem(Item item, Object element) {
if (item instanceof TreeItem) {
- TreeItem treeItem = (TreeItem) item;
- if (Widgets.isAccessible(treeItem) && Widgets.isAccessible(treeItem.getParentItem()) && treeItem.getParentItem().getData() instanceof GoalArtifact) {
- ((WorldLabelProvider) getLabelProvider()).setParentGoal((GoalArtifact) treeItem.getParentItem().getData());
+ GoalArtifact parentGoalArtifact = getParentGoalArtifact((TreeItem) item);
+ if (parentGoalArtifact != null) {
+ ((WorldLabelProvider) getLabelProvider()).setParentGoal(parentGoalArtifact);
}
}
super.doUpdateItem(item, element);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java
index 8ee01c09725..dd5b16f51ab 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/WorldXViewerFactory.java
@@ -16,6 +16,7 @@ import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
import org.eclipse.nebula.widgets.xviewer.XViewerSorter;
import org.eclipse.nebula.widgets.xviewer.XViewerColumn.SortDataType;
import org.eclipse.osee.ats.artifact.ATSAttributes;
+import org.eclipse.osee.ats.artifact.GoalArtifact;
import org.eclipse.osee.ats.internal.AtsPlugin;
import org.eclipse.osee.ats.util.xviewer.column.XViewerAtsAttributeColumn;
import org.eclipse.osee.ats.util.xviewer.column.XViewerSmaCreatedDateColumn;
@@ -32,6 +33,7 @@ import org.eclipse.swt.SWT;
*/
public class WorldXViewerFactory extends SkynetXViewerFactory {
+ public GoalArtifact soleGoalArtifact;
public static String COLUMN_NAMESPACE = "ats.column";
public static final XViewerColumn Type_Col =
new XViewerColumn("ats.column.type", "Type", 150, SWT.LEFT, true, SortDataType.String, false, null);

Back to the top