|
@@ -61,6 +61,30 @@ 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);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Put selected Nodes inside the Upper Node
|
|
|
*
|
|
@@ -70,35 +94,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 +184,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);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|