]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictDiagramViewer.java
Refactoring MapNode rendering & zooming to even zoom levels (0-20)
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / DistrictDiagramViewer.java
index f0c76954fb954cf91c46a46c2fdd9c71ea400e2c..6175ace7cb1885d60d3f920ba551ae8fe3d92801 100644 (file)
@@ -1,6 +1,7 @@
 package org.simantics.district.network.ui;
 
 import java.awt.Color;
+import java.awt.geom.AffineTransform;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 import java.util.function.Supplier;
@@ -26,6 +27,7 @@ import org.simantics.g2d.participant.BackgroundPainter;
 import org.simantics.g2d.participant.GridPainter;
 import org.simantics.g2d.participant.PanZoomRotateHandler;
 import org.simantics.g2d.participant.RenderingQualityInteractor;
+import org.simantics.g2d.participant.TransformUtil;
 import org.simantics.g2d.participant.ZoomToAreaHandler;
 import org.simantics.maps.MapScalingTransform;
 import org.simantics.maps.eclipse.MapPainter;
@@ -48,9 +50,10 @@ public class DistrictDiagramViewer extends DiagramViewer {
         ctx.add(new ElementPainter());
         ctx.add(new DNPointerInteractor());
         
-        ctx.add(new MapPainter(MapScalingTransform.INSTANCE));
+        AffineTransform tr = new AffineTransform(MapScalingTransform.INSTANCE);
+        ctx.add(new MapPainter(tr));
         
-        ctx.add(new NetworkDrawingParticipant(MapScalingTransform.INSTANCE));
+        ctx.add(new NetworkDrawingParticipant(tr));
     }
     
     protected String getPopupId() {
@@ -80,6 +83,11 @@ public class DistrictDiagramViewer extends DiagramViewer {
     }
     
     protected void addViewManipulationParticipants(CanvasContext ctx) {
+        // Let's replace with our special util
+        TransformUtil util = ctx.getAtMostOneItemOfClass(TransformUtil.class);
+        if (util != null)
+            ctx.remove(util);
+        ctx.add(new DistrictTransformUtil());
         ctx.add(new DistrictPanZoomRotateHandler());
         //ctx.add(new MousePanZoomInteractor());
         //ctx.add(new MultitouchPanZoomRotateInteractor());