X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.maps%2Fsrc%2Forg%2Fsimantics%2Fmaps%2Feclipse%2FMapPainter.java;h=c519b9a5f1a3d53cadb779ded4ce78e07929b249;hb=refs%2Fchanges%2F35%2F2735%2F2;hp=ee0c71a6cb54b8767a0aa7acba8ab26decd108c6;hpb=00e4eca98cef6d77d5023f4b424f9e8da0487463;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.maps/src/org/simantics/maps/eclipse/MapPainter.java b/org.simantics.district.maps/src/org/simantics/maps/eclipse/MapPainter.java index ee0c71a6..c519b9a5 100644 --- a/org.simantics.district.maps/src/org/simantics/maps/eclipse/MapPainter.java +++ b/org.simantics.district.maps/src/org/simantics/maps/eclipse/MapPainter.java @@ -11,6 +11,7 @@ *******************************************************************************/ package org.simantics.maps.eclipse; +import java.awt.Color; import java.awt.geom.AffineTransform; import org.simantics.g2d.canvas.Hints; @@ -20,6 +21,7 @@ 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.maps.sg.commands.MapCommands; import org.simantics.scenegraph.g2d.G2DParentNode; import org.simantics.scenegraph.g2d.events.EventHandlerReflection.EventHandler; import org.simantics.scenegraph.g2d.events.command.CommandEvent; @@ -45,6 +47,8 @@ public class MapPainter extends AbstractCanvasParticipant { */ public static final Key KEY_MAP_ENABLED = new KeyOf(Boolean.class); + public static final Key KEY_MAP_BACKGROUND_COLOR = new KeyOf(Object.class); + public static final double ZOOM_IN_LIMIT = 10000000.0; public static final double ZOOM_OUT_LIMIT = 10.0; @@ -72,11 +76,13 @@ public class MapPainter extends AbstractCanvasParticipant { public void addedToContext(ICanvasContext ctx) { super.addedToContext(ctx); getHintStack().addKeyHintListener(getThread(), KEY_MAP_ENABLED, mapListener); + getHintStack().addKeyHintListener(getThread(), KEY_MAP_BACKGROUND_COLOR, mapListener); } @Override public void removedFromContext(ICanvasContext ctx) { getHintStack().removeKeyHintListener(getThread(), KEY_MAP_ENABLED, mapListener); + getHintStack().removeKeyHintListener(getThread(), KEY_MAP_BACKGROUND_COLOR, mapListener); super.removedFromContext(ctx); } @@ -87,6 +93,12 @@ public class MapPainter extends AbstractCanvasParticipant { updateNode(); setDirty(); return true; + } else if (e.command.equals( MapCommands.MAP_BACKGROUND_COLOR_CHANGE )) { + ICanvasContext context = (ICanvasContext) e.getContext(); + Color s = context.getHintStack().getHint(MapCommands.KEY_MAP_BACKGROUND_COLOR); + setBackgroundColor(s); + setDirty(); + return true; } else if (e.command.equals( Commands.MAP_DISABLE )) { setEnabled(false); updateNode(); @@ -97,6 +109,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; } @@ -121,6 +138,8 @@ public class MapPainter extends AbstractCanvasParticipant { protected void updateNode() { node.setEnabled(isPaintingEnabled()); + node.setEnabled(isMapEnabled()); + node.setBackgroundColor(getBackgroundColor()); } boolean isPaintingEnabled() { @@ -138,4 +157,15 @@ public class MapPainter extends AbstractCanvasParticipant { setHint(KEY_MAP_ENABLED, enabled); } + private void enablePainting() { + setHint(Hints.KEY_DISABLE_PAINTING, false); + } + + private void setBackgroundColor(Color backgroundColor) { + setHint(KEY_MAP_BACKGROUND_COLOR, backgroundColor); + } + + private Color getBackgroundColor() { + return getHint(KEY_MAP_BACKGROUND_COLOR); + } }