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; private static final org.simantics.utils.ui.color.Color lightBlue = new org.simantics.utils.ui.color.Color(34, 167, 240); private static final org.simantics.utils.ui.color.Color lightRed = new org.simantics.utils.ui.color.Color(236, 100, 75); private static final org.simantics.utils.ui.color.Color lightGreen = new org.simantics.utils.ui.color.Color(135, 211, 124); private static final org.simantics.utils.ui.color.Color gray = new org.simantics.utils.ui.color.Color(108, 122, 137); private static final org.simantics.utils.ui.color.Color orange = new org.simantics.utils.ui.color.Color(243, 156, 18); private static final org.simantics.utils.ui.color.Color purple = new org.simantics.utils.ui.color.Color(190, 144, 212); public static final ElementHandler INSTANCE = new DistrictNetworkAdditionalColor(); private ColorPool colorPool = new ColorPool(); private List mappings = new ArrayList<>(); public DistrictNetworkAdditionalColor() { colorPool.add(lightBlue); colorPool.add(lightRed); colorPool.add(lightGreen); colorPool.add(gray); colorPool.add(orange); colorPool.add(purple); } @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; } }