Browse Source

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

Conflicts:
src/ui/view/GUI.java

Kevin Trometer 7 năm trước cách đây
mục cha
commit
aecf129ad0

+ 5 - 1
src/ui/controller/Control.java

@@ -736,7 +736,11 @@ public class Control {
 		nodeController.addNode(nodeName, upperNode);
 	}
 	
-	public void addObjectInUpperNode(AbstractCpsObject object, CpsUpperNode upperNode) {
+	public void addObjUpperNode(AbstractCpsObject object, CpsUpperNode upperNode) {
 		nodeController.addObjectInUpperNode(object, upperNode);
 	}
+	
+	public void delObjUpperNode() {
+		
+	}
 }

+ 52 - 10
src/ui/controller/NodeController.java

@@ -9,6 +9,7 @@ import classes.CpsEdge;
 import classes.CpsUpperNode;
 import classes.Position;
 import ui.model.Model;
+import ui.view.UpperNodeCanvas;
 
 public class NodeController {
 
@@ -61,6 +62,50 @@ public class NodeController {
 
 	}
 
+	/**
+	 * Delete a AbstactCpsObject from CPSUpperNode
+	 * 
+	 * @param object
+	 * @param upperNode
+	 */
+	public void deleteObjectInUpperNode(AbstractCpsObject object, CpsUpperNode upperNode) {
+		CpsEdge e = null;
+		for (AbstractCpsObject cps : upperNode.getNodes()) {
+			for (CpsEdge p : cps.getConnections()) {
+				if (p.getA() == object || p.getB() == object) {
+					e = p;
+				}
+			}
+			if (!model.getClipboradObjects().contains(cps)) {
+				cps.getConnectedTo().remove(e);
+			}
+			model.getEdgesOnCanvas().remove(e);
+		}
+		mpC.decIdx(object.getID(), upperNode.getNodesIdx());
+		upperNode.getNodesIdx().remove(object.getID());
+		upperNode.getNodes().remove(object);
+	}
+	
+	/**
+	 * Add Edge in UpperNode
+	 * @param edge
+	 * @param upperNode
+	 */
+	public void addEdgeInUpperNode(CpsEdge edge, CpsUpperNode upperNode) {
+		upperNode.getNodeEdges().add(edge);
+	}
+	
+	/**
+	 * Delete Edge in UpperNode
+	 * @param edge
+	 * @param upperNode
+	 */
+	public void deleteEdgeInUpperNode(CpsEdge edge, CpsUpperNode upperNode) {
+		edge.getA().getConnections().remove(edge);
+		edge.getB().getConnections().remove(edge);
+		upperNode.getNodeEdges().remove(edge);
+	}
+
 	/**
 	 * Put selected Nodes inside the Upper Node
 	 * 
@@ -70,35 +115,31 @@ public class NodeController {
 
 		ArrayList<AbstractCpsObject> nodes = node.getNodes();
 		ArrayList<CpsEdge> nodeEdges = node.getNodeEdges();
-		HashMap<Integer, Integer> nodeIdx = node.getNodesIdx();
 
 		// Put all selected Nodes into the Upper Node
 		for (Iterator<AbstractCpsObject> it = model.getSelectedCpsObjects().iterator(); it.hasNext();) {
 
+			// füge Neue Objecte in Neuen Node hinzu
 			AbstractCpsObject obj = it.next();
-			nodeIdx.put(obj.getID(), nodes.size());
-			nodes.add(obj);
+			addObjectInUpperNode(obj, node);
 		}
 
-		// remove selected nodes
-
+		// Füge die Edges die Alle Objekte vorher verbunden hat in neuen Node
 		for (Iterator<CpsEdge> it = (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges())
 				.iterator(); it.hasNext();) {
 
 			CpsEdge edge = it.next();
 			if (nodes.contains(edge.getA()) && nodes.contains(edge.getB())) {
-
 				nodeEdges.add(edge);
 			}
 
 		}
-
+		// Lösche dann die Edges aus der nächst höheren schicht
 		for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
 			if (upperNode == null)
 				cvs.deleteObjectOnCanvas(abs);
 			else
-				// MUSS GEÄNDERT WERDEN!!!!!!!!!!!!!!!!!
-				upperNode.getNodes().remove(abs);
+				deleteObjectInUpperNode(abs, upperNode);
 		}
 
 	}
@@ -164,11 +205,12 @@ public class NodeController {
 		for (AbstractCpsObject cps : adj) {
 			CpsEdge newEdge = new CpsEdge(cps, node, maxCapacity.get(adj.indexOf(cps)));
 			// !! Eventuell noch bei getConnections() hinzufügem
+			node.getConnections().add(newEdge);
 			if (upperNode == null)
 				cvs.addEdgeOnCanvas(newEdge);
 			else
 				upperNode.getNodeEdges().add(newEdge);
-			node.getConnections().add(newEdge);
+
 		}
 	}
 

+ 1 - 1
src/ui/view/GUI.java

@@ -1034,7 +1034,7 @@ public class GUI<E> implements CategoryListener {
 
 							h.setPosition(x, y);
 
-							controller.addObjectInUpperNode(h, unc.upperNode);
+							controller.addObjUpperNode(h, unc.upperNode);
 							unc.invalidate();
 							unc.repaint();
 						} else {

+ 3 - 3
src/ui/view/UpperNodeCanvas.java

@@ -130,7 +130,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 		itemCollapse.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				controller.addUpperNode("NodeOfNode", null);
+				controller.addUpperNode("NodeOfNode", UpperNode);
 				repaint();
 			}
 		});
@@ -733,7 +733,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 				CpsNode n = new CpsNode("Node");
 
 				n.setPosition(x - model.getScaleDiv2(), y - model.getScaleDiv2());
-				controller.addObjectInUpperNode(n, upperNode);
+				controller.addObjUpperNode(n, upperNode);
 
 				AbstractCpsObject r, k;
 				r = p.getA();
@@ -757,7 +757,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 			CpsNode n = new CpsNode("Node");
 
 			n.setPosition(x - model.getScaleDiv2(), y - model.getScaleDiv2());
-			controller.addObjectInUpperNode(n, upperNode);
+			controller.addObjUpperNode(n, upperNode);
 
 			e = new CpsEdge(n, tempCps, edgeCapacity);