package mediathek.tool;
import java.awt.Image;
import java.util.HashMap;
import java.util.Map;
import javax.swing.ImageIcon;
/**
* This class will load only one instance for all used sender icons.
*/
public class MVSenderIconCache {
private final static Map<String, ImageIcon> iconCache = new HashMap<>();
private final static Map<String, ImageIcon> iconCache_small = new HashMap<>();
private final static String PFAD = "/mediathek/res/sender/";
final static int height = 32;
final static int height_small = 15;
static {
iconCache.put("3Sat", scaleImage(PFAD + "3sat.png", height));
iconCache.put("ARD", scaleImage(PFAD + "ard.png", height));
iconCache.put("ARD.Podcast", scaleImage(PFAD + "ard.png", height));
iconCache.put("ARTE.DE", scaleImage(PFAD + "arte-de.png", height));
iconCache.put("ARTE.FR", scaleImage(PFAD + "arte-fr.png", height));
iconCache.put("BR", scaleImage(PFAD + "br.png", height));
iconCache.put("HR", scaleImage(PFAD + "hr.png", height));
iconCache.put("KiKA", scaleImage(PFAD + "kika.png", height));
iconCache.put("MDR", scaleImage(PFAD + "mdr.png", height));
iconCache.put("DW", scaleImage(PFAD + "dw.png", height));
iconCache.put("NDR", scaleImage(PFAD + "ndr.png", height));
iconCache.put("ORF", scaleImage(PFAD + "orf.png", height));
iconCache.put("RBB", scaleImage(PFAD + "rbb.png", height));
iconCache.put("SR", scaleImage(PFAD + "sr.png", height));
iconCache.put("SRF", scaleImage(PFAD + "srf.png", height));
iconCache.put("SRF.Podcast", scaleImage(PFAD + "srf-podcast.png", height));
iconCache.put("SWR", scaleImage(PFAD + "swr.png", height));
iconCache.put("WDR", scaleImage(PFAD + "wdr.png", height));
iconCache.put("ZDF", scaleImage(PFAD + "zdf.png", height));
iconCache.put("ZDF-tivi", scaleImage(PFAD + "zdf-tivi.png", height));
iconCache.put("PHOENIX", scaleImage(PFAD + "phoenix.png", height));
}
static {
iconCache_small.put("3Sat", scaleImage(PFAD + "3sat.png", height_small));
iconCache_small.put("ARD", scaleImage(PFAD + "ard.png", height_small));
iconCache_small.put("ARD.Podcast", scaleImage(PFAD + "ard.png", height_small));
iconCache_small.put("ARTE.DE", scaleImage(PFAD + "arte-de.png", height_small));
iconCache_small.put("ARTE.FR", scaleImage(PFAD + "arte-fr.png", height_small));
iconCache_small.put("BR", scaleImage(PFAD + "br.png", height_small));
iconCache_small.put("HR", scaleImage(PFAD + "hr.png", height_small));
iconCache_small.put("KiKA", scaleImage(PFAD + "kika.png", height_small));
iconCache_small.put("MDR", scaleImage(PFAD + "mdr.png", height_small));
iconCache_small.put("DW", scaleImage(PFAD + "dw.png", height_small));
iconCache_small.put("NDR", scaleImage(PFAD + "ndr.png", height_small));
iconCache_small.put("ORF", scaleImage(PFAD + "orf.png", height_small));
iconCache_small.put("RBB", scaleImage(PFAD + "rbb.png", height_small));
iconCache_small.put("SR", scaleImage(PFAD + "sr.png", height_small));
iconCache_small.put("SRF", scaleImage(PFAD + "srf.png", height_small));
iconCache_small.put("SRF.Podcast", scaleImage(PFAD + "srf-podcast.png", height_small));
iconCache_small.put("SWR", scaleImage(PFAD + "swr.png", height_small));
iconCache_small.put("WDR", scaleImage(PFAD + "wdr.png", height_small));
iconCache_small.put("ZDF", scaleImage(PFAD + "zdf.png", height_small));
iconCache_small.put("ZDF-tivi", scaleImage(PFAD + "zdf-tivi.png", height_small));
iconCache_small.put("PHOENIX", scaleImage(PFAD + "phoenix.png", height_small));
}
/**
* Get the icon for a specific sender.
*
* @param sender The name of the supported sender.
* @param small
* @return The {@link javax.swing.ImageIcon} for the sender or null.
*/
public ImageIcon get(String sender, boolean small) {
if (small) {
return iconCache_small.get(sender);
} else {
return iconCache.get(sender);
}
}
private static ImageIcon scaleImage(String source, int maxHeight) {
int newWidth, priorHeight, priorWidth; // Variables for the old - new height and width
Image image;
ImageIcon sizeImage;
image = new ImageIcon(MVSenderIconCache.class.getResource(source)).getImage();
sizeImage = new ImageIcon(image);
priorHeight = sizeImage.getIconHeight();
priorWidth = sizeImage.getIconWidth();
newWidth = (int) (((float) priorWidth / (float) priorHeight) * (float) maxHeight);
return new ImageIcon(image.getScaledInstance(newWidth, maxHeight, Image.SCALE_AREA_AVERAGING));
}
}