X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fnodes%2FDistrictNetworkEdgeNode.java;h=195472fcd2474b0b060de1df3b032c350c672c5e;hb=10cc983e56eaadd88e66aca478918a4bd841fdfd;hp=e724a68dc46b0063e1129ae9d31ba744083416fc;hpb=a82b2ac2e9ed26debc90ed024360283af449d761;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkEdgeNode.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkEdgeNode.java index e724a68d..195472fc 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkEdgeNode.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkEdgeNode.java @@ -26,7 +26,7 @@ public class DistrictNetworkEdgeNode extends G2DParentNode implements ISelection private static final long serialVersionUID = 8049769475036519806L; - private static final BasicStroke STROKE = new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); + public static final BasicStroke STROKE = new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); private static final Color SELECTION_COLOR = new Color(255, 0, 255, 96); private DistrictNetworkEdge edge; @@ -36,7 +36,7 @@ public class DistrictNetworkEdgeNode extends G2DParentNode implements ISelection private transient int zoomLevel = 0; - private static boolean scaleStroke = true; + static final boolean scaleStroke = true; private Color color; private Double stroke; private transient Color dynamicColor = null; @@ -59,15 +59,11 @@ public class DistrictNetworkEdgeNode extends G2DParentNode implements ISelection private boolean hidden = false; - private Double arrowLength; - private static double startX; private static double startY; private static double endX; private static double endY; - private Path2D arrowPath; - @Override public void init() { } @@ -119,46 +115,6 @@ public class DistrictNetworkEdgeNode extends G2DParentNode implements ISelection g2d.setStroke(bs); g2d.draw(path); - // Draw arrow - if (arrowLength != null) { - g2d.setColor(Color.BLACK); - float lw = STROKE.getLineWidth() / (float)scale; - g2d.setStroke(new BasicStroke(lw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)); - - double l = arrowLength; - double w = 2 * (double) lw * Math.signum(l); - if (Math.abs(w) > Math.abs(l)) w = l; - double offset = 2 * (double) lw; - - Point2D centerPoint = getCenterPoint(zoomLevel); - Point2D direction = getDirection(zoomLevel); - double centerX = centerPoint.getX(), centerY = centerPoint.getY(); - double deltaX = direction.getX(), deltaY = direction.getY(); - - // Ensure the line is always rendered on top of the edge - // to prevent overlap with static info rendered below it. - double odx = offset * deltaY; - double ody = offset * deltaX; - if (odx < 0) { - odx = -odx; - ody = -ody; - } - - double x0 = centerX - l/2 * deltaX + ody; - double y0 = centerY - l/2 * deltaY - odx; - double x1 = centerX + (l/2 - w) * deltaX + ody; - double y1 = centerY + (l/2 - w) * deltaY - odx; - - g2d.draw(new Line2D.Double(x0, y0, x1, y1)); - - arrowPath = new Path2D.Double(); - arrowPath.moveTo(x1 + w * deltaX, y1 + w * deltaY); - arrowPath.lineTo(x1 + w * deltaY, y1 - w * deltaX); - arrowPath.lineTo(x1 - w * deltaY, y1 + w * deltaX); - arrowPath.closePath(); - g2d.fill(arrowPath); - } - // Reset g2d.setStroke(oldStroke); g2d.setColor(oldColor); @@ -315,7 +271,11 @@ public class DistrictNetworkEdgeNode extends G2DParentNode implements ISelection @PropertySetter(value = "arrowLength") public void setArrowLength(Double length) { - arrowLength = length; + // find if there is a child deferred arrow node + DistrictNetworkEdgeArrayNode child = getOrCreateNode(DistrictNetworkEdgeArrayNode.NODE_KEY, DistrictNetworkEdgeArrayNode.class); + child.setEdgeNode(this); + child.setArrowLength(length); + //arrowLength = length; } @PropertySetter(value = "SVG")