import org.simantics.db.Resource;\r
import org.simantics.db.WriteGraph;\r
import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.exception.ServiceException;\r
import org.simantics.db.layer0.util.Layer0Utils;\r
+import org.simantics.diagram.synchronization.IModifiableSynchronizationContext;\r
+import org.simantics.diagram.synchronization.SynchronizationHints;\r
import org.simantics.diagram.synchronization.graph.AddElement;\r
+import org.simantics.diagram.synchronization.graph.GraphSynchronizationHints;\r
+import org.simantics.diagram.synchronization.graph.layer.GraphLayer;\r
+import org.simantics.diagram.synchronization.graph.layer.GraphLayerManager;\r
+import org.simantics.diagram.ui.DiagramModelHints;\r
import org.simantics.district.network.DistrictNetworkUtil;\r
import org.simantics.district.network.ontology.DistrictNetworkResource;\r
+import org.simantics.g2d.diagram.IDiagram;\r
\r
public class DNEdgeBuilder {\r
\r
private Resource diagramResource;\r
+ private IDiagram diagram;\r
+ private GraphLayerManager glm;\r
\r
- public DNEdgeBuilder(Resource diagramResource) {\r
+ public DNEdgeBuilder(Resource diagramResource, IDiagram diagram) {\r
this.diagramResource = diagramResource;\r
+ this.diagram = diagram;\r
+ \r
+ IModifiableSynchronizationContext context = diagram.getHint(SynchronizationHints.CONTEXT);\r
+ glm = context.get(GraphSynchronizationHints.GRAPH_LAYER_MANAGER);\r
}\r
\r
public void create(WriteGraph graph, double[] start, double[] end) throws DatabaseException {\r
graph.claim(edge, DN.HasStartVertex, startVertex);\r
graph.claim(edge, DN.HasEndVertex, endVertex);\r
\r
+ // 7. Put the element on all the currently active layers if possible.\r
+ if (glm != null) {\r
+ putOnActiveLayer(graph, edge);\r
+ putOnActiveLayer(graph, startVertex);\r
+ putOnActiveLayer(graph, endVertex);\r
+ }\r
+ \r
Layer0Utils.addCommentMetadata(graph, "Added edge " + edge);\r
graph.markUndoPoint();\r
}\r
+ \r
+ private void putOnActiveLayer(WriteGraph graph, Resource res) throws DatabaseException {\r
+ glm.removeFromAllLayers(graph, res);\r
+ glm.putElementOnVisibleLayers(diagram, graph, res);\r
+ }\r
\r
private Resource getOrCreateVertex(WriteGraph graph, double[] coords) throws DatabaseException {\r
// TODO: check if vertex exists already, for now create always new\r