Teh-Hai Julian Zheng 7 years ago
parent
commit
169d8790fd
2 changed files with 17 additions and 6 deletions
  1. 1 0
      src/ui/controller/CanvasController.java
  2. 16 6
      src/ui/controller/NodeController.java

+ 1 - 0
src/ui/controller/CanvasController.java

@@ -5,6 +5,7 @@ import java.util.ArrayList;
 
 import classes.CpsEdge;
 import classes.CpsNode;
+import classes.CpsUpperNode;
 import classes.AbstractCpsObject;
 import classes.HolonObject;
 import classes.HolonSwitch;

+ 16 - 6
src/ui/controller/NodeController.java

@@ -97,9 +97,9 @@ public class NodeController {
 		// Lösche dann die Edges aus der nächst höheren schicht
 		for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
 			if (upperNode == null)
-				cvs.deleteObjectOnCanvas(abs);
+				removeForNodeOfNode(abs, null);
 			else
-				deleteObjectInUpperNode(abs, upperNode);
+				removeForNodeOfNode(abs, upperNode);
 		}
 
 	}
@@ -179,6 +179,7 @@ public class NodeController {
 		// für alle objekte in adjazenzliste mach
 		for (AbstractCpsObject cps : adj) {
 			CpsEdge newEdge = new CpsEdge(cps, node, maxCapacity.get(adj.indexOf(cps)));
+			removeEdges(cps, node, newEdge);
 			// !! Eventuell noch bei getConnections() hinzufügem
 			// node.getConnections().add(newEdge);
 			if (upperNode == null)
@@ -318,6 +319,13 @@ public class NodeController {
 
 		return pos;
 	}
+	
+	private void removeForNodeOfNode(AbstractCpsObject obj, CpsUpperNode upperNode) {
+		
+		mpC.decIdx(obj.getID(), (upperNode == null? model.getCvsObjIdx() : upperNode.getNodesIdx()));
+		(upperNode == null? model.getCvsObjIdx() : upperNode.getNodesIdx()).remove(obj.getID());
+		(upperNode == null? model.getObjectsOnCanvas() : upperNode.getNodes()).remove(obj);
+	}
 
 	/**
 	 * Add a Object into a CpsUpperNode
@@ -345,7 +353,7 @@ public class NodeController {
 					e = p;
 				}
 			}
-			if (!model.getClipboradObjects().contains(cps)) {
+			if (!model.getClipboradObjects().contains(cps) && !(cps instanceof CpsUpperNode)) {
 				cps.getConnectedTo().remove(e);
 			}
 			upperNode.getNodeEdges().remove(e);
@@ -388,11 +396,13 @@ public class NodeController {
 	public void connectNodes(AbstractCpsObject a, AbstractCpsObject b, CpsUpperNode node) {
 		// mache hier Connections in A und B rein
 		// mache diese Edge auch in OldEdges rein des aktuellen CpsUpperNodes
-		
 		 CpsEdge edge = new CpsEdge(a, b, model.getMaxCapacity());
-		 edge.getA().getConnections().add(edge);
-		 edge.getB().getConnections().add(edge);
 		 node.getOldEdges().add(edge);
 	}
+	
+	private void removeEdges(AbstractCpsObject a, AbstractCpsObject b, CpsEdge edge) {
+		a.getConnections().remove(edge);
+		b.getConnections().remove(edge);
+	}
 
 }