Teh-Hai Julian Zheng 7 éve
szülő
commit
e56c004830

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

@@ -56,7 +56,7 @@ public class CanvasController {
 	 */
 	public void addNewObject(AbstractCpsObject object) {
 		object.setSav("CVS");
-		object.setConnections(new ArrayList<CpsEdge>());
+		//object.setConnections(new ArrayList<CpsEdge>());
 		addObject(object);
 	}
 

+ 7 - 3
src/ui/controller/Control.java

@@ -11,11 +11,11 @@ import cpsAlgorithm.*;
 import classes.Category;
 import classes.CpsEdge;
 import classes.CpsNode;
+import classes.CpsUpperNode;
 import classes.AbstractCpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
 import interfaces.CategoryListener;
-import ui.controller.NodeController.MODE;
 import ui.model.Model;
 import ui.view.MyCanvas;
 
@@ -732,7 +732,11 @@ public class Control {
 	 * Controlling Nodes of Nodes
 	 */
 
-	public void addUpperNode(String nodeName, MODE mode) {
-		nodeController.addNode(nodeName, mode);
+	public void addUpperNode(String nodeName, CpsUpperNode upperNode) {
+		nodeController.addNode(nodeName, upperNode);
+	}
+	
+	public void addObjectInUpperNode(AbstractCpsObject object, CpsUpperNode upperNode) {
+		nodeController.addObjectInUpperNode(object, upperNode);
 	}
 }

+ 38 - 20
src/ui/controller/NodeController.java

@@ -11,10 +11,6 @@ import classes.Position;
 import ui.model.Model;
 
 public class NodeController {
-	
-	public enum MODE {
-		CANVAS, UPPERNODECANVAS
-	}
 
 	private Model model;
 	private CanvasController cvs;
@@ -32,16 +28,28 @@ public class NodeController {
 	 * 
 	 * @param nodeName
 	 */
-	public void addNode(String nodeName, MODE mode) {
+	public void addNode(String nodeName, CpsUpperNode upperNode) {
 		CpsUpperNode node = new CpsUpperNode(nodeName);
 		node.setPosition(calculatePos());
-		connectAdjacent(node, mode);
-		makeNodeOfNodes(node, mode);
-		cvs.addNewObject(node);
+		connectAdjacent(node, upperNode);
+		makeNodeOfNodes(node, upperNode);
+		if (upperNode == null)
+			cvs.addNewObject(node);
+		else
+			addObjectInUpperNode(node, upperNode);
+
 	}
-	
-	public void addObjectInUpperNode(AbstractCpsObject object) {
-		
+
+	/**
+	 * Add a Object into a CpsUpperNode
+	 * 
+	 * @param object
+	 * @param upperNode
+	 */
+	public void addObjectInUpperNode(AbstractCpsObject object, CpsUpperNode upperNode) {
+		object.setSav("UPPER" + upperNode.getID());
+		upperNode.getNodesIdx().put(object.getID(), upperNode.getNodes().size());
+		upperNode.getNodes().add(object);
 	}
 
 	/**
@@ -55,15 +63,16 @@ public class NodeController {
 
 	/**
 	 * Put selected Nodes inside the Upper Node
+	 * 
 	 * @param node
 	 */
-	private void makeNodeOfNodes(CpsUpperNode node, MODE mode) {
+	private void makeNodeOfNodes(CpsUpperNode node, CpsUpperNode upperNode) {
 
 		ArrayList<AbstractCpsObject> nodes = node.getNodes();
 		ArrayList<CpsEdge> nodeEdges = node.getNodeEdges();
 		HashMap<Integer, Integer> nodeIdx = node.getNodesIdx();
-		
-		//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();) {
 
 			AbstractCpsObject obj = it.next();
@@ -71,9 +80,10 @@ public class NodeController {
 			nodes.add(obj);
 		}
 
-		//remove selected nodes 
+		// remove selected nodes
 
-		for (Iterator<CpsEdge> it = model.getEdgesOnCanvas().iterator(); it.hasNext();) {
+		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())) {
@@ -82,9 +92,13 @@ public class NodeController {
 			}
 
 		}
-		
+
 		for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
-			cvs.deleteObjectOnCanvas(abs);
+			if (upperNode == null)
+				cvs.deleteObjectOnCanvas(abs);
+			else
+				// MUSS GEÄNDERT WERDEN!!!!!!!!!!!!!!!!!
+				upperNode.getNodes().remove(abs);
 		}
 
 	}
@@ -93,7 +107,7 @@ public class NodeController {
 	 * 
 	 * @return
 	 */
-	private void connectAdjacent(CpsUpperNode node, MODE mode) {
+	private void connectAdjacent(CpsUpperNode node, CpsUpperNode upperNode) {
 
 		ArrayList<AbstractCpsObject> adj = new ArrayList<>();
 		ArrayList<Float> maxCapacity = new ArrayList<>();
@@ -150,13 +164,17 @@ public class NodeController {
 		for (AbstractCpsObject cps : adj) {
 			CpsEdge newEdge = new CpsEdge(cps, node, maxCapacity.get(adj.indexOf(cps)));
 			// !! Eventuell noch bei getConnections() hinzufügem
-			cvs.addEdgeOnCanvas(newEdge);
+			if (upperNode == null)
+				cvs.addEdgeOnCanvas(newEdge);
+			else
+				upperNode.getNodeEdges().add(newEdge);
 			node.getConnections().add(newEdge);
 		}
 	}
 
 	/**
 	 * Calculate new Position of the Upper Node
+	 * 
 	 * @return
 	 */
 	private Position calculatePos() {

+ 1 - 2
src/ui/view/MyCanvas.java

@@ -35,7 +35,6 @@ import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.SubNet;
 import ui.controller.Control;
-import ui.controller.NodeController.MODE;
 import ui.model.Model;
 
 /**
@@ -125,7 +124,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		itemCollapse.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				control.addUpperNode("NodeOfNode", MODE.CANVAS);
+				control.addUpperNode("NodeOfNode", null);
 				repaint();
 			}
 		});