X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fsynchronization%2Fgraph%2Flayer%2FGraphLayerManager.java;h=41947ef993c49bc937b39eedddb0a0cbf3d25460;hp=5b6e0f63a3d2b12925ca2e1b2d0e590b3883c5ab;hb=d11fef0101853949671492de5b49ea94892ced78;hpb=efec7759cf9f153cf368f2ece6fed67f0d1632b1;ds=sidebyside diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/synchronization/graph/layer/GraphLayerManager.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/synchronization/graph/layer/GraphLayerManager.java index 5b6e0f63a..41947ef99 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/synchronization/graph/layer/GraphLayerManager.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/synchronization/graph/layer/GraphLayerManager.java @@ -45,7 +45,6 @@ import org.simantics.g2d.layers.ILayer; import org.simantics.g2d.layers.ILayers; import org.simantics.g2d.layers.ILayersEditor; import org.simantics.g2d.layers.ILayersEditor.ILayersEditorListener; -import org.simantics.g2d.layers.SimpleLayer; import org.simantics.g2d.layers.SimpleLayers; import org.simantics.layer0.Layer0; @@ -175,15 +174,17 @@ public class GraphLayerManager { @Override public void perform(WriteGraph g) throws Exception { String newName = layer.getName(); - for (Resource l : g.getObjects(diagram, dia.HasLayer)) { - String name = g.getRelatedValue(l, l0.HasName); + for (Resource layer : g.getObjects(diagram, dia.HasLayer)) { + String name = g.getRelatedValue(layer, l0.HasName); if (newName.equals(name)) { return; } } - GraphLayer l = new GraphLayerUtil(g).createLayer(newName, false); - g.claim(diagram, dia.HasLayer, l.getLayer()); - layers.put(newName, l); + + IGraphLayerUtil util = g.adapt(DiagramResource.getInstance(g).Layer, IGraphLayerUtil.class); + GraphLayer layer = util.createLayer(g, newName, false); + g.claim(diagram, dia.HasLayer, layer.getLayer()); + layers.put(newName, layer); } } @@ -292,14 +293,8 @@ public class GraphLayerManager { } } - GraphLayer loadLayer(ReadGraph g, Resource layer) throws DatabaseException { - String name = g.getRelatedValue(layer, l0.HasName); - Resource visible = g.getSingleObject(layer, dia.HasVisibleTag); - Resource focusable = g.getSingleObject(layer, dia.HasFocusableTag); - return new GraphLayer(name, layer, visible, focusable); - } - public ILayersEditor loadLayers(IDiagram diagram, ReadGraph g, Resource diagramResource) throws DatabaseException { + SimpleLayers result = new SimpleLayers(); ConcurrentMap newLayers = new ConcurrentHashMap(); @@ -314,10 +309,12 @@ public class GraphLayerManager { // We need to put GraphLayer to newLayers so... for (Resource layer : g.getObjects(diagramResource, dia.HasLayer)) { - GraphLayer gl = loadLayer(g, layer); + IGraphLayerUtil layerUtil = g.adapt(g.getSingleObject(layer, Layer0.getInstance(g).InstanceOf), IGraphLayerUtil.class); + + GraphLayer gl = layerUtil.loadLayer(g, layer); for (String name : fixed) { if (name.equals(gl.getName())) { - SimpleLayer l = new SimpleLayer(gl.getName()); + ILayer l = gl.getILayer(); newLayers.put(gl.getName(), gl); result.addLayer(l); result.activate(l); @@ -331,8 +328,9 @@ public class GraphLayerManager { System.out.println("Loading layers"); for (Resource layer : g.getObjects(diagramResource, dia.HasLayer)) { - GraphLayer gl = loadLayer(g, layer); - SimpleLayer l = new SimpleLayer(gl.getName()); + IGraphLayerUtil layerUtil = g.adapt(g.getSingleObject(layer, Layer0.getInstance(g).InstanceOf), IGraphLayerUtil.class); + GraphLayer gl = layerUtil.loadLayer(g, layer); + ILayer l = gl.getILayer(); newLayers.put(gl.getName(), gl); result.addLayer(l); @@ -344,7 +342,8 @@ public class GraphLayerManager { if (DEBUG_LAYERS) System.out.println(" Loaded " + (active ? "active" : "inactive") + " layer '" + gl.getName() + "'"); - l.addLayerListener(layerListener); + if (l instanceof IEditableLayer) + ((IEditableLayer) l).addLayerListener(layerListener); if (active) result.activate(l); } @@ -517,8 +516,7 @@ public class GraphLayerManager { for (ILayer layer : visibleLayers) { GraphLayer gl = layers.get(layer.getName()); if (gl != null) { - DiagramGraphUtil.tag(g, element, gl.getVisible(), true); - DiagramGraphUtil.tag(g, element, gl.getFocusable(), true); + gl.forEachTag(tag -> DiagramGraphUtil.tag(g, element, tag, true)); } } }