X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2FDistrictDiagramViewer.java;h=642d02be63c575d73ea0aaedb2d8e4ab9a93b5e7;hb=00103b12908c5071e641ca2bea2c42030ff67770;hp=f3e556718202027ce966b2bab9c1f1e86414461e;hpb=3354c578fb8e65421d0fdb123310232ccdc597cf;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictDiagramViewer.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictDiagramViewer.java index f3e55671..642d02be 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictDiagramViewer.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictDiagramViewer.java @@ -2,6 +2,12 @@ package org.simantics.district.network.ui; import java.util.concurrent.TimeUnit; +import org.simantics.db.ReadGraph; +import org.simantics.db.common.request.UniqueRead; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.procedure.Listener; +import org.simantics.diagram.ui.DiagramModelHints; +import org.simantics.district.network.DistrictNetworkUtil; import org.simantics.district.network.ui.participants.DNPointerInteractor; import org.simantics.district.network.ui.participants.MapRulerPainter; import org.simantics.g2d.canvas.ICanvasContext; @@ -19,10 +25,16 @@ import org.simantics.g2d.participant.ZoomToAreaHandler; import org.simantics.maps.MapScalingTransform; import org.simantics.maps.eclipse.MapPainter; import org.simantics.modeling.ui.diagramEditor.DiagramViewer; +import org.simantics.scenegraph.g2d.events.command.CommandEvent; +import org.simantics.scenegraph.g2d.events.command.Commands; import org.simantics.utils.datastructures.hints.IHintContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class DistrictDiagramViewer extends DiagramViewer { + private static final Logger LOGGER = LoggerFactory.getLogger(DistrictDiagramViewer.class); + @Override protected void addDiagramParticipants(ICanvasContext ctx) { ctx.add(new ZOrderHandler()); @@ -45,6 +57,7 @@ public class DistrictDiagramViewer extends DiagramViewer { IHintContext h = ctx.getDefaultHintContext(); h.setHint(PanZoomRotateHandler.KEY_ZOOM_IN_LIMIT, 10000.0); h.setHint(PanZoomRotateHandler.KEY_ZOOM_OUT_LIMIT, 0.01); + h.setHint(DiagramModelHints.KEY_DIAGRAM_RESOURCE, diagramResource); } @Override @@ -68,4 +81,33 @@ public class DistrictDiagramViewer extends DiagramViewer { ctx.add(new ZoomToAreaHandler()); } + @Override + protected void loadPageSettings(ICanvasContext ctx) { + super.loadPageSettings(ctx); + // this might be the wrong place to start such listening but at least + // super.loadPageSettings() does async-db-operations + sessionContext.getSession().asyncRequest(new UniqueRead() { + + @Override + public Boolean perform(ReadGraph graph) throws DatabaseException { + return DistrictNetworkUtil.drawMapEnabled(graph, getInputResource()); + } + }, new Listener() { + + @Override + public void execute(Boolean result) { + canvasContext.getEventQueue().queueEvent(new CommandEvent(canvasContext, System.currentTimeMillis(), result ? Commands.MAP_ENABLE : Commands.MAP_DISABLE)); + } + + @Override + public void exception(Throwable t) { + LOGGER.error("Could not listen draw map for {}", getInputResource(), t); + } + + @Override + public boolean isDisposed() { + return DistrictDiagramViewer.this.isDisposed(); + } + }); + } }