]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/synchronization/graph/layer/GraphLayer.java
Some enhancements to GraphLayer-related utilities for Diagram layers
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / synchronization / graph / layer / GraphLayer.java
index 87746246d87b86632beaf48d55f5a7e38d7c28e9..33df689be4014e48665683f1f59209cc22c1b011 100644 (file)
  *******************************************************************************/
 package org.simantics.diagram.synchronization.graph.layer;
 
+import java.util.Collection;
+import java.util.Map;
+
 import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.function.DbConsumer;
+import org.simantics.g2d.layers.ILayer;
+import org.simantics.g2d.layers.SimpleLayer;
 
 /**
  * @author Tuukka Lehtonen
  */
 public class GraphLayer {
 
+    public static final String PROP_VISIBLE = "PROP_VISIBLE";
+    public static final String PROP_FOCUSABLE = "PROP_FOCUSABLE";
+
     private final String   name;
 
     private final Resource layer;
+    
+    private final Map<String, Resource> tags;
 
-    private final Resource visible;
-
-    private final Resource focusable;
-
-    public GraphLayer(String name, Resource layer, Resource visible, Resource focusable) {
+    public GraphLayer(String name, Resource layer, Map<String, Resource> tags) {
         this.name = name;
         this.layer = layer;
-        this.visible = visible;
-        this.focusable = focusable;
+        this.tags = tags;
     }
 
     public GraphLayer withName(String name) {
-        return new GraphLayer(name, layer, visible, focusable);
+        return new GraphLayer(name, layer, tags);
     }
 
     public String getName() {
@@ -46,11 +53,24 @@ public class GraphLayer {
     }
 
     public Resource getVisible() {
-        return visible;
+        return tags.get(PROP_VISIBLE);
     }
 
     public Resource getFocusable() {
-        return focusable;
+        return tags.get(PROP_FOCUSABLE);
+    }
+
+    public ILayer getILayer() {
+        return new SimpleLayer(name);
+    }
+
+    public Collection<Resource> getTags() {
+        return tags.values();
+    }
+
+    public void forEachTag(DbConsumer<Resource> consumer) throws DatabaseException {
+        for (Resource r : tags.values())
+            consumer.accept(r);
     }
 
 }
\ No newline at end of file