]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/adapters/DistrictNetworkAdditionalColor.java
Final push of district changes
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / adapters / DistrictNetworkAdditionalColor.java
diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/adapters/DistrictNetworkAdditionalColor.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/adapters/DistrictNetworkAdditionalColor.java
new file mode 100644 (file)
index 0000000..ef3b10c
--- /dev/null
@@ -0,0 +1,42 @@
+package org.simantics.district.network.ui.adapters;
+
+import java.awt.Color;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.simantics.db.Resource;
+import org.simantics.g2d.element.IElement;
+import org.simantics.g2d.element.handler.AdditionalColor;
+import org.simantics.g2d.element.handler.ElementHandler;
+import org.simantics.utils.datastructures.hints.IHintContext.Key;
+import org.simantics.utils.datastructures.hints.IHintContext.KeyOf;
+import org.simantics.utils.ui.color.ColorPool;
+
+public class DistrictNetworkAdditionalColor implements AdditionalColor {
+
+    public static final Key KEY_DN_MAPPING_RESOURCE = new KeyOf(Resource.class, "DN_MAPPING_RESOURCE");
+    
+    private static final long serialVersionUID = -6290147660355075322L;
+
+    public static final ElementHandler INSTANCE = new DistrictNetworkAdditionalColor();
+
+    private ColorPool colorPool = new ColorPool();
+    private List<Resource> mappings = new ArrayList<>();
+    
+    @Override
+    public void setAdditionalColor(IElement e, Color c) {
+        throw new UnsupportedOperationException("Not needed!");
+    }
+
+    @Override
+    public Color getAdditionalColor(IElement e) {
+        Resource mapping = e.getHint(KEY_DN_MAPPING_RESOURCE);
+        if (!mappings.contains(mapping))
+            mappings.add(mapping);
+        
+        int index = mappings.indexOf(mapping);
+        Color color = colorPool.getColor(index).getAWTColor();
+        return color;
+    }
+
+}