|
@@ -28,6 +28,7 @@ public class NodeController {
|
|
* Add a CpsUpperNode into Canvas
|
|
* Add a CpsUpperNode into Canvas
|
|
*
|
|
*
|
|
* @param nodeName
|
|
* @param nodeName
|
|
|
|
+ * @param upperNode
|
|
*/
|
|
*/
|
|
public void doUpperNode(String nodeName, CpsUpperNode upperNode) {
|
|
public void doUpperNode(String nodeName, CpsUpperNode upperNode) {
|
|
|
|
|
|
@@ -47,6 +48,7 @@ public class NodeController {
|
|
* Delete a CpsUpperNode from the Canvas
|
|
* Delete a CpsUpperNode from the Canvas
|
|
*
|
|
*
|
|
* @param node
|
|
* @param node
|
|
|
|
+ * @param upperNode
|
|
*/
|
|
*/
|
|
public void undoUpperNode(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
public void undoUpperNode(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
restoreOldEdges(node, upperNode);
|
|
restoreOldEdges(node, upperNode);
|
|
@@ -62,11 +64,12 @@ public class NodeController {
|
|
* Put selected Nodes inside the Upper Node
|
|
* Put selected Nodes inside the Upper Node
|
|
*
|
|
*
|
|
* @param node
|
|
* @param node
|
|
|
|
+ * @param upperNode
|
|
*/
|
|
*/
|
|
private void makeNodeOfNodes(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
private void makeNodeOfNodes(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
|
|
|
|
ArrayList<AbstractCpsObject> nodes = node.getNodes();
|
|
ArrayList<AbstractCpsObject> nodes = node.getNodes();
|
|
- //ArrayList<CpsEdge> nodeEdges = node.getNodeEdges();
|
|
|
|
|
|
+ // ArrayList<CpsEdge> nodeEdges = node.getNodeEdges();
|
|
|
|
|
|
// Put all selected Nodes into the Upper Node
|
|
// Put all selected Nodes into the Upper Node
|
|
for (Iterator<AbstractCpsObject> it = model.getSelectedCpsObjects().iterator(); it.hasNext();) {
|
|
for (Iterator<AbstractCpsObject> it = model.getSelectedCpsObjects().iterator(); it.hasNext();) {
|
|
@@ -101,23 +104,35 @@ public class NodeController {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Transfer all relevant data from Node into the next higher layer of Node
|
|
|
|
+ * (upperNode)
|
|
|
|
+ *
|
|
|
|
+ * @param node
|
|
|
|
+ * @param upperNode
|
|
|
|
+ */
|
|
private void unmakeNodesOfNodes(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
private void unmakeNodesOfNodes(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
// TODO Auto-generated method stub
|
|
// TODO Auto-generated method stub
|
|
|
|
+ // add all nodes into upperNode
|
|
(upperNode == null ? model.getObjectsOnCanvas() : upperNode.getNodes()).addAll(node.getNodes());
|
|
(upperNode == null ? model.getObjectsOnCanvas() : upperNode.getNodes()).addAll(node.getNodes());
|
|
|
|
+ // add all indices of nodes into upperNode
|
|
(upperNode == null ? model.getCvsObjIdx() : upperNode.getNodesIdx()).putAll(node.getNodesIdx());
|
|
(upperNode == null ? model.getCvsObjIdx() : upperNode.getNodesIdx()).putAll(node.getNodesIdx());
|
|
|
|
+ // add all Edges of node into upperNode
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).addAll(node.getNodeEdges());
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).addAll(node.getNodeEdges());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * Look for adjacent Nodes connected with the new CpsUpperNode and make Connections
|
|
*
|
|
*
|
|
- * @return
|
|
|
|
|
|
+ * @param node
|
|
|
|
+ * @param upperNode
|
|
*/
|
|
*/
|
|
private void makeAdjacent(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
private void makeAdjacent(CpsUpperNode node, CpsUpperNode upperNode) {
|
|
|
|
|
|
ArrayList<AbstractCpsObject> adj = new ArrayList<>();
|
|
ArrayList<AbstractCpsObject> adj = new ArrayList<>();
|
|
ArrayList<Float> maxCapacity = new ArrayList<>();
|
|
ArrayList<Float> maxCapacity = new ArrayList<>();
|
|
|
|
+
|
|
ArrayList<CpsEdge> oldEdges = node.getOldEdges();
|
|
ArrayList<CpsEdge> oldEdges = node.getOldEdges();
|
|
-
|
|
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
|
|
|
|
// für alle Edges auf dem Canvas
|
|
// für alle Edges auf dem Canvas
|
|
@@ -175,6 +190,7 @@ public class NodeController {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * Restore the Old Connections from the adjacent Object
|
|
*
|
|
*
|
|
* @param node
|
|
* @param node
|
|
* @param upperNode
|
|
* @param upperNode
|
|
@@ -183,6 +199,7 @@ public class NodeController {
|
|
// TODO Auto-generated method stub
|
|
// TODO Auto-generated method stub
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
ArrayList<CpsEdge> toDelete = new ArrayList<>();
|
|
|
|
|
|
|
|
+ //für jede Edge aus upperNode die Node enthält tu sie in toDelete
|
|
for (Iterator<CpsEdge> it = (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges())
|
|
for (Iterator<CpsEdge> it = (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges())
|
|
.iterator(); it.hasNext();) {
|
|
.iterator(); it.hasNext();) {
|
|
|
|
|
|
@@ -191,6 +208,7 @@ public class NodeController {
|
|
toDelete.add(edge);
|
|
toDelete.add(edge);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+ //lösch alle Edges die in toDelete sind und wiederherstell alte Edges
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).removeAll(toDelete);
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).removeAll(toDelete);
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).addAll(node.getOldEdges());
|
|
(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).addAll(node.getOldEdges());
|
|
}
|
|
}
|
|
@@ -361,4 +379,20 @@ public class NodeController {
|
|
upperNode.getNodeEdges().remove(edge);
|
|
upperNode.getNodeEdges().remove(edge);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Adds a Edge into Connections of AbstactCpsObjects
|
|
|
|
+ *
|
|
|
|
+ * @param a
|
|
|
|
+ * @param b
|
|
|
|
+ */
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|