|
@@ -10,9 +10,9 @@ import classes.AbstractCpsObject;
|
|
|
import classes.HolonObject;
|
|
|
import classes.HolonSwitch;
|
|
|
import classes.Position;
|
|
|
-import interfaces.CategoryListener;
|
|
|
import interfaces.ObjectListener;
|
|
|
import ui.model.Model;
|
|
|
+import ui.view.UpperNodeCanvas;
|
|
|
|
|
|
/**
|
|
|
* Controller for the Canvas.
|
|
@@ -57,7 +57,7 @@ public class CanvasController {
|
|
|
*/
|
|
|
public void addNewObject(AbstractCpsObject object) {
|
|
|
object.setSav("CVS");
|
|
|
- //object.setConnections(new ArrayList<CpsEdge>());
|
|
|
+ // object.setConnections(new ArrayList<CpsEdge>());
|
|
|
addObject(object);
|
|
|
}
|
|
|
|
|
@@ -125,6 +125,8 @@ public class CanvasController {
|
|
|
edge.getA().getConnections().remove(edge);
|
|
|
edge.getB().getConnections().remove(edge);
|
|
|
model.getEdgesOnCanvas().remove(edge);
|
|
|
+ if (edge.getA() instanceof CpsUpperNode || edge.getB() instanceof CpsUpperNode)
|
|
|
+ handleUpperNodes(edge);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -221,4 +223,51 @@ public class CanvasController {
|
|
|
|
|
|
model.getSelectedCpsObjects().clear();
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * In Case if a One or Both Side of the to Removing Edge is a CpsUpperNode
|
|
|
+ * @param edge
|
|
|
+ * @param upperNode
|
|
|
+ */
|
|
|
+ public void handleUpperNodes(CpsEdge edge) {
|
|
|
+ CpsUpperNode upper = null;
|
|
|
+ ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
|
+
|
|
|
+ // wenn A ist upperNOde
|
|
|
+ if (edge.getA() instanceof CpsUpperNode) {
|
|
|
+
|
|
|
+ upper = (CpsUpperNode) edge.getA();
|
|
|
+
|
|
|
+ //wenn in OldEdges eine B enhält
|
|
|
+ for (CpsEdge cpsEdge : upper.getOldEdges()) {
|
|
|
+ if (cpsEdge.getA().equals(edge.getB()) || cpsEdge.getB().equals(edge.getB()))
|
|
|
+ toDelete.add(cpsEdge);
|
|
|
+ }
|
|
|
+ //lösche alle Edges mit B
|
|
|
+ upper.getOldEdges().removeAll(toDelete);
|
|
|
+ //lösche hier alle Connections
|
|
|
+ for (CpsEdge cpsEdge : toDelete) {
|
|
|
+ cpsEdge.getA().getConnections().remove(cpsEdge);
|
|
|
+ cpsEdge.getB().getConnections().remove(cpsEdge);
|
|
|
+ }
|
|
|
+ toDelete.clear();
|
|
|
+ }
|
|
|
+ //Hier analog
|
|
|
+ if (edge.getB() instanceof CpsUpperNode) {
|
|
|
+
|
|
|
+ upper = (CpsUpperNode) edge.getB();
|
|
|
+
|
|
|
+ for (CpsEdge cpsEdge : upper.getOldEdges()) {
|
|
|
+ if (cpsEdge.getA().equals(edge.getA()) || cpsEdge.getB().equals(edge.getA()))
|
|
|
+ toDelete.add(cpsEdge);
|
|
|
+ }
|
|
|
+ upper.getOldEdges().removeAll(toDelete);
|
|
|
+ for (CpsEdge cpsEdge : toDelete) {
|
|
|
+ cpsEdge.getA().getConnections().remove(cpsEdge);
|
|
|
+ cpsEdge.getB().getConnections().remove(cpsEdge);
|
|
|
+ }
|
|
|
+ toDelete.clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|