Jelajahi Sumber

Merge branch 'master' of https://git.tk.informatik.tu-darmstadt.de/carlos.garcia/praktikum-holons.git

Kevin Trometer 8 tahun lalu
induk
melakukan
74cbb2d4f8

+ 21 - 4
src/ui/controller/SimulationManager.java

@@ -450,10 +450,12 @@ public class SimulationManager {
 					sN = buildSubNet(b, visited, sN);
 				}
 				if(a instanceof CpsUpperNode && a.getID() != cps.getID()){
-					checkForConnectedSates(b, (CpsUpperNode)a);
+					edge.setConnected(false);
+					checkForConnectedStates(b, (CpsUpperNode)a, edge);
 				}
 				if(b instanceof CpsUpperNode && b.getID() != cps.getID()){
-					checkForConnectedSates(a, (CpsUpperNode)b);
+					edge.setConnected(false);
+					checkForConnectedStates(a, (CpsUpperNode)b, edge);
 				}
 			}
 		}
@@ -570,8 +572,23 @@ public class SimulationManager {
 	 * @param cps
 	 * @param cUNode
 	 */
-	public void checkForConnectedSates(AbstractCpsObject cps, CpsUpperNode cUNode){
-		for(CpsEdge edge: cps.getConnections());
+	public void checkForConnectedStates(AbstractCpsObject cps, CpsUpperNode cUNode, CpsEdge theEdge){
+		AbstractCpsObject tmp;
+		for(CpsEdge edge: cps.getConnections()){
+			if(edge.getA().getID() == cps.getID()){
+				tmp = edge.getB();
+			} else{
+				tmp = edge.getA();
+			}
+			if(cUNode.getNodes().contains(tmp)){
+				if(tmp instanceof CpsUpperNode){
+					checkForConnectedStates(cps, (CpsUpperNode)tmp, theEdge);
+				}else{
+					theEdge.setConnected(true);
+					break;
+				}
+			}
+		}
 	}
 
 }

+ 33 - 14
src/ui/view/MyCanvas.java

@@ -415,13 +415,18 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		for (CpsEdge con : model.getEdgesOnCanvas()) {
 			if (con.getA().getID() != model.getSelectedObjectID() && con.getB().getID() != model.getSelectedObjectID()
 					&& con != edgeHighlight) {
-				if (con.getState()) {
-					g2.setColor(Color.GREEN);
-					if (con.getCapacity() != -1) {
-						g2.setStroke(new BasicStroke(Math.min((con.getFlow() / con.getCapacity() * 4), 4)));
+				if(con.getConnected()){
+					if (con.getState()) {
+						g2.setColor(Color.GREEN);
+						if (con.getCapacity() != -1) {
+							g2.setStroke(new BasicStroke(Math.min((con.getFlow() / con.getCapacity() * 4), 4)));
+						}
+					} else {
+						g2.setColor(Color.RED);
+						g2.setStroke(new BasicStroke(2));
 					}
-				} else {
-					g2.setColor(Color.RED);
+				}else{
+					g2.setColor(Color.DARK_GRAY);
 					g2.setStroke(new BasicStroke(2));
 				}
 				g2.drawLine(con.getA().getPosition().x + controller.getScaleDiv2(),
@@ -435,9 +440,15 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 					maxCap = String.valueOf(con.getCapacity());
 				}
 				if (showedInformation[0]) {
-					g2.drawString(con.getFlow() + "/" + maxCap,
-							(con.getA().getPosition().x + con.getB().getPosition().x) / 2 + controller.getScaleDiv2(),
-							(con.getA().getPosition().y + con.getB().getPosition().y) / 2 + controller.getScaleDiv2());
+					if(con.getConnected()){
+						g2.drawString(con.getFlow() + "/" + maxCap,
+								(con.getA().getPosition().x + con.getB().getPosition().x) / 2 + controller.getScaleDiv2(),
+								(con.getA().getPosition().y + con.getB().getPosition().y) / 2 + controller.getScaleDiv2());
+					}else{
+						g2.drawString("not connected", 
+								(con.getA().getPosition().x + con.getB().getPosition().x) / 2 + controller.getScaleDiv2(),
+								(con.getA().getPosition().y + con.getB().getPosition().y) / 2 + controller.getScaleDiv2());
+					}
 				}
 			}
 		}
@@ -467,11 +478,19 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 						maxCap = String.valueOf(con.getCapacity());
 					}
 					if (showedInformation[0]) {
-						g2.drawString(con.getFlow() + "/" + maxCap,
-								(con.getA().getPosition().x + con.getB().getPosition().x) / 2
-										+ controller.getScaleDiv2(),
-								(con.getA().getPosition().y + con.getB().getPosition().y) / 2
-										+ controller.getScaleDiv2());
+						if(con.getConnected()){
+							g2.drawString(con.getFlow() + "/" + maxCap,
+									(con.getA().getPosition().x + con.getB().getPosition().x) / 2
+											+ controller.getScaleDiv2(),
+											(con.getA().getPosition().y + con.getB().getPosition().y) / 2
+											+ controller.getScaleDiv2());
+						}else{
+							g2.drawString("not connected",
+									(con.getA().getPosition().x + con.getB().getPosition().x) / 2
+											+ controller.getScaleDiv2(),
+											(con.getA().getPosition().y + con.getB().getPosition().y) / 2
+											+ controller.getScaleDiv2());
+						}
 					}
 				}
 			}

+ 33 - 13
src/ui/view/UpperNodeCanvas.java

@@ -160,7 +160,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 		itemTrack.setEnabled(false);
 		itemUntrack.setEnabled(false);
 		updCon = new UpdateController(model, controller);
-
+		
 		itemGroup.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
@@ -462,13 +462,18 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 		for (CpsEdge con : upperNode.getNodeEdges()) {
 			if (con.getA().getID() != model.getSelectedObjectID() && con.getB().getID() != model.getSelectedObjectID()
 					&& con != edgeHighlight) {
-				if (con.getState()) {
-					g2.setColor(Color.GREEN);
-					if (con.getCapacity() != -1) {
-						g2.setStroke(new BasicStroke(Math.min((con.getFlow() / con.getCapacity() * 4), 4)));
+				if(con.getConnected()){
+					if (con.getState()) {
+						g2.setColor(Color.GREEN);
+						if (con.getCapacity() != -1) {
+							g2.setStroke(new BasicStroke(Math.min((con.getFlow() / con.getCapacity() * 4), 4)));
+						}
+					} else {
+						g2.setColor(Color.RED);
+						g2.setStroke(new BasicStroke(2));
 					}
-				} else {
-					g2.setColor(Color.RED);
+				}else{
+					g2.setColor(Color.DARK_GRAY);
 					g2.setStroke(new BasicStroke(2));
 				}
 				g2.drawLine(con.getA().getPosition().x + controller.getScaleDiv2(),
@@ -482,9 +487,15 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 					maxCap = String.valueOf(con.getCapacity());
 				}
 				if (showedInformation[0]) {
-					g2.drawString(con.getFlow() + "/" + maxCap,
-							(con.getA().getPosition().x + con.getB().getPosition().x) / 2 + controller.getScaleDiv2(),
-							(con.getA().getPosition().y + con.getB().getPosition().y) / 2 + controller.getScaleDiv2());
+					if(con.getConnected()){
+						g2.drawString(con.getFlow() + "/" + maxCap,
+								(con.getA().getPosition().x + con.getB().getPosition().x) / 2 + controller.getScaleDiv2(),
+								(con.getA().getPosition().y + con.getB().getPosition().y) / 2 + controller.getScaleDiv2());
+					}else{
+						g2.drawString("not connected", 
+								(con.getA().getPosition().x + con.getB().getPosition().x) / 2 + controller.getScaleDiv2(),
+								(con.getA().getPosition().y + con.getB().getPosition().y) / 2 + controller.getScaleDiv2());
+					}
 				}
 			}
 		}
@@ -514,11 +525,19 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 						maxCap = String.valueOf(con.getCapacity());
 					}
 					if (showedInformation[0]) {
-						g2.drawString(con.getFlow() + "/" + maxCap,
-								(con.getA().getPosition().x + con.getB().getPosition().x) / 2
+						if(con.getConnected()){
+							g2.drawString(con.getFlow() + "/" + maxCap,
+									(con.getA().getPosition().x + con.getB().getPosition().x) / 2
 										+ controller.getScaleDiv2(),
-								(con.getA().getPosition().y + con.getB().getPosition().y) / 2
+									(con.getA().getPosition().y + con.getB().getPosition().y) / 2
 										+ controller.getScaleDiv2());
+						}else{
+							g2.drawString("not connected",
+									(con.getA().getPosition().x + con.getB().getPosition().x) / 2
+										+ controller.getScaleDiv2(),
+									(con.getA().getPosition().y + con.getB().getPosition().y) / 2
+										+ controller.getScaleDiv2());
+						}
 					}
 				}
 			}
@@ -639,6 +658,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 
 			// Border Highlighting
 			if(showedInformation[3]){
+				System.out.println("here");
 				g2.setColor(cps.getBorderColor());
 				if (g2.getColor() != Color.WHITE) {
 					g2.fillRect((int) ((borderPos >> 1) - model.getScaleDiv2() - scalediv20) - 3,