|
@@ -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;
|
|
|
}
|
|
|
|