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=9229932400a8ff12b964621a3643c2102bb0b634;hb=a3b6137601545ac6e3484995d0ec6d39224bbf3f;hp=4abeee8b8b8b013fa90da556494dfc0ecb445604;hpb=5747d0df198d3b3de66c51796369a7f6af314ea7;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 4abeee8b..92299324 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 @@ -6,8 +6,10 @@ import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Stroke; import java.awt.geom.AffineTransform; +import java.awt.geom.Path2D; import java.awt.geom.Rectangle2D; +import org.simantics.district.network.ModelledCRS; import org.simantics.district.network.ui.DistrictNetworkEdge; import org.simantics.scenegraph.g2d.G2DNode; import org.simantics.scenegraph.utils.GeometryUtils; @@ -23,12 +25,15 @@ public class DistrictNetworkEdgeNode extends G2DNode { private DistrictNetworkEdge edge; private Rectangle2D bounds; - private Stroke stroke = new BasicStroke(2); + private static final Stroke STROKE = new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); private boolean scaleStroke = true; + private Color color; + + private Double stroke; + @Override public void init() { - } @Override @@ -42,7 +47,7 @@ public class DistrictNetworkEdgeNode extends G2DNode { } Object aaHint = g2d.getRenderingHint(RenderingHints.KEY_ANTIALIASING); - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Color oldColor = g2d.getColor(); BasicStroke oldStroke = (BasicStroke) g2d.getStroke(); @@ -54,17 +59,22 @@ public class DistrictNetworkEdgeNode extends G2DNode { // g2d.fill(selectionShape); // } // - g2d.setColor(Color.BLUE); - if (stroke != null) { - if (scaleStroke && stroke instanceof BasicStroke) { - BasicStroke bs = GeometryUtils.scaleStroke(stroke, (float) (1.0 / GeometryUtils.getScale(g2d.getTransform()))); + g2d.setColor(color); + if (STROKE != null) { + if (scaleStroke && STROKE instanceof BasicStroke) { + double str; + if (stroke != null) + str = Math.abs(stroke); + else + str = 1.0; + BasicStroke bs = GeometryUtils.scaleStroke(STROKE, (float) (str / GeometryUtils.getScale(g2d.getTransform()))); g2d.setStroke(bs); } else { - g2d.setStroke(stroke); + g2d.setStroke(STROKE); } } - // render - g2d.draw(edge.getPath()); + + g2d.draw(calculatePath(edge)); // Reset g2d.setStroke(oldStroke); @@ -74,6 +84,20 @@ public class DistrictNetworkEdgeNode extends G2DNode { if (ot != null) g2d.setTransform(ot); } + + public static Path2D calculatePath(DistrictNetworkEdge edge) { + // Convert to screen coordinates + double startX = ModelledCRS.longitudeToX(edge.getStartPoint().getX()); + double startY = ModelledCRS.latitudeToY(-edge.getStartPoint().getY()); // Invert for Simantics + double endX = ModelledCRS.longitudeToX(edge.getEndPoint().getX()); + double endY = ModelledCRS.latitudeToY(-edge.getEndPoint().getY());// Invert for Simantics + + // render + Path2D path = new Path2D.Double(); + path.moveTo(startX, startY); + path.lineTo(endX, endY); + return path; + } private boolean isSelected() { return NodeUtil.isSelected(this, 1); @@ -92,7 +116,7 @@ public class DistrictNetworkEdgeNode extends G2DNode { } private Rectangle2D calculateBounds(Rectangle2D rect) { - return edge.getBounds(rect); + return calculatePath(edge).getBounds2D(); } public void setDNEdge(DistrictNetworkEdge edge) { @@ -100,4 +124,17 @@ public class DistrictNetworkEdgeNode extends G2DNode { updateBounds(); } + public void setColor(Color color) { + this.color = color; + } + + public Color getColor() { + return color; + } + + @PropertySetter(value = "stroke") + public void setStroke(Double stroke) { + this.stroke = stroke; + } + }