X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2FDNEdgeBuilder.java;h=b9b73e542308882d51f0b2c0c925bcedd128f5c6;hb=8034693a5c86d690649a70a62709d29c3fa197aa;hp=475269f8aa8e12c607d486135042ff546d4547a5;hpb=31bcbe46c93a576cd6ade673a745ea9cb28672da;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DNEdgeBuilder.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DNEdgeBuilder.java index 475269f8..b9b73e54 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DNEdgeBuilder.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DNEdgeBuilder.java @@ -3,17 +3,31 @@ package org.simantics.district.network.ui; import org.simantics.db.Resource; import org.simantics.db.WriteGraph; import org.simantics.db.exception.DatabaseException; +import org.simantics.db.exception.ServiceException; import org.simantics.db.layer0.util.Layer0Utils; +import org.simantics.diagram.synchronization.IModifiableSynchronizationContext; +import org.simantics.diagram.synchronization.SynchronizationHints; import org.simantics.diagram.synchronization.graph.AddElement; +import org.simantics.diagram.synchronization.graph.GraphSynchronizationHints; +import org.simantics.diagram.synchronization.graph.layer.GraphLayer; +import org.simantics.diagram.synchronization.graph.layer.GraphLayerManager; +import org.simantics.diagram.ui.DiagramModelHints; import org.simantics.district.network.DistrictNetworkUtil; import org.simantics.district.network.ontology.DistrictNetworkResource; +import org.simantics.g2d.diagram.IDiagram; public class DNEdgeBuilder { private Resource diagramResource; + private IDiagram diagram; + private GraphLayerManager glm; - public DNEdgeBuilder(Resource diagramResource) { + public DNEdgeBuilder(Resource diagramResource, IDiagram diagram) { this.diagramResource = diagramResource; + this.diagram = diagram; + + IModifiableSynchronizationContext context = diagram.getHint(SynchronizationHints.CONTEXT); + glm = context.get(GraphSynchronizationHints.GRAPH_LAYER_MANAGER); } public void create(WriteGraph graph, double[] start, double[] end) throws DatabaseException { @@ -33,9 +47,21 @@ public class DNEdgeBuilder { graph.claim(edge, DN.HasStartVertex, startVertex); graph.claim(edge, DN.HasEndVertex, endVertex); + // 7. Put the element on all the currently active layers if possible. + if (glm != null) { + putOnActiveLayer(graph, edge); + putOnActiveLayer(graph, startVertex); + putOnActiveLayer(graph, endVertex); + } + Layer0Utils.addCommentMetadata(graph, "Added edge " + edge); graph.markUndoPoint(); } + + private void putOnActiveLayer(WriteGraph graph, Resource res) throws DatabaseException { + glm.removeFromAllLayers(graph, res); + glm.putElementOnVisibleLayers(diagram, graph, res); + } private Resource getOrCreateVertex(WriteGraph graph, double[] coords) throws DatabaseException { // TODO: check if vertex exists already, for now create always new