/**
* Copyright 2008 Mathias Doenitz, http://lis.to/
*
* This file is part of the lis.to java desktop client. The lis.to java desktop client is free software: you can
* redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* The lis.to java desktop client 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 General Public License along with the lis.to java desktop client.
* If not, see http://www.gnu.org/licenses/
*/
package listo.client;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import listo.utils.caching.Cache;
import listo.utils.logging.Log;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
/**
* Simple provider for image icons.
*/
@Singleton
public class ImageProvider {
private final Log log;
private final Cache<String, ImageIcon> iconCache;
@Inject
public ImageProvider(Log log, Cache<String, ImageIcon> iconCache) {
this.log = log;
this.iconCache = iconCache;
}
public ImageIcon getIcon(String filename) {
ImageIcon icon = iconCache.get(filename);
if (icon != null) return icon;
String imagePath = "/images/" + filename;
URL url = ImageProvider.class.getResource(imagePath);
if (url == null) {
log.warn("Icon %1$s not found", imagePath);
return null;
}
icon = new ImageIcon(url);
iconCache.put(filename, icon);
return icon;
}
public Image getImage(String filename) {
return getIcon(filename).getImage();
}
}
|