/*
* Copyright 2015 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.red.graphics;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jface.resource.FontDescriptor;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.widgets.Display;
public class FontsManager {
private static final Map<FontDescriptor, Font> FONTS_TABLE = new HashMap<FontDescriptor, Font>(10);
private FontsManager() {
// nothing to do
}
public static int size() {
return FONTS_TABLE.size();
}
public static Font getFont(final FontDescriptor fontDescriptor) {
return getFont(Display.getCurrent(), fontDescriptor);
}
public static Font getFont(final Display display, final FontDescriptor fontDescriptor) {
Font font = FONTS_TABLE.get(fontDescriptor);
if (font == null) {
font = fontDescriptor.createFont(display);
FONTS_TABLE.put(fontDescriptor, font);
}
return font;
}
public static Font getFont(final FontData fontData) {
return getFont(Display.getCurrent(), fontData);
}
public static Font getFont(final Display display, final FontData fontData) {
return getFont(display, FontDescriptor.createFrom(fontData));
}
/**
* Dispose fonts manager.
*/
public static void disposeFonts() {
for (final Font font : FONTS_TABLE.values()) {
font.dispose();
}
FONTS_TABLE.clear();
}
}