Browse Source

Merge branch 'master' of https://git.tk.informatik.tu-darmstadt.de/carlos.garcia/praktikum-holons

dominik.rieder 7 years ago
parent
commit
08508de9b3
2 changed files with 29 additions and 8 deletions
  1. 1 1
      src/classes/CpsUpperNode.java
  2. 28 7
      src/ui/controller/NodeController.java

+ 1 - 1
src/classes/CpsUpperNode.java

@@ -13,7 +13,7 @@ public class CpsUpperNode extends AbstractCpsObject{
 	public CpsUpperNode(String nodeName) {
 		super(nodeName);
 		this.setConnections(new ArrayList<CpsEdge>());
-		this.setImage("/Images/uppernode.png");
+		this.setImage("/Images/upper_node.png");
 		this.setSav("CVS");
 		this.setID(IdCounter.nextId());
 		this.setNodes(new ArrayList<AbstractCpsObject>());

+ 28 - 7
src/ui/controller/NodeController.java

@@ -1,21 +1,25 @@
 package ui.controller;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Iterator;
 
 import classes.AbstractCpsObject;
 import classes.CpsEdge;
 import classes.CpsUpperNode;
+import classes.Position;
 import ui.model.Model;
 
 public class NodeController {
 
 	private Model model;
+	private CanvasController cvs;
 	private MultiPurposeController mpC;
 
-	public NodeController(Model model, MultiPurposeController mpC) {
+	public NodeController(Model model, CanvasController cvs, MultiPurposeController mpC) {
 		// TODO Auto-generated constructor stub
 		this.model = model;
+		this.cvs = cvs;
 		this.mpC = mpC;
 	}
 
@@ -24,27 +28,30 @@ public class NodeController {
 	 * 
 	 * @param nodeName
 	 */
-	public void addNode(CpsUpperNode nodeName) {
-		CpsUpperNode node = nodeName;
+	public void addNode(String nodeName) {
+		CpsUpperNode node = new CpsUpperNode(nodeName);
+		node.setPosition(calculatePos());
 		connectAdjacent(node);
 		makeNodeOfNodes(node);
-		model.getObjectsOnCanvas().add(node);
+		cvs.addNewObject(node);
 	}
 
 	/**
 	 * 
 	 * @param node
 	 */
-	public void makeNodeOfNodes(CpsUpperNode node) {
+	private void makeNodeOfNodes(CpsUpperNode node) {
 
 		ArrayList<AbstractCpsObject> nodes = node.getNodes();
 		ArrayList<CpsEdge> nodeEdges = node.getNodeEdges();
+		HashMap<Integer, Integer> nodeIdx = node.getNodesIdx();
 
 		for (Iterator<AbstractCpsObject> it = model.getSelectedCpsObjects().iterator(); it.hasNext();) {
 
 			AbstractCpsObject obj = it.next();
+			nodeIdx.put(obj.getID(), nodes.size());
 			nodes.add(obj);
-			model.getObjectsOnCanvas().remove(obj);
+			cvs.deleteObjectOnCanvas(obj);
 		}
 
 		for (Iterator<CpsEdge> it = model.getEdgesOnCanvas().iterator(); it.hasNext();) {
@@ -109,9 +116,23 @@ public class NodeController {
 		for (AbstractCpsObject cps : adj) {
 			CpsEdge newEdge = new CpsEdge(cps, node, maxCapacity.get(adj.indexOf(cps)));
 			// !! Eventuell noch bei getConnections() hinzufügem
-			model.addEdgeOnCanvas(newEdge);
+			cvs.addEdgeOnCanvas(newEdge);
 			node.getConnections().add(newEdge);
 		}
 	}
 
+	private Position calculatePos() {
+		
+		Position pos = new Position(0, 0);
+		
+		for (AbstractCpsObject abs  : model.getSelectedCpsObjects()) {
+			pos.x += abs.getPosition().x;
+			pos.y += abs.getPosition().y;
+		}
+		pos.x /= model.getSelectedCpsObjects().size();
+		pos.y /= model.getSelectedCpsObjects().size();
+		
+		return pos;
+	}
+
 }