Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorddunne2008-12-31 19:20:46 +0000
committerddunne2008-12-31 19:20:46 +0000
commit41886117a580ca8a8f76a280f88e9ec05463c512 (patch)
treea85f314797facdc88aa7d540c6449a9c3e61d637
parente4e0a185b705322ef8023594e155f0b1ba3ab612 (diff)
downloadorg.eclipse.osee-41886117a580ca8a8f76a280f88e9ec05463c512.tar.gz
org.eclipse.osee-41886117a580ca8a8f76a280f88e9ec05463c512.tar.xz
org.eclipse.osee-41886117a580ca8a8f76a280f88e9ec05463c512.zip
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java10
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditorPaletteFactory.java3
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramTool.java52
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramToolEntry.java27
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Connection.java15
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/EllipticalShape.java9
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ModelElement.java3
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/RectangleShape.java9
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Shape.java12
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java31
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java69
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeCreateCommand.java4
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java2
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java4
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramTreeEditPart.java4
15 files changed, 232 insertions, 22 deletions
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java
index ac04aff00d2..423c36397ba 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditor.java
@@ -41,6 +41,7 @@ import org.eclipse.osee.ats.workflow.editor.parts.ShapesTreeEditPartFactory;
import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
import org.eclipse.osee.framework.ui.plugin.util.Displays;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
import org.eclipse.osee.framework.ui.skynet.util.OSEELog;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
@@ -148,7 +149,7 @@ public class AtsWorkflowConfigEditor extends GraphicalEditorWithFlyoutPalette {
return new TemplateTransferDropTargetListener(getGraphicalViewer()) {
@Override
protected CreationFactory getFactory(Object template) {
- return new SimpleFactory((Class) template);
+ return new SimpleFactory((Class<?>) template);
}
};
}
@@ -158,6 +159,12 @@ public class AtsWorkflowConfigEditor extends GraphicalEditorWithFlyoutPalette {
*/
@Override
public void doSave(IProgressMonitor monitor) {
+ Result result = diagram.validForSave();
+ if (result.isFalse()) {
+ AWorkbench.popup("Validate Error", result.getText());
+ return;
+ }
+
AWorkbench.popup("ERROR", "Not implemented yet");
}
@@ -169,6 +176,7 @@ public class AtsWorkflowConfigEditor extends GraphicalEditorWithFlyoutPalette {
AWorkbench.popup("ERROR", "Not implemented yet");
}
+ @SuppressWarnings("unchecked")
@Override
public Object getAdapter(Class type) {
if (type == IContentOutlinePage.class) return new ShapesOutlinePage(new TreeViewer());
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditorPaletteFactory.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditorPaletteFactory.java
index a56dc6a2b0a..cada11dff12 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditorPaletteFactory.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/AtsWorkflowConfigEditorPaletteFactory.java
@@ -22,6 +22,7 @@ import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gef.requests.CreationFactory;
import org.eclipse.gef.requests.SimpleFactory;
import org.eclipse.osee.ats.AtsPlugin;
+import org.eclipse.osee.ats.workflow.editor.actions.ValidateDiagramToolEntry;
import org.eclipse.osee.ats.workflow.editor.model.CancelledWorkPageShape;
import org.eclipse.osee.ats.workflow.editor.model.CompletedWorkPageShape;
import org.eclipse.osee.ats.workflow.editor.model.Connection;
@@ -144,6 +145,8 @@ final class AtsWorkflowConfigEditorPaletteFactory {
// Add a marquee tool to the group
toolbar.add(new MarqueeToolEntry());
+ toolbar.add(new ValidateDiagramToolEntry());
+
return toolbar;
}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramTool.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramTool.java
new file mode 100644
index 00000000000..f2642d75c62
--- /dev/null
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramTool.java
@@ -0,0 +1,52 @@
+/*
+ * Created on Dec 31, 2008
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.ats.workflow.editor.actions;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.SharedCursors;
+import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
+import org.eclipse.gef.tools.SelectionTool;
+import org.eclipse.osee.ats.workflow.editor.model.ModelElement;
+import org.eclipse.osee.ats.workflow.editor.parts.DiagramEditPart;
+import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
+import org.eclipse.swt.events.MouseEvent;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ValidateDiagramTool extends SelectionTool {
+
+ public ValidateDiagramTool() {
+ setDefaultCursor(SharedCursors.ARROW);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.gef.tools.SelectionTool#mouseDown(org.eclipse.swt.events.MouseEvent, org.eclipse.gef.EditPartViewer)
+ */
+ @Override
+ public void mouseDown(MouseEvent e, EditPartViewer viewer) {
+ super.mouseDown(e, viewer);
+ EditPart editPart = getTargetEditPart();
+ Object model = editPart.getModel();
+ if (editPart instanceof ScalableFreeformRootEditPart) {
+ EditPart ePart = ((ScalableFreeformRootEditPart) editPart).getContents();
+ if (ePart instanceof DiagramEditPart) {
+ model = ((DiagramEditPart) ePart).getModel();
+ }
+ }
+ if (model instanceof ModelElement) {
+ Result result = ((ModelElement) model).validForSave();
+ if (result.isFalse()) {
+ AWorkbench.popup("Validate Error", model + "\n\n" + "Error: " + result.getText());
+ } else {
+ AWorkbench.popup("Validate Success", model + "\n\n" + "Valid");
+ }
+ }
+ }
+
+}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramToolEntry.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramToolEntry.java
new file mode 100644
index 00000000000..d6820b1088a
--- /dev/null
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/actions/ValidateDiagramToolEntry.java
@@ -0,0 +1,27 @@
+/*
+ * Created on Dec 31, 2008
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.ats.workflow.editor.actions;
+
+import org.eclipse.gef.palette.ToolEntry;
+import org.eclipse.osee.ats.AtsPlugin;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class ValidateDiagramToolEntry extends ToolEntry {
+
+ /**
+ * @param label
+ * @param shortDesc
+ * @param iconSmall
+ * @param iconLarge
+ */
+ public ValidateDiagramToolEntry() {
+ super("Validate Diagram", "Validate Diagram", AtsPlugin.getInstance().getImageDescriptor("check.gif"),
+ AtsPlugin.getInstance().getImageDescriptor("check.gif"), ValidateDiagramTool.class);
+ }
+
+}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Connection.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Connection.java
index 808fc07a6fd..98a1a932111 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Connection.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Connection.java
@@ -11,6 +11,7 @@
package org.eclipse.osee.ats.workflow.editor.model;
import org.eclipse.draw2d.Graphics;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;
@@ -56,6 +57,11 @@ public class Connection extends ModelElement {
return Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
}
+ @Override
+ public String toString() {
+ return "Transition: " + getPropertyValue(TYPE_PROP);
+ }
+
/**
* Disconnect this connection from the shapes it is attached to.
*/
@@ -76,6 +82,15 @@ public class Connection extends ModelElement {
return lineStyle;
}
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.ats.workflow.editor.model.ModelElement#validForSave()
+ */
+ @Override
+ public Result validForSave() {
+ System.err.println("Add Connection validations.");
+ return Result.TrueResult;
+ }
+
/**
* Returns the descriptor for the lineStyle property
*
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/EllipticalShape.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/EllipticalShape.java
index 10b1e539605..9b1bb0c7dcf 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/EllipticalShape.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/EllipticalShape.java
@@ -10,6 +10,7 @@
 *******************************************************************************/
package org.eclipse.osee.ats.workflow.editor.model;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
import org.eclipse.swt.graphics.Image;
/**
@@ -27,6 +28,14 @@ public class EllipticalShape extends Shape {
return ELLIPSE_ICON;
}
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.ats.workflow.editor.model.ModelElement#validForSave()
+ */
+ @Override
+ public Result validForSave() {
+ return Result.TrueResult;
+ }
+
@Override
public String toString() {
return "Ellipse " + hashCode();
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ModelElement.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ModelElement.java
index 550381c7628..4667182a801 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ModelElement.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/ModelElement.java
@@ -17,6 +17,7 @@ import java.io.ObjectInputStream;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertySource;
@@ -48,6 +49,8 @@ public abstract class ModelElement implements IPropertySource {
}
}
+ public abstract Result validForSave();
+
/**
* Attach a non-null PropertyChangeListener to this object.
*
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/RectangleShape.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/RectangleShape.java
index 861331a3378..cf0250e113d 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/RectangleShape.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/RectangleShape.java
@@ -11,6 +11,7 @@
package org.eclipse.osee.ats.workflow.editor.model;
import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
import org.eclipse.swt.graphics.Image;
/**
@@ -26,6 +27,14 @@ public class RectangleShape extends Shape {
setSize(new Dimension(100, 50));
}
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.ats.workflow.editor.model.ModelElement#validForSave()
+ */
+ @Override
+ public Result validForSave() {
+ return Result.TrueResult;
+ }
+
@Override
public Image getIcon() {
return RECTANGLE_ICON;
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Shape.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Shape.java
index 90979d330a7..f4ec0c2cc3c 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Shape.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/Shape.java
@@ -72,9 +72,9 @@ public abstract class Shape extends ModelElement {
/** Size of this shape. */
private final Dimension size = new Dimension(50, 50);
/** List of outgoing Connections. */
- private final List sourceConnections = new ArrayList();
+ private final List<Connection> sourceConnections = new ArrayList<Connection>();
/** List of incoming Connections. */
- private final List targetConnections = new ArrayList();
+ private final List<Connection> targetConnections = new ArrayList<Connection>();
private WorkflowDiagram workflowDiagram;
/**
@@ -193,15 +193,15 @@ public abstract class Shape extends ModelElement {
/**
* Return a List of outgoing Connections.
*/
- public List getSourceConnections() {
- return new ArrayList(sourceConnections);
+ public List<Connection> getSourceConnections() {
+ return new ArrayList<Connection>(sourceConnections);
}
/**
* Return a List of incoming Connections.
*/
- public List getTargetConnections() {
- return new ArrayList(targetConnections);
+ public List<Connection> getTargetConnections() {
+ return new ArrayList<Connection>(targetConnections);
}
/**
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java
index 36bc406c235..dd821172b22 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkPageShape.java
@@ -18,6 +18,7 @@ import org.eclipse.osee.ats.workflow.page.AtsCompletedWorkPageDefinition;
import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemAttributes;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinitionFactory;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
@@ -33,9 +34,8 @@ import org.eclipse.ui.views.properties.TextPropertyDescriptor;
public class WorkPageShape extends RectangleShape {
private final WorkPageDefinition workPageDefinition;
- private static String NAME = "Name";
private static String[] attributeProperties =
- new String[] {NAME, WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName(),
+ new String[] {WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName(),
WorkItemAttributes.WORK_ID.getAttributeTypeName(),
WorkItemAttributes.WORK_PARENT_ID.getAttributeTypeName()};
public static String START_PAGE = "Start Page";
@@ -113,6 +113,29 @@ public class WorkPageShape extends RectangleShape {
return workPageDefinition;
}
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.ats.workflow.editor.model.ModelElement#validForSave()
+ */
+ @Override
+ public Result validForSave() {
+ try {
+ String pageName = (String) getPropertyValue(WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName());
+ if (pageName == null || pageName.equals("")) return new Result(
+ WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName() + " can not be null");
+ String pageId = (String) getPropertyValue(WorkItemAttributes.WORK_ID.getAttributeTypeName());
+ if (pageId == null || pageId.equals("")) return new Result(
+ WorkItemAttributes.WORK_ID.getAttributeTypeName() + " can not be null");
+ String parentPageId = (String) getPropertyValue(WorkItemAttributes.WORK_PARENT_ID.getAttributeTypeName());
+ if (parentPageId != null && !parentPageId.equals("")) {
+ if (WorkItemDefinitionFactory.getWorkItemDefinition(parentPageId) == null) return new Result(
+ "Parent Id " + parentPageId + " Work Page Definition must exist and does not.");
+ }
+ } catch (OseeCoreException ex) {
+ return new Result("Exception in validation " + ex.getLocalizedMessage());
+ }
+ return Result.TrueResult;
+ }
+
public WorkPageShape(WorkPageDefinition workPageDefinition) {
this.workPageDefinition = workPageDefinition;
}
@@ -182,8 +205,8 @@ public class WorkPageShape extends RectangleShape {
public void setPropertyValue(Object propertyId, Object value) {
try {
initializePropertyValues();
- if (NAME.equals(propertyId)) {
- super.setPropertyValue(NAME, value);
+ if (WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName().equals(propertyId)) {
+ super.setPropertyValue(WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName(), value);
} else if (WorkItemAttributes.WORK_ID.getAttributeTypeName().equals(propertyId)) {
super.setPropertyValue(WorkItemAttributes.WORK_ID.getAttributeTypeName(), value);
} else if (WorkItemAttributes.WORK_PARENT_ID.getAttributeTypeName().equals(propertyId)) {
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java
index 852ad570de7..aa3f1aed04c 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/WorkflowDiagram.java
@@ -12,7 +12,9 @@ package org.eclipse.osee.ats.workflow.editor.model;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.osee.framework.ui.plugin.util.Result;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemAttributes;
/**
* A container for multiple shapes. This is the "root" of the model data structure.
@@ -22,10 +24,10 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
public class WorkflowDiagram extends ModelElement {
/** Property ID to use when a child is added to this diagram. */
- public static final String CHILD_ADDED_PROP = "ShapesDiagram.ChildAdded";
+ public static final String CHILD_ADDED_PROP = "WorkflowDiagram.ChildAdded";
/** Property ID to use when a child is removed from this diagram. */
- public static final String CHILD_REMOVED_PROP = "ShapesDiagram.ChildRemoved";
- private final List shapes = new ArrayList();
+ public static final String CHILD_REMOVED_PROP = "WorkflowDiagram.ChildRemoved";
+ private final List<Shape> shapes = new ArrayList<Shape>();
private final WorkFlowDefinition workFlowDefinition;
public WorkflowDiagram(WorkFlowDefinition workFlowDefinition) {
@@ -33,6 +35,65 @@ public class WorkflowDiagram extends ModelElement {
this.workFlowDefinition = workFlowDefinition;
}
+ @Override
+ public Result validForSave() {
+
+ // Validate # Completed states
+ int num = 0;
+ for (Shape shape : getChildren()) {
+ num += (shape instanceof CompletedWorkPageShape) ? 1 : 0;
+ }
+ if (num > 1 || num == 0) return new Result("Must have only 1 Completed state; Currently " + num);
+
+ // Validate # Cancelled states
+ num = 0;
+ for (Shape shape : getChildren()) {
+ num += (shape instanceof CancelledWorkPageShape) ? 1 : 0;
+ }
+ if (num > 1 || num == 0) return new Result("Must have only 1 Cancelled state; Currently " + num);
+
+ // Validate # other states
+ num = 0;
+ for (Shape shape : getChildren()) {
+ num += (!(shape instanceof CompletedWorkPageShape) && !(shape instanceof CancelledWorkPageShape)) ? 1 : 0;
+ }
+ if (num == 0) return new Result("Must have > 0 states; Currently " + num);
+
+ // Validate # other states
+ num = 0;
+ for (Shape shape : getChildren()) {
+ if (shape instanceof WorkPageShape) {
+ num += ((WorkPageShape) shape).isStartPage() ? 1 : 0;
+ }
+ }
+ if (num > 1 || num == 0) return new Result("Must have 1 start page; Currently " + num);
+
+ // Validate state names
+ List<String> stateNames = new ArrayList<String>();
+ for (Shape shape : getChildren()) {
+ if (shape instanceof WorkPageShape) {
+ String name =
+ (String) ((WorkPageShape) shape).getPropertyValue(WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName());
+ if (stateNames.contains(name)) {
+ return new Result("Workflow can not have more than one state of same name. Multiple of " + name);
+ }
+ stateNames.add(name);
+ }
+ }
+
+ // Validate children shapes
+ for (Shape shape : getChildren()) {
+ Result result = shape.validForSave();
+ if (result.isFalse()) return result;
+ }
+ return Result.TrueResult;
+ }
+
+ @Override
+ public String toString() {
+ return "Work Flow Definition: " + workFlowDefinition.getName();
+ }
+
/**
* Add a shape to this diagram.
*
@@ -56,7 +117,7 @@ public class WorkflowDiagram extends ModelElement {
}
/** Return a List of Shapes in this diagram. The returned List should not be modified. */
- public List getChildren() {
+ public List<Shape> getChildren() {
return shapes;
}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeCreateCommand.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeCreateCommand.java
index f2c247a8b74..ce4d4f6b1a5 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeCreateCommand.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeCreateCommand.java
@@ -31,10 +31,10 @@ public class ShapeCreateCommand extends Command {
private final Rectangle bounds;
/**
- * Create a command that will add a new Shape to a ShapesDiagram.
+ * Create a command that will add a new Shape to a WorkflowDiagram.
*
* @param newShape the new Shape that is to be added
- * @param parent the ShapesDiagram that will hold the new element
+ * @param parent the WorkflowDiagram that will hold the new element
* @param bounds the bounds of the new shape; the size can be (-1, -1) if not known
* @throws IllegalArgumentException if any parameter is null, or the request does not provide a new Shape instance
*/
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java
index ba12b17f439..880c956d79f 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/model/commands/ShapeDeleteCommand.java
@@ -38,7 +38,7 @@ public class ShapeDeleteCommand extends Command {
/**
* Create a command that will remove the shape from its parent.
*
- * @param parent the ShapesDiagram containing the child
+ * @param parent the WorkflowDiagram containing the child
* @param child the Shape to remove
* @throws IllegalArgumentException if any parameter is null
*/
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java
index c38ee27d48c..bd3b214c614 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramEditPart.java
@@ -39,7 +39,7 @@ import org.eclipse.osee.ats.workflow.editor.model.commands.ShapeCreateCommand;
import org.eclipse.osee.ats.workflow.editor.model.commands.ShapeSetConstraintCommand;
/**
- * EditPart for the a ShapesDiagram instance.
+ * EditPart for the a WorkflowDiagram instance.
* <p>
* This edit part server as the main diagram container, the white area where everything else is in. Also responsible for
* the container's layout (the way the container rearanges is contents) and the container's capabilities (edit
@@ -165,7 +165,7 @@ public class DiagramEditPart extends AbstractGraphicalEditPart implements Proper
protected Command getCreateCommand(CreateRequest request) {
Object childClass = request.getNewObjectType();
if (childClass == EllipticalShape.class || WorkPageShape.class.isAssignableFrom(((Class<?>) childClass))) {
- // return a command that can add a Shape to a ShapesDiagram
+ // return a command that can add a Shape to a WorkflowDiagram
return new ShapeCreateCommand((Shape) request.getNewObject(), (WorkflowDiagram) getHost().getModel(),
(Rectangle) getConstraintFor(request));
}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramTreeEditPart.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramTreeEditPart.java
index 4dff1e16fbb..2e6e484b943 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramTreeEditPart.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/editor/parts/DiagramTreeEditPart.java
@@ -22,7 +22,7 @@ import org.eclipse.osee.ats.workflow.editor.model.ModelElement;
import org.eclipse.osee.ats.workflow.editor.model.WorkflowDiagram;
/**
- * TreeEditPart for a ShapesDiagram instance. This is used in the Outline View of the ShapesEditor.
+ * TreeEditPart for a WorkflowDiagram instance. This is used in the Outline View of the ShapesEditor.
* <p>
* This edit part must implement the PropertyChangeListener interface, so it can be notified of property changes in the
* corresponding model element.
@@ -35,7 +35,7 @@ class DiagramTreeEditPart extends AbstractTreeEditPart implements PropertyChange
/**
* Create a new instance of this edit part using the given model element.
*
- * @param model a non-null ShapesDiagram instance
+ * @param model a non-null WorkflowDiagram instance
*/
DiagramTreeEditPart(WorkflowDiagram model) {
super(model);

Back to the top