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.internal.Activator;
+import org.simantics.district.network.ui.nodes.DistrictRenderingPreparationNode;
import org.simantics.district.network.ui.participants.DNPointerInteractor;
import org.simantics.district.network.ui.participants.DynamicVisualisationContributionsParticipant;
import org.simantics.district.network.ui.participants.ElevationServerParticipant;
import org.simantics.g2d.participant.RenderingQualityInteractor;
import org.simantics.g2d.participant.TransformUtil;
import org.simantics.g2d.participant.ZoomToAreaHandler;
+import org.simantics.g2d.scenegraph.SceneGraphConstants;
import org.simantics.maps.MapScalingTransform;
import org.simantics.maps.eclipse.MapPainter;
import org.simantics.maps.sg.commands.MapCommands;
import org.simantics.modeling.ui.diagramEditor.DiagramViewer;
+import org.simantics.scenegraph.g2d.G2DParentNode;
import org.simantics.scenegraph.g2d.events.command.Command;
import org.simantics.scenegraph.g2d.events.command.CommandEvent;
import org.simantics.scenegraph.g2d.events.command.Commands;
AffineTransform tr = new AffineTransform(MapScalingTransform.INSTANCE);
ctx.add(new MapPainter(tr));
- ctx.add(new NetworkDrawingParticipant(tr));
+ DynamicVisualisationContributionsParticipant dynamicVisualisationContributionsParticipant = new DynamicVisualisationContributionsParticipant(tr);
+ ctx.add(new NetworkDrawingParticipant(dynamicVisualisationContributionsParticipant, tr));
ctx.add(new ElevationServerParticipant(tr));
- ctx.add(new DynamicVisualisationContributionsParticipant(tr));
+ ctx.add(dynamicVisualisationContributionsParticipant);
+
+ // Optimize AffineTransform memory allocations during district diagram rendering
+ G2DParentNode spatialRoot = (G2DParentNode) ctx.getSceneGraph().lookupNode(SceneGraphConstants.SPATIAL_ROOT_NODE_ID);
+ DistrictRenderingPreparationNode prepNode = new DistrictRenderingPreparationNode();
+ prepNode.setZIndex(Integer.MIN_VALUE / 2);
+ spatialRoot.addNode("districtRenderingPrepareNode", prepNode);
}
protected String getPopupId() {
setupColorBarOptions();
setupSizingObjects();
setupSizeBarOptions();
+
+ // add listeners
+ DistrictDiagramViewerListener[] listeners = Activator.getInstance().getDistrictDiagramViewerListeners();
+ if (listeners != null) {
+ for (DistrictDiagramViewerListener listener : listeners) {
+ listener.diagramLoaded(getRuntime(), canvasContext);
+ }
+ }
+ }
+
+ @Override
+ public void dispose() {
+ DistrictDiagramViewerListener[] listeners = Activator.getInstance().getDistrictDiagramViewerListeners();
+ if (listeners != null) {
+ for (DistrictDiagramViewerListener listener : listeners) {
+ listener.diagramDisposed(getRuntime(), canvasContext);
+ }
+ }
+ super.dispose();
}
private void setupDrawMapEnabled() {