/******************************************************************************* * Copyright Technophobia Ltd 2012 * * This file is part of the Substeps Eclipse Plugin. * * The Substeps Eclipse Plugin is free software: you can redistribute it and/or modify * it under the terms of the Eclipse Public License v1.0. * * The Substeps Eclipse Plugin is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * Eclipse Public License for more details. * * You should have received a copy of the Eclipse Public License * along with the Substeps Eclipse Plugin. If not, see <http://www.eclipse.org/legal/epl-v10.html>. ******************************************************************************/ package com.technophobia.substeps.colour; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; /** * Cache of all {@link Colour}s used so far, keyed on their {@link RBG} * * @author sforbes * */ public class ColourManager { protected Map<RGB, Color> colourTable = new HashMap<RGB, Color>(10); /** * Get colour identified by rgb, creating if it doesn't yet exist * * @param rgb * The rgb value * @return Colour */ public Color getColor(final RGB rgb) { Color colour = colourTable.get(rgb); if (colour == null) { colour = new Color(Display.getCurrent(), rgb); colourTable.put(rgb, colour); } return colour; } /** * Dispose all current colours */ public void dispose() { final Iterator<Color> e = colourTable.values().iterator(); while (e.hasNext()) e.next().dispose(); } }