]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.maps/src/org/simantics/maps/eclipse/MapPainter.java
Fix variable exceptions for certain properties in district diagram
[simantics/district.git] / org.simantics.district.maps / src / org / simantics / maps / eclipse / MapPainter.java
index 3c4a9944fd628a95d979722b7fd2ee62267b9966..cdf0be15a5236d8a4826da71eb6b4b8f4e1f1cdd 100644 (file)
  *******************************************************************************/
 package org.simantics.maps.eclipse;
 
+import java.awt.geom.AffineTransform;
+
 import org.simantics.g2d.canvas.Hints;
 import org.simantics.g2d.canvas.ICanvasContext;
 import org.simantics.g2d.canvas.impl.AbstractCanvasParticipant;
 import org.simantics.g2d.canvas.impl.SGNodeReflection.SGCleanup;
 import org.simantics.g2d.canvas.impl.SGNodeReflection.SGInit;
 import org.simantics.maps.sg.MapNode;
+import org.simantics.maps.sg.MapScaleNode;
 import org.simantics.scenegraph.g2d.G2DParentNode;
 import org.simantics.scenegraph.g2d.events.EventHandlerReflection.EventHandler;
 import org.simantics.scenegraph.g2d.events.command.CommandEvent;
@@ -57,11 +60,12 @@ public class MapPainter extends AbstractCanvasParticipant {
     };
 
     protected MapNode node = null;
+    protected MapScaleNode scaleNode = null;
 
-    private int scale;
+    private AffineTransform transform;
 
-    public MapPainter(int scale) {
-        this.scale = scale;
+    public MapPainter(AffineTransform transform) {
+        this.transform = transform;
     }
 
     @Override
@@ -93,6 +97,11 @@ public class MapPainter extends AbstractCanvasParticipant {
             updateNode();
             setDirty();
             return true;
+        } else if (e.command.equals( Commands.ENABLE_PAINTING )) {
+            enablePainting();
+            updateNode();
+            setDirty();
+            return true;
         }
         return false;
     }
@@ -100,9 +109,14 @@ public class MapPainter extends AbstractCanvasParticipant {
     @SGInit
     public void initSG(G2DParentNode parent) {
         node = parent.addNode("map", MapNode.class);
-        node.setScale(scale);
+        node.setTransform(transform);
         node.setEnabled(true);
         node.setZIndex(Integer.MIN_VALUE + 999); // Just under the grid
+        
+        scaleNode = parent.addNode("mapScale", MapScaleNode.class);
+        scaleNode.setTransform(transform);
+        scaleNode.setEnabled(true);
+        scaleNode.setZIndex(Integer.MAX_VALUE - 999); // Just under the grid
     }
 
     @SGCleanup
@@ -129,4 +143,7 @@ public class MapPainter extends AbstractCanvasParticipant {
         setHint(KEY_MAP_ENABLED, enabled);
     }
 
+    private void enablePainting() {
+        setHint(Hints.KEY_DISABLE_PAINTING, false);
+    }
 }