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=4d460f5d13bf5c8615bd6a26edc2f8ba66210462;hb=refs%2Fchanges%2F78%2F3878%2F2;hp=1c677316a26c167751150d21d290fb33fe53cbbb;hpb=386525ce8e466427df0624a304ebb64df249d1bb;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 1c677316..4d460f5d 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 @@ -5,10 +5,10 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; -import java.awt.geom.Line2D; import java.awt.geom.Path2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; +import java.util.Optional; import org.simantics.district.network.ModelledCRS; import org.simantics.district.network.ui.DistrictNetworkEdge; @@ -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,37 +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(); - - double x0 = centerX - l/2 * deltaX + offset * deltaY; - double y0 = centerY - l/2 * deltaY - offset * deltaX; - double x1 = centerX + (l/2 - w) * deltaX + offset * deltaY; - double y1 = centerY + (l/2 - w) * deltaY - offset * deltaX; - - 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); @@ -306,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") @@ -321,4 +290,24 @@ public class DistrictNetworkEdgeNode extends G2DParentNode implements ISelection this.hidden = value; } + public void setStaticInformation(Optional staticInformation) { + DistrictNetworkStaticInfoNode child = getOrCreateNode(DistrictNetworkStaticInfoNode.NODE_KEY, DistrictNetworkStaticInfoNode.class); + child.setEdgeNode(this); + if (staticInformation.isPresent()) { + child.setInfo(staticInformation.get()); + } else { + child.setInfo(null); + } + } + + public void setInSimulation(Optional isInSimulation) { + if (!isInSimulation.isPresent()) { + removeNode(NotInSimulationNode.NODE_NAME); + } else { + NotInSimulationNode child = getOrCreateNode(NotInSimulationNode.NODE_NAME, NotInSimulationNode.class); + child.setZIndex(1000); + child.setIsInSimulation(isInSimulation.get()); + } + } + }