/build/
-/nbproject/private/
\ No newline at end of file
+/nbproject/private/
+/dist/
\ No newline at end of file
*/
package org.ufcspa.simdecs.diagram;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
+import java.util.LinkedList;
+import org.ufcspa.simdecs.diagram.elements.Empty;
+import org.ufcspa.simdecs.diagram.elements.Node;
import org.ufcspa.simdecs.diagram.elements.SwimLane;
/**
public class DiagramManager {
private String diagramName;
- private Map<String, SwimLane> swimLanes;
-
+ private LinkedList<SwimLane> swimLanes;
+
public DiagramManager(String diagramName) {
this.diagramName = diagramName;
- swimLanes = new TreeMap<String, SwimLane>();
+ swimLanes = new LinkedList<SwimLane>();
}
public void addSwimLane(SwimLane swimLane) {
- swimLanes.put(swimLane.getId(), swimLane);
+ if (!swimLanes.isEmpty()) {
+ while(swimLane.getNodes().size() < swimLanes.getFirst().getNodes().size()) {
+ swimLane.addNode(new Empty(swimLane.getMessageBundle(), swimLane.getLocale()));
+ }
+ }
+
+ swimLanes.add(swimLane);
}
public final void clear() {
- swimLanes = new HashMap<String, SwimLane>();
+ swimLanes = new LinkedList<SwimLane>();
}
public String getDiagramName() {
this.diagramName = diagramName;
}
- public ArrayList<SwimLane> getSwimLanes() {
- return new ArrayList(swimLanes.values());
+ public LinkedList<SwimLane> getSwimLanes() {
+ return swimLanes;
}
public SwimLane getSwimLane(String id) {
- return swimLanes.get(id);
+ for(SwimLane swimLane : swimLanes) {
+ if (swimLane.getId().equals(id))
+ return swimLane;
+ }
+
+ return null;
}
public void removeSwimLane(String id) {
- swimLanes.remove(id);
+ for(SwimLane swimLane : swimLanes) {
+ if (swimLane.getId().equals(id))
+ swimLanes.remove(swimLane);
+ }
}
+
+ public void addNode(SwimLane swimLane, Node node) {
+ swimLane.addNode(node);
+ for(SwimLane sl : swimLanes) {
+ if (!sl.equals(swimLane)) {
+ if (sl.getNodes().size() < swimLane.getNodes().size()) {
+ while(sl.getNodes().size() < swimLane.getNodes().size()) {
+ sl.addNode(new Empty(swimLane.getMessageBundle(), swimLane.getLocale()));
+ }
+ }
+ }
+ }
+ }
+
}
--- /dev/null
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.ufcspa.simdecs.diagram.elements;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ *
+ * @author maroni
+ */
+public class Empty extends Node {
+
+ public Empty(String messageBundle, Locale locale) {
+ super(messageBundle, locale);
+ }
+
+ @Override
+ public List<Node> getGrantedPrevious() {
+ return null;
+ }
+
+ @Override
+ public List<SwimLane> getGrantedSwimLanes() {
+ return null;
+ }
+
+ @Override
+ public String getImage() {
+ return null;
+ }
+
+ @Override
+ public String getImageWithLink() {
+ return null;
+ }
+
+ @Override
+ public String getName() {
+ return "";
+ }
+
+ @Override
+ public boolean isFirst() {
+ return false;
+ }
+
+ @Override
+ public boolean isInternal() {
+ return true;
+ }
+
+
+}
\r
import java.util.List;\r
import java.util.Locale;\r
-import javax.print.attribute.Size2DSyntax;\r
\r
public abstract class Node extends Element {\r
\r
private String currentImage;\r
+ private int position;\r
\r
public Node(String messageBundle, Locale locale) {\r
super(messageBundle, locale);\r
}\r
\r
+ public boolean isInternal() {\r
+ return false;\r
+ }\r
+ \r
public abstract String getImage();\r
public abstract String getImageWithLink();\r
public abstract List<Node> getGrantedPrevious();\r
public void setCurrentImage(String currentImage) {\r
this.currentImage = currentImage;\r
}\r
+\r
+ public int getPosition() {\r
+ return position;\r
+ }\r
+\r
+ public void setPosition(int position) {\r
+ this.position = position;\r
+ }\r
\r
}\r
}\r
\r
public void addNode(Node node) {\r
- if (!nodes.contains(node))\r
+ if (!nodes.contains(node)) {\r
+ node.setPosition(nodes.size()+1);\r
nodes.addLast(node);\r
+ }\r
\r
updateImages();\r
}\r
import org.primefaces.component.menuitem.MenuItem;
import org.primefaces.model.DefaultMenuModel;
import org.primefaces.model.MenuModel;
+import org.ufcspa.simdecs.diagram.DiagramManager;
import org.ufcspa.simdecs.diagram.elements.Node;
import org.ufcspa.simdecs.diagram.elements.NodeElement;
import org.ufcspa.simdecs.diagram.elements.NodeTextProperty;
acessor.invoke(node, property.getValue());
}
- currentSwimLane.addNode(node);
+ getEditDiagram().getDiagramManager().addNode(currentSwimLane, node);
}
</td>
<ui:repeat value="#{swimLane.nodes}" var="node">
<td width="150">
- <p:commandLink actionListener="#{editBeginNode.prepareWindowEditBeginNode}" oncomplete="dialogBeginNode.show();" update="fEditBeginNode">
- <h:graphicImage id="node#{node.id}" value="#{node.currentImage}" width="150"/>
+ <p:commandLink rendered="#{!node.isInternal()}" actionListener="#{editBeginNode.prepareWindowEditBeginNode}" oncomplete="dialogBeginNode.show();" update="fEditBeginNode">
+ <h:graphicImage rendered="#{!node.isInternal()}" id="node#{node.id}" value="#{node.currentImage}" width="150"/>
<f:param name="pActorID" value="#{swimLane.id}" />
<f:param name="pNodeID" value="#{node.id}" />
</p:commandLink>