Minor fix. Removed comment.
[simdecs.git] / src / java / org / ufcspa / simdecs / diagram / DiagramManager.java
index ff3eb27..592956f 100755 (executable)
@@ -4,10 +4,9 @@
  */
 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;
 
 /**
@@ -17,19 +16,25 @@ 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() {
@@ -40,15 +45,37 @@ public class DiagramManager {
         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()));
+                    }
+                }
+            }
+        }
+    }
+    
 }