import java.awt.Stroke;
import java.awt.geom.AffineTransform;
import java.awt.geom.Path2D;
-import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.simantics.district.network.ModelledCRS;
-import org.simantics.district.network.ontology.DistrictNetworkResource;
import org.simantics.district.network.ui.DistrictNetworkEdge;
import org.simantics.scenegraph.g2d.G2DNode;
import org.simantics.scenegraph.utils.GeometryUtils;
private Color color;
+ private Double stroke;
+
@Override
public void init() {
-
}
@Override
g2d.setColor(color);
if (STROKE != null) {
if (scaleStroke && STROKE instanceof BasicStroke) {
- BasicStroke bs = GeometryUtils.scaleStroke(STROKE, (float) (1.0 / GeometryUtils.getScale(g2d.getTransform())));
+ 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);
}
}
- // render
- g2d.draw(edge.getPath());
+ g2d.draw(calculatePath(edge));
+
// Reset
g2d.setStroke(oldStroke);
g2d.setColor(oldColor);
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);
}
}
private Rectangle2D calculateBounds(Rectangle2D rect) {
- return edge.getBounds(rect);
+ return calculatePath(edge).getBounds2D();
}
public void setDNEdge(DistrictNetworkEdge edge) {
return color;
}
+ @PropertySetter(value = "stroke")
+ public void setStroke(Double stroke) {
+ this.stroke = stroke;
+ }
+
}