|
@@ -1,21 +1,25 @@
|
|
|
package ui.controller;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.Iterator;
|
|
|
|
|
|
import classes.AbstractCpsObject;
|
|
|
import classes.CpsEdge;
|
|
|
import classes.CpsUpperNode;
|
|
|
+import classes.Position;
|
|
|
import ui.model.Model;
|
|
|
|
|
|
public class NodeController {
|
|
|
|
|
|
private Model model;
|
|
|
+ private CanvasController cvs;
|
|
|
private MultiPurposeController mpC;
|
|
|
|
|
|
- public NodeController(Model model, MultiPurposeController mpC) {
|
|
|
+ public NodeController(Model model, CanvasController cvs, MultiPurposeController mpC) {
|
|
|
|
|
|
this.model = model;
|
|
|
+ this.cvs = cvs;
|
|
|
this.mpC = mpC;
|
|
|
}
|
|
|
|
|
@@ -24,27 +28,30 @@ public class NodeController {
|
|
|
*
|
|
|
* @param nodeName
|
|
|
*/
|
|
|
- public void addNode(CpsUpperNode nodeName) {
|
|
|
- CpsUpperNode node = nodeName;
|
|
|
+ public void addNode(String nodeName) {
|
|
|
+ CpsUpperNode node = new CpsUpperNode(nodeName);
|
|
|
+ node.setPosition(calculatePos());
|
|
|
connectAdjacent(node);
|
|
|
makeNodeOfNodes(node);
|
|
|
- model.getObjectsOnCanvas().add(node);
|
|
|
+ cvs.addNewObject(node);
|
|
|
}
|
|
|
|
|
|
|
|
|
*
|
|
|
* @param node
|
|
|
*/
|
|
|
- public void makeNodeOfNodes(CpsUpperNode node) {
|
|
|
+ private void makeNodeOfNodes(CpsUpperNode node) {
|
|
|
|
|
|
ArrayList<AbstractCpsObject> nodes = node.getNodes();
|
|
|
ArrayList<CpsEdge> nodeEdges = node.getNodeEdges();
|
|
|
+ HashMap<Integer, Integer> nodeIdx = node.getNodesIdx();
|
|
|
|
|
|
for (Iterator<AbstractCpsObject> it = model.getSelectedCpsObjects().iterator(); it.hasNext();) {
|
|
|
|
|
|
AbstractCpsObject obj = it.next();
|
|
|
+ nodeIdx.put(obj.getID(), nodes.size());
|
|
|
nodes.add(obj);
|
|
|
- model.getObjectsOnCanvas().remove(obj);
|
|
|
+ cvs.deleteObjectOnCanvas(obj);
|
|
|
}
|
|
|
|
|
|
for (Iterator<CpsEdge> it = model.getEdgesOnCanvas().iterator(); it.hasNext();) {
|
|
@@ -109,9 +116,23 @@ public class NodeController {
|
|
|
for (AbstractCpsObject cps : adj) {
|
|
|
CpsEdge newEdge = new CpsEdge(cps, node, maxCapacity.get(adj.indexOf(cps)));
|
|
|
|
|
|
- model.addEdgeOnCanvas(newEdge);
|
|
|
+ cvs.addEdgeOnCanvas(newEdge);
|
|
|
node.getConnections().add(newEdge);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private Position calculatePos() {
|
|
|
+
|
|
|
+ Position pos = new Position(0, 0);
|
|
|
+
|
|
|
+ for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
|
|
|
+ pos.x += abs.getPosition().x;
|
|
|
+ pos.y += abs.getPosition().y;
|
|
|
+ }
|
|
|
+ pos.x /= model.getSelectedCpsObjects().size();
|
|
|
+ pos.y /= model.getSelectedCpsObjects().size();
|
|
|
+
|
|
|
+ return pos;
|
|
|
+ }
|
|
|
+
|
|
|
}
|