package de.tu_darmstadt.tk.SmartHomeNetworkSim.core.configuration; import java.awt.Color; import java.util.HashMap; import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Link; import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.util.Pair; import de.tu_darmstadt.tk.SmartHomeNetworkSim.view.util.Utility; /** * Container for the different Link colors * * @author Andreas T. Meyer-Berg */ public class LinkColorManager { /** * Map which stores the Colors and circle positions for all links */ private HashMap> linkColors = null; /** * Integer which contains the next color index, which should be used */ private int i = 0; /** * Initialize the color manager */ public LinkColorManager() { linkColors = new HashMap>(); } /** * Returns the color and index of the given Link * @param link link which should be looked up * @return Index and Color */ public Pair getColorOfLink(Link link){ return linkColors.get(link); } /** * Removes the given Link and its color * @param link link to be removed */ public void removeLink(Link link){ linkColors.remove(link); } /** * Adds a link with the given Color * @param link link to be added * @param pair Index and Color of the link */ public void addLinkColor(Link link, Pair pair) { linkColors.put(link, pair); } /** * Returns the color of the next Link * @return next color */ public Color getNextLinkColor(){ /** * Distinct Color as String containing the hex values (128 static ones should be enough) */ String colorHex = Utility.indexcolors[i++%Utility.indexcolors.length]; /** * Color of the given Hex String (Base16) */ Color color = new Color( Integer.valueOf(colorHex.substring(1,3),16), Integer.valueOf(colorHex.substring(3,5),16), Integer.valueOf(colorHex.substring(5,7),16)); return color; } }