--- /dev/null
+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;
+ }
+
+}