1 /* 2 * Copyright (c) 2003-2008 by Cosylab d. d. 3 * 4 * This file is part of CosyBeans-Common. 5 * 6 * CosyBeans-Common is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * CosyBeans-Common is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with CosyBeans-Common. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package com.cosylab.gui.components.ledder; 21 import java.awt.Color; 22 import java.util.HashMap; 23 24 import javax.swing.Icon; 25 26 /** 27 * Creates LED icon for given color. 28 * 29 * @author <a href="mailto:ales.pucelj@cosylab.com">Ales Pucelj</a> 30 * @version $id$ 31 */ 32 public class LedIconFactory { 33 34 private static HashMap<Color,Icon> cache; 35 36 37 /** 38 * Returns led icon from cache. New instance will be created if it does not 39 * exist already. 40 * 41 * @param color Color of led. 42 * @return Instance of led icon. 43 */ 44 private static final Icon getCached(Color color) { 45 if (cache == null) { 46 cache = new HashMap<Color, Icon>(); 47 } 48 Icon ic = cache.get(color); 49 if (ic == null) { 50 ic = new CustomLedIcon(color); 51 cache.put(color, ic); 52 } 53 return ic; 54 } 55 56 /** 57 * Creates the icon from <code>java.awt.Color</code>. See the class overview 58 * for details. 59 * 60 * @param color color of the icon. 61 * @return Icon always an instance of an icon 62 */ 63 public static Icon createIcon(Color color) { 64 return getCached(color); 65 } 66 67 }