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 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; } }