/**
* ======================== legal notice ======================
*
* File: ImageFactory.java
* Created: 13. June 2012, 04:57
* Author: Geronimo
* Project: cmpc - a java frontend (client) part of compound media player
* uses external players to play the media
*
* CMP - compound media player
*
* is a client/server mediaplayer intended to play any media from any workstation
* without the need to export or mount shares. cmps is an easy to use backend
* with a (ready to use) HTML-interface. Additionally the backend supports
* authentication via HTTP-digest authorization.
* cmpc is a client with vdr-like osd-menues.
*
* Copyright (c) 2012 Reinhard Mantey, some rights reserved!
* published under Creative Commons by-sa
* For details see http://creativecommons.org/licenses/by-sa/3.0/
*
* The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
*
* --------------------------------------------------------------
*/
package de.schwarzrot.base.util;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
public class ImageFactory {
public ImageIcon getIcon(String key) {
return getIcon(key, 16, 16);
}
public ImageIcon getIcon(String key, int width, int height) {
if (!iconPool.containsKey(key))
iconPool.put(key, new ImageIcon(getImage(key, width, height)));
return iconPool.get(key);
}
public Image getImage(String key, int width, int height) {
ClassLoader cl = getClass().getClassLoader();
BufferedImage img = null;
URL url;
try {
String imgPath = RESOURCE_BUNDLE.getString(key);
url = cl.getResource(imgPath);
img = ImageIO.read(url);
return img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
} catch (Throwable t) {
System.err.println("failed to read key: " + key);
t.printStackTrace();
}
return null;
}
private Map iconPool = new HashMap();
private final String BUNDLE_NAME = "de.schwarzrot.control.app.lang.images";
private final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
}