import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
-import org.simantics.district.network.DistrictNetworkUtil;
-import org.simantics.district.network.ui.DistrictNetworkUIUtil;
+import org.simantics.district.network.ui.styles.DistrictNetworkStaticInfoStyle;
import org.simantics.maps.MapScalingTransform;
+import org.simantics.scenegraph.ParentNode;
import org.simantics.scenegraph.g2d.G2DNode;
import org.simantics.scenegraph.g2d.G2DParentNode;
+import org.simantics.scenegraph.g2d.nodes.spatial.RTreeNode;
import org.simantics.scenegraph.utils.DPIUtil;
+import org.simantics.scenegraph.utils.NodeUtil;
-public class DistrictNetworkStaticInfoNode extends G2DNode {
+public class DistrictNetworkStaticInfoNode extends G2DNode implements DeferredNode {
private static final Font FONT = new Font("Tahoma", Font.PLAIN, (int)(DPIUtil.upscale(9) * MapScalingTransform.getScaleY() + 0.5));
@Override
public void render(Graphics2D g) {
+ ParentNode<?> root = (ParentNode<?>) NodeUtil.getNearestParentOfType(this, RTreeNode.class);
+ DeferredRenderingNode deferred = root != null ? (DeferredRenderingNode) root.getNode(DistrictNetworkStaticInfoStyle.STATIC_INFO_DEFERRED) : null;
+ if (deferred != null)
+ deferred.deferNode(g.getTransform(), this);
+ else
+ renderDeferred(g);
+ }
+
+ @Override
+ public void renderDeferred(Graphics2D g) {
if (info == null || "".equals(info))
return;
double scale = 1.5 / g.getTransform().getScaleX();
g.scale(scale, scale);
- int width1 = g.getFontMetrics().stringWidth(info);
- int height = g.getFontMetrics().getHeight();
-
- g.setColor(Color.WHITE);
- g.fillRect(-width1/2 - 5, -2, width1, height);
-
g.setFont(FONT);
- g.setColor(Color.BLACK);
+ int width1 = g.getFontMetrics().stringWidth(info);
+// int height = g.getFontMetrics().getHeight();
g.transform(AffineTransform.getRotateInstance(direction.getX(), direction.getY()));
g.translate(0, 10);
+// g.setColor(Color.WHITE);
+// g.fillRect(-width1/2 - 5, -height-2, width1+10, height+4);
+
+ g.setColor(Color.BLACK);
+
g.drawString(info, -width1/2, 0);
}