package org.swtchart.ext.internal.properties;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
/**
* SWT resources created with properties dialog.
*/
public class PropertiesResources {
/** the fonts */
private Map<String, Font> fonts;
/** the colors */
private Map<String, Color> colors;
/**
* The constructor.
*/
public PropertiesResources() {
fonts = new HashMap<String, Font>();
colors = new HashMap<String, Color>();
}
/**
* Gets the font associated with the given key.
*
* @param key
* the key associated with the font to get
* @return the font
*/
public Font getFont(String key) {
return fonts.get(key);
}
/**
* Gets the color associated with the given key.
*
* @param key
* the key associated with the color to get
* @return the color
*/
public Color getColor(String key) {
return colors.get(key);
}
/**
* Puts the given font. If a font associated with the given key already
* exists, the existing font will be disposed. When chart is disposed, all
* stored fonts in this object will be disposed.
* <p>
* When the resource won't be used, the resource should be disposed and
* removed.
*
* @param key
* the key for given font
* @param font
* the font to be stored
*/
public void put(String key, Font font) {
Font oldFont = fonts.get(key);
if (oldFont != null) {
oldFont.dispose();
}
fonts.put(key, font);
}
/**
* Puts the given color. If a font associated with the given key already
* exists, the existing color will be disposed. When chart is disposed, all
* stored colors in this object will be disposed.
*
* @param key
* the key for given color
* @param color
* the color to be stored
*/
public void put(String key, Color color) {
Color oldColor = colors.get(key);
if (oldColor != null) {
oldColor.dispose();
}
colors.put(key, color);
}
/**
* Removes the font associated with the given key. This method will be
* invoked typically when removing series object or axis object.
*
* @param key
* the key associated with the font to be removed
*/
public void removeFont(String key) {
Font font = fonts.get(key);
if (font != null) {
fonts.remove(key);
font.dispose();
}
}
/**
* Removes the color associated with the given key. This method will be
* invoked typically when removing series object or axis object.
*
* @param key
* the key associated with the color to be removed
*/
public void removeColor(String key) {
Color color = colors.get(key);
if (color != null) {
colors.remove(key);
color.dispose();
}
}
/**
* Disposes the SWT resources.
*/
public void dispose() {
for (Entry<String, Font> entry : fonts.entrySet()) {
entry.getValue().dispose();
}
for (Entry<String, Color> entry : colors.entrySet()) {
entry.getValue().dispose();
}
}
}