package games.strategy.triplea.image; import java.awt.Image; import java.io.IOException; import java.net.URL; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import games.strategy.debug.ClientLogger; import games.strategy.triplea.ResourceLoader; public class ImageFactory { private final Map<String, Image> m_images = new HashMap<>(); private ResourceLoader m_resourceLoader; public void setResourceLoader(final ResourceLoader loader) { m_resourceLoader = loader; m_images.clear(); } protected Image getImage(final String key1, final String key2, final boolean throwIfNotFound) { final Image i1 = getImage(key1, false); if (i1 != null) { return i1; } return getImage(key2, throwIfNotFound); } protected Image getImage(final String key, final boolean throwIfNotFound) { if (!m_images.containsKey(key)) { final URL url = m_resourceLoader.getResource(key); if (url == null && throwIfNotFound) { throw new IllegalStateException("Image Not Found:" + key); } else if (url == null) { m_images.put(key, null); return null; } Image image; try { image = ImageIO.read(url); } catch (final IOException e) { ClientLogger.logQuietly(e); throw new IllegalStateException(e.getMessage()); } m_images.put(key, image); } return m_images.get(key); } }