/*****************************************************************************
* This file is part of Rinzo
*
* Author: Claudio Cancinos
* WWW: https://sourceforge.net/projects/editorxml
* Copyright (C): 2008, Claudio Cancinos
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program 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
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; If not, see <http://www.gnu.org/licenses/>
****************************************************************************/
package ar.com.tadp.xml.rinzo.core.highlighting;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
import ar.com.tadp.xml.rinzo.XMLEditorPlugin;
/**
* Manages colors used in the editor. This behavior is centralized since Color's
* are a resources that should be disposed after used because SWT linked them
* with OS resources.
*
* @author ccancinos
*/
public class ColorManager {
protected Map<Serializable, Color> colorTable;
protected Map<String, Boolean> boldTable;
public ColorManager() {
colorTable = new HashMap<Serializable, Color>(10);
boldTable = new HashMap<String, Boolean>(10);
}
public void dispose() {
for (Color color : this.colorTable.values()) {
color.dispose();
}
}
public Color getColor(RGB rgb) {
Color color = colorTable.get(rgb);
if (color == null) {
color = new Color(Display.getCurrent(), rgb);
colorTable.put(rgb, color);
}
return color;
}
public Color getColor(String colorName) {
Color color = colorTable.get(colorName);
if (color == null) {
color = new Color(Display.getCurrent(), this.createRGB(colorName));
colorTable.put(colorName, color);
}
return color;
}
private RGB createRGB(String colorName) {
return PreferenceConverter.getColor(XMLEditorPlugin.getDefault().getPreferenceStore(), colorName);
}
public int isBold(String tag) {
Boolean bold = boldTable.get(tag);
if (bold == null) {
bold = Boolean.valueOf(XMLEditorPlugin.getDefault().getPreferenceStore().getBoolean(tag + "#bold"));
boldTable.put(tag, bold);
}
return bold.booleanValue() ? 1 : 0;
}
}