]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkStaticInfoNode.java
Adjustments to map diagram info label rendering
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / nodes / DistrictNetworkStaticInfoNode.java
index 347261c43a9dc462e8e4c56b77947c9eaa26690a..b86d0acb291b7c9355e97b9f5936154016861115 100644 (file)
@@ -9,14 +9,16 @@ import java.awt.geom.NoninvertibleTransformException;
 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));
        
@@ -32,6 +34,16 @@ public class DistrictNetworkStaticInfoNode extends G2DNode {
        
        @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;
                
@@ -68,18 +80,18 @@ public class DistrictNetworkStaticInfoNode extends G2DNode {
                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);
        }