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=7ee2f2faa03a2c5b771e7d52de2d05db1a21f034;hb=refs%2Fchanges%2F03%2F3303%2F1;hp=cc5b24e1652e69427b1c6a34a919f6e869cbc044;hpb=dab24824da1b284b8a4734a069cfba72fb1f05de;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 cc5b24e1..7ee2f2fa 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,7 @@ package org.simantics.district.network.ui; import java.awt.Color; import java.awt.geom.AffineTransform; +import java.util.Collections; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -10,11 +11,13 @@ import java.util.function.Supplier; import org.simantics.datatypes.literal.RGB; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; +import org.simantics.db.common.request.IndexRoot; import org.simantics.db.common.request.UnaryRead; 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.ontology.DistrictNetworkResource; import org.simantics.district.network.ui.participants.DNPointerInteractor; import org.simantics.district.network.ui.participants.DynamicVisualisationContributionsParticipant; import org.simantics.district.network.ui.participants.ElevationServerParticipant; @@ -180,30 +183,38 @@ public class DistrictDiagramViewer extends DiagramViewer { private void queueColoringObjectsChangeEvent(Map result) { - if (result != null) { + if (result != null && !canvasContext.isDisposed()) { canvasContext.getDefaultHintContext().setHint(KEY_MAP_COLORING_OBJECTS, result); canvasContext.getEventQueue().queueEvent(new CommandEvent(canvasContext, System.currentTimeMillis(), MAP_COLORING_OBJECTS_CHANGE)); + } else { + LOGGER.info("Result is either null or canvasContext is disposed", String.valueOf(result)); } } private void queueColorBarOptionsChangeEvent(ColorBarOptions result) { - if (result != null) { + if (result != null && !canvasContext.isDisposed()) { canvasContext.getDefaultHintContext().setHint(KEY_MAP_COLOR_BAR_OPTIONS, result); canvasContext.getEventQueue().queueEvent(new CommandEvent(canvasContext, System.currentTimeMillis(), MAP_COLOR_BAR_OPTIONS_CHANGE)); + } else { + LOGGER.info("Result is either null or canvasContext is disposed", String.valueOf(result)); } } private void queueSizingObjectsChangeEvent(Map result) { - if (result != null) { + if (result != null && !canvasContext.isDisposed()) { canvasContext.getDefaultHintContext().setHint(KEY_MAP_SIZING_OBJECTS, result); canvasContext.getEventQueue().queueEvent(new CommandEvent(canvasContext, System.currentTimeMillis(), MAP_SIZING_OBJECTS_CHANGE)); + } else { + LOGGER.info("Result is either null or canvasContext is disposed", String.valueOf(result)); } } private void queueSizeBarOptionsChangeEvent(SizeBarOptions result) { - if (result != null) { + if (result != null && !canvasContext.isDisposed()) { canvasContext.getDefaultHintContext().setHint(KEY_MAP_SIZE_BAR_OPTIONS, result); canvasContext.getEventQueue().queueEvent(new CommandEvent(canvasContext, System.currentTimeMillis(), MAP_SIZE_BAR_OPTIONS_CHANGE)); + } else { + LOGGER.info("Result is either null or canvasContext is disposed", String.valueOf(result)); } } @@ -261,7 +272,7 @@ public class DistrictDiagramViewer extends DiagramViewer { private static class MapBackgroundColorListener implements Listener { - private static final Logger LOGGER = LoggerFactory.getLogger(DrawMapEnabledListener.class); + private static final Logger LOGGER = LoggerFactory.getLogger(MapBackgroundColorListener.class); private Consumer callback; private Supplier isDisposed; @@ -295,7 +306,18 @@ public class DistrictDiagramViewer extends DiagramViewer { @Override public ColorBarOptions perform(ReadGraph graph) throws DatabaseException { - return DistrictNetworkUtil.colorBarOptions(graph, parameter); + DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); + Resource model = graph.syncRequest(new IndexRoot(parameter)); + Resource vf = DistrictNetworkUtil.getVisualisationFolder(graph, model); + if (vf != null) { + Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); + if (activeVisualisation != null) { + return DistrictNetworkUtil.colorBarOptions(graph, activeVisualisation); + } + } else { + LOGGER.debug("No visualisation folder available for model {}", model); + } + return ColorBarOptions.useDefault(); } } @@ -307,13 +329,24 @@ public class DistrictDiagramViewer extends DiagramViewer { @Override public Map perform(ReadGraph graph) throws DatabaseException { - return DistrictNetworkUtil.colorContributions(graph, parameter); + DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); + Resource model = graph.syncRequest(new IndexRoot(parameter)); + Resource vf = DistrictNetworkUtil.getVisualisationFolder(graph, model); + if (vf != null) { + Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); + if (activeVisualisation != null) { + return DistrictNetworkUtil.colorContributions(graph, activeVisualisation); + } + } else { + LOGGER.debug("No visualisation folder available for model {}", model); + } + return Collections.emptyMap(); } } private static class ColoringObjectsListener implements Listener> { - private static final Logger LOGGER = LoggerFactory.getLogger(DrawMapEnabledListener.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ColoringObjectsListener.class); private Consumer> callback; private Supplier isDisposed; @@ -341,7 +374,7 @@ public class DistrictDiagramViewer extends DiagramViewer { private static class ColorBarOptionsListener implements Listener { - private static final Logger LOGGER = LoggerFactory.getLogger(DrawMapEnabledListener.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ColorBarOptionsListener.class); private Consumer callback; private Supplier isDisposed; @@ -375,13 +408,24 @@ public class DistrictDiagramViewer extends DiagramViewer { @Override public SizeBarOptions perform(ReadGraph graph) throws DatabaseException { - return DistrictNetworkUtil.sizeBarOptions(graph, parameter); + DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); + Resource model = graph.syncRequest(new IndexRoot(parameter)); + Resource vf = DistrictNetworkUtil.getVisualisationFolder(graph, model); + if (vf != null) { + Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); + if (activeVisualisation != null) { + return DistrictNetworkUtil.sizeBarOptions(graph, activeVisualisation); + } + } else { + LOGGER.debug("No visualisation folder available for model {}", model); + } + return SizeBarOptions.useDefault(); } } private static class SizeBarOptionsListener implements Listener { - private static final Logger LOGGER = LoggerFactory.getLogger(DrawMapEnabledListener.class); + private static final Logger LOGGER = LoggerFactory.getLogger(SizeBarOptionsListener.class); private Consumer callback; private Supplier isDisposed; @@ -415,13 +459,24 @@ public class DistrictDiagramViewer extends DiagramViewer { @Override public Map perform(ReadGraph graph) throws DatabaseException { - return DistrictNetworkUtil.sizeContributions(graph, parameter); + DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); + Resource model = graph.syncRequest(new IndexRoot(parameter)); + Resource vf = DistrictNetworkUtil.getVisualisationFolder(graph, model); + if (vf != null) { + Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); + if (activeVisualisation != null) { + return DistrictNetworkUtil.sizeContributions(graph, activeVisualisation); + } + } else { + LOGGER.debug("No visualisation folder available for model {}", model); + } + return Collections.emptyMap(); } } private static class SizingObjectsListener implements Listener> { - private static final Logger LOGGER = LoggerFactory.getLogger(DrawMapEnabledListener.class); + private static final Logger LOGGER = LoggerFactory.getLogger(SizingObjectsListener.class); private Consumer> callback; private Supplier isDisposed;