Pārlūkot izejas kodu

Issue #66 edges connected from outside object to inside object no longer
overlap with inside object

jess 7 gadi atpakaļ
vecāks
revīzija
edba9ff4d9
1 mainītis faili ar 134 papildinājumiem un 130 dzēšanām
  1. 134 130
      src/ui/view/UpperNodeCanvas.java

+ 134 - 130
src/ui/view/UpperNodeCanvas.java

@@ -557,136 +557,6 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 			}
 		}
 
-		// Highlighted Edge
-		if (model.getSelectedObjectID() > 0 || !model.getSelectedCpsObjects().isEmpty() || !tempSelected.isEmpty()) {
-			g2.setColor(Color.BLUE);
-			for (CpsEdge con : upperNode.getNodeEdges()) {
-				if (con.getFlow() <= con.getCapacity()) {
-					g2.setStroke(new BasicStroke(Math.min((con.getFlow() / con.getCapacity() * 3) + 1, 4)));
-				} else {
-					g2.setStroke(new BasicStroke(2));
-				}
-				if (con.getA().getId() == model.getSelectedObjectID()
-						|| model.getSelectedCpsObjects().contains(con.getA()) || tempSelected.contains(con.getA())
-						|| con.getB().getId() == model.getSelectedObjectID()
-						|| model.getSelectedCpsObjects().contains(con.getB())
-						|| tempSelected.contains(con.getB()) && con != edgeHighlight) {
-					g2.drawLine(con.getA().getPosition().x, con.getA().getPosition().y, con.getB().getPosition().x,
-							con.getB().getPosition().y);
-
-					if (con.getCapacity() == -1) {
-						maxCap = Character.toString('\u221e');
-					} else if (con.getCapacity() == -2) {
-						maxCap = "???";
-					} else {
-						maxCap = String.valueOf(con.getCapacity());
-					}
-					if (showedInformation[0]) {
-						if (con.getConnected() == 0 || con.getConnected() == 1) {
-							g2.drawString(con.getFlow() + "/" + maxCap,
-									(con.getA().getPosition().x + con.getB().getPosition().x) / 2,
-									(con.getA().getPosition().y + con.getB().getPosition().y) / 2);
-						} else {
-							g2.drawString("not connected",
-									(con.getA().getPosition().x + con.getB().getPosition().x) / 2,
-									(con.getA().getPosition().y + con.getB().getPosition().y) / 2);
-						}
-					}
-				}
-			}
-		} else if (edgeHighlight != null) {
-			g2.setColor(Color.BLUE);
-			if (edgeHighlight.getFlow() <= edgeHighlight.getCapacity()) {
-				g2.setStroke(
-						new BasicStroke(Math.min((edgeHighlight.getFlow() / edgeHighlight.getCapacity() * 3) + 1, 4)));
-			} else {
-				g2.setStroke(new BasicStroke(2));
-			}
-			if (upperNode.getNodeEdges().contains(edgeHighlight)) {
-				g2.drawLine(edgeHighlight.getA().getPosition().x, edgeHighlight.getA().getPosition().y,
-						edgeHighlight.getB().getPosition().x, edgeHighlight.getB().getPosition().y);
-
-				if (edgeHighlight.getCapacity() == -1) {
-					maxCap = Character.toString('\u221e');
-				} else if (edgeHighlight.getCapacity() == -2) {
-					maxCap = "???";
-				} else {
-					maxCap = String.valueOf(edgeHighlight.getCapacity());
-				}
-				if (showedInformation[0]) {
-					g2.drawString(edgeHighlight.getFlow() + "/" + maxCap,
-							(edgeHighlight.getA().getPosition().x + edgeHighlight.getB().getPosition().x) / 2,
-							(edgeHighlight.getA().getPosition().y + edgeHighlight.getB().getPosition().y) / 2);
-				}
-			}
-		}
-
-		// Objects in upper node
-		for (AbstractCpsObject cps : upperNode.getNodes()) {
-			// Border Highlighting
-			if (showedInformation[3]) {
-				g2.setColor(cps.getBorderColor());
-				if (g2.getColor() != Color.WHITE) {
-					g2.fillRect((int) (cps.getPosition().x - controller.getScaleDiv2() - scalediv20 - 3),
-							(int) (cps.getPosition().y - model.getScaleDiv2() - scalediv20 - 3),
-							(int) (controller.getScale() + ((scalediv20 + 3) * 2)),
-							(int) (controller.getScale() + ((scalediv20 + 3) * 2)));
-				}
-			}
-
-			// node image
-			if (cps instanceof CpsNode && (cps == tempCps || model.getSelectedCpsObject() == cps
-					|| model.getSelectedCpsObjects().contains(cps) || tempSelected.contains(cps))) {
-				img = new ImageIcon(this.getClass().getResource("/Images/node_selected.png")).getImage();
-			} else {
-				if (cps instanceof HolonSwitch) {
-					if (((HolonSwitch) cps).getActiveAt()[model.getCurIteration()]) {
-						((HolonSwitch) cps).setAutoState(true);
-					} else {
-						((HolonSwitch) cps).setAutoState(false);
-					}
-				}
-				// Highlighting
-				if ((cps == tempCps && model.getSelectedCpsObjects().size() == 0 && tempSelected.size() == 0)
-						|| model.getSelectedCpsObjects().contains(cps) || tempSelected.contains(cps)) {
-					g2.setColor(Color.BLUE);
-					g2.fillRect((int) (cps.getPosition().x - model.getScaleDiv2() - scalediv20),
-							(int) (cps.getPosition().y - model.getScaleDiv2() - scalediv20),
-							(int) (controller.getScale() + (scalediv20 * 2)),
-							(int) (controller.getScale() + (scalediv20 * 2)));
-					if (showedInformation[1] && cps instanceof HolonObject) {
-						g2.setColor(Color.BLACK);
-						float totalEnergy = ((HolonObject) cps).getCurrentEnergyAtTimeStep(model.getCurIteration());
-						g2.drawString(Float.toString(totalEnergy), cps.getPosition().x - model.getScaleDiv2(),
-								cps.getPosition().y - model.getScaleDiv2() - 10);
-					}
-				} else if (cps instanceof HolonObject) {
-					g2.setColor(((HolonObject) cps).getColor());
-
-					g2.fillRect((int) (cps.getPosition().x - model.getScaleDiv2() - scalediv20),
-							(int) (cps.getPosition().y - model.getScaleDiv2() - scalediv20),
-							(int) (controller.getScale() + (scalediv20 * 2)),
-							(int) (controller.getScale() + (scalediv20 * 2)));
-
-					if (showedInformation[1]) {
-						g2.setColor(Color.BLACK);
-						float totalEnergy = ((HolonObject) cps).getCurrentEnergyAtTimeStep(model.getCurIteration());
-						g2.drawString(Float.toString(totalEnergy), cps.getPosition().x - model.getScaleDiv2(),
-								cps.getPosition().y - model.getScaleDiv2() - 10);
-					}
-				}
-				// draw image
-				File checkPath = new File(cps.getImage());
-				if (checkPath.exists()) {
-					img = new ImageIcon(cps.getImage()).getImage();
-				} else {
-					img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage();
-				}
-			}
-			g2.drawImage(img, cps.getPosition().x - model.getScaleDiv2(), cps.getPosition().y - model.getScaleDiv2(),
-					controller.getScale(), controller.getScale(), null);
-		}
-
 		// Objects connected to upperNode
 		int count = 0;
 		for (CpsEdge e : upperNode.getConnections()) {
@@ -750,6 +620,140 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 				}
 			}
 
+			// Highlighted Edge
+			if (model.getSelectedObjectID() > 0 || !model.getSelectedCpsObjects().isEmpty()
+					|| !tempSelected.isEmpty()) {
+				g2.setColor(Color.BLUE);
+				for (CpsEdge con : upperNode.getNodeEdges()) {
+					if (con.getFlow() <= con.getCapacity()) {
+						g2.setStroke(new BasicStroke(Math.min((con.getFlow() / con.getCapacity() * 3) + 1, 4)));
+					} else {
+						g2.setStroke(new BasicStroke(2));
+					}
+					if (con.getA().getId() == model.getSelectedObjectID()
+							|| model.getSelectedCpsObjects().contains(con.getA()) || tempSelected.contains(con.getA())
+							|| con.getB().getId() == model.getSelectedObjectID()
+							|| model.getSelectedCpsObjects().contains(con.getB())
+							|| tempSelected.contains(con.getB()) && con != edgeHighlight) {
+						g2.drawLine(con.getA().getPosition().x, con.getA().getPosition().y, con.getB().getPosition().x,
+								con.getB().getPosition().y);
+
+						if (con.getCapacity() == -1) {
+							maxCap = Character.toString('\u221e');
+						} else if (con.getCapacity() == -2) {
+							maxCap = "???";
+						} else {
+							maxCap = String.valueOf(con.getCapacity());
+						}
+						if (showedInformation[0]) {
+							if (con.getConnected() == 0 || con.getConnected() == 1) {
+								g2.drawString(con.getFlow() + "/" + maxCap,
+										(con.getA().getPosition().x + con.getB().getPosition().x) / 2,
+										(con.getA().getPosition().y + con.getB().getPosition().y) / 2);
+							} else {
+								g2.drawString("not connected",
+										(con.getA().getPosition().x + con.getB().getPosition().x) / 2,
+										(con.getA().getPosition().y + con.getB().getPosition().y) / 2);
+							}
+						}
+					}
+				}
+			} else if (edgeHighlight != null) {
+				g2.setColor(Color.BLUE);
+				if (edgeHighlight.getFlow() <= edgeHighlight.getCapacity()) {
+					g2.setStroke(new BasicStroke(
+							Math.min((edgeHighlight.getFlow() / edgeHighlight.getCapacity() * 3) + 1, 4)));
+				} else {
+					g2.setStroke(new BasicStroke(2));
+				}
+				if (upperNode.getNodeEdges().contains(edgeHighlight)) {
+					g2.drawLine(edgeHighlight.getA().getPosition().x, edgeHighlight.getA().getPosition().y,
+							edgeHighlight.getB().getPosition().x, edgeHighlight.getB().getPosition().y);
+
+					if (edgeHighlight.getCapacity() == -1) {
+						maxCap = Character.toString('\u221e');
+					} else if (edgeHighlight.getCapacity() == -2) {
+						maxCap = "???";
+					} else {
+						maxCap = String.valueOf(edgeHighlight.getCapacity());
+					}
+					if (showedInformation[0]) {
+						g2.drawString(edgeHighlight.getFlow() + "/" + maxCap,
+								(edgeHighlight.getA().getPosition().x + edgeHighlight.getB().getPosition().x) / 2,
+								(edgeHighlight.getA().getPosition().y + edgeHighlight.getB().getPosition().y) / 2);
+					}
+				}
+			}
+
+			// Objects in upper node
+			for (AbstractCpsObject cps1 : upperNode.getNodes()) {
+				// Border Highlighting
+				if (showedInformation[3]) {
+					g2.setColor(cps1.getBorderColor());
+					if (g2.getColor() != Color.WHITE) {
+						g2.fillRect((int) (cps1.getPosition().x - controller.getScaleDiv2() - scalediv20 - 3),
+								(int) (cps1.getPosition().y - model.getScaleDiv2() - scalediv20 - 3),
+								(int) (controller.getScale() + ((scalediv20 + 3) * 2)),
+								(int) (controller.getScale() + ((scalediv20 + 3) * 2)));
+					}
+				}
+
+				// node image
+				if (cps1 instanceof CpsNode && (cps1 == tempCps || model.getSelectedCpsObject() == cps1
+						|| model.getSelectedCpsObjects().contains(cps1) || tempSelected.contains(cps1))) {
+					img = new ImageIcon(this.getClass().getResource("/Images/node_selected.png")).getImage();
+				} else {
+					if (cps1 instanceof HolonSwitch) {
+						if (((HolonSwitch) cps1).getActiveAt()[model.getCurIteration()]) {
+							((HolonSwitch) cps1).setAutoState(true);
+						} else {
+							((HolonSwitch) cps1).setAutoState(false);
+						}
+					}
+					// Highlighting
+					if ((cps1 == tempCps && model.getSelectedCpsObjects().size() == 0 && tempSelected.size() == 0)
+							|| model.getSelectedCpsObjects().contains(cps1) || tempSelected.contains(cps1)) {
+						g2.setColor(Color.BLUE);
+						g2.fillRect((int) (cps1.getPosition().x - model.getScaleDiv2() - scalediv20),
+								(int) (cps1.getPosition().y - model.getScaleDiv2() - scalediv20),
+								(int) (controller.getScale() + (scalediv20 * 2)),
+								(int) (controller.getScale() + (scalediv20 * 2)));
+						if (showedInformation[1] && cps1 instanceof HolonObject) {
+							g2.setColor(Color.BLACK);
+							float totalEnergy = ((HolonObject) cps1)
+									.getCurrentEnergyAtTimeStep(model.getCurIteration());
+							g2.drawString(Float.toString(totalEnergy), cps1.getPosition().x - model.getScaleDiv2(),
+									cps1.getPosition().y - model.getScaleDiv2() - 10);
+						}
+					} else if (cps1 instanceof HolonObject) {
+						g2.setColor(((HolonObject) cps1).getColor());
+
+						g2.fillRect((int) (cps1.getPosition().x - model.getScaleDiv2() - scalediv20),
+								(int) (cps1.getPosition().y - model.getScaleDiv2() - scalediv20),
+								(int) (controller.getScale() + (scalediv20 * 2)),
+								(int) (controller.getScale() + (scalediv20 * 2)));
+
+						if (showedInformation[1]) {
+							g2.setColor(Color.BLACK);
+							float totalEnergy = ((HolonObject) cps1)
+									.getCurrentEnergyAtTimeStep(model.getCurIteration());
+							g2.drawString(Float.toString(totalEnergy), cps1.getPosition().x - model.getScaleDiv2(),
+									cps1.getPosition().y - model.getScaleDiv2() - 10);
+						}
+					}
+					// draw image
+					File checkPath = new File(cps1.getImage());
+					if (checkPath.exists()) {
+						img = new ImageIcon(cps1.getImage()).getImage();
+					} else {
+						img = new ImageIcon(this.getClass().getResource(cps1.getImage())).getImage();
+					}
+				}
+				g2.drawImage(img, cps1.getPosition().x - model.getScaleDiv2(),
+						cps1.getPosition().y - model.getScaleDiv2(), controller.getScale(), controller.getScale(),
+						null);
+			}
+
 			// Border Highlighting
 			if (showedInformation[3]) {
 				g2.setColor(cps.getBorderColor());