Browse Source

click on edges from an outside connection now possible with a visual bug

Kevin Trometer 8 years ago
parent
commit
a3cbb8532f
1 changed files with 50 additions and 0 deletions
  1. 50 0
      src/ui/view/UpperNodeCanvas.java

+ 50 - 0
src/ui/view/UpperNodeCanvas.java

@@ -1424,6 +1424,56 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 				return p;
 			}
 		}
+
+		// edge to outside connection
+
+		int count = 0;
+		for (CpsEdge e : upperNode.getConnections()) {
+			AbstractCpsObject cps;
+			if (e.getA().equals(this.upperNode)) {
+				cps = e.getB();
+			} else {
+				cps = e.getA();
+			}
+			for (CpsEdge p : cps.getConnections()) {
+				AbstractCpsObject obj = null;
+				boolean doTest = false;
+				if (upperNode.getNodes().contains(p.getA())) {
+					obj = p.getA();
+					doTest = true;
+				} else if (upperNode.getNodes().contains(p.getB())) {
+					obj = p.getB();
+					doTest = true;
+				}
+				// g2.drawImage(img, (borderPos >> 1) - 25, (int) (scalediv20 + 5 + (50 + scalediv20 + 10) * count), 50, 50, null);
+				if (doTest) {
+					Line2D l = new Line2D.Float((borderPos >> 1) - 25, (int) (scalediv20 + 5 + (50 + scalediv20 + 10) * count),
+							obj.getPosition().x, obj.getPosition().y);
+					if ((borderPos >> 1) > obj.getPosition().x) {
+						hx = (borderPos >> 1) - 25 + model.getScaleDiv2() + 7;
+						lx = obj.getPosition().x + model.getScaleDiv2() - 7;
+					} else {
+						lx = (borderPos >> 1) - 25 + model.getScaleDiv2() - 7;
+						hx = obj.getPosition().x + model.getScaleDiv2() + 7;
+					}
+					if ((int) (scalediv20 + 5 + (50 + scalediv20 + 10) * count) > obj.getPosition().y) {
+						hy = (int) (scalediv20 + 5 + (50 + scalediv20 + 10) * count)+ model.getScaleDiv2() + 7;
+						ly = obj.getPosition().y + model.getScaleDiv2() - 7;
+					} else {
+						ly = (int) (scalediv20 + 5 + (50 + scalediv20 + 10) * count)+ model.getScaleDiv2() - 7;
+						hy = obj.getPosition().y + model.getScaleDiv2() + 7;
+					}
+
+					// distance from a point to a line and between both Objects
+					if (l.ptLineDistSq(x - model.getScaleDiv2(), y - model.getScaleDiv2()) < 20 && x > lx && x < hx
+							&& y > ly && y < hy) {
+						return p;
+					}
+				}
+				count++;
+
+			}
+		}
 		return null;
 	}