package org.korsakow.ide.util;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.IOException;
import java.io.InputStream;
import java.util.Hashtable;
import java.util.MissingResourceException;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.xml.parsers.ParserConfigurationException;
import org.korsakow.ide.lang.LanguageBundle;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
public class UIResourceManager
{
public static final String UIRESOURCE_BASE_PATH = "ui/";
public static final String IMAGES_BASE_PATH = "images/";
public static final String SOUNDS_BASE_PATH = "sounds/";
public static final String ICON_ERROR = "error.png";
public static final String ICON_ADD = "add.png";
public static final String ICON_EDIT = "pencil.png";
public static final String ICON_DELETE = "delete.png";
public static final String ICON_MISSING = "link_break.png";
public static final String ICON_SNU = "SNU_icon1.png";
public static final String ICON_SNU_ADD = "SNU_icon_add.png";
public static final String ICON_SNU_STARTING = "brick_go.png";
public static final String ICON_VIDEO = "film.png";
public static final String ICON_SOUND = "sound.png";
public static final String ICON_SFX = "bell.png";
public static final String ICON_MUSIC = "music.png";
public static final String ICON_PREVIEW = "camera.png";
public static final String ICON_IMAGE = "image.png";
public static final String ICON_TEXT = "page_white_text.png";
public static final String ICON_INTERFACE = "application_form.png";
public static final String ICON_INTERFACE_ADD = "application_form_add.png";
public static final String ICON_PROJECT = "box.png";
public static final String ICON_WIDGET = "plugin.png";
public static final String ICON_RULE = "cog.png";
public static final String ICON_STARTFILM = "traffic_green.png";
public static final String ICON_ENDFILM = "traffic_red.png";
public static final String ICON_FOLDER = "folder.png";
public static final String ICON_FOLDER_ADD = "folder_add.png";
public static final String ICON_FOLDER_EDIT = "folder_edit.png";
public static final String ICON_CONTROL_PLAY = "control_play_silver.png";
public static final String ICON_CONTROL_PLAY_WIDGET = "control_play_blue.png";
public static final String ICON_CONTROL_PAUSE_WIDGET = "control_pause_blue.png";
public static final String ICON_CONTROL_STOP = "control_stop_silver.png";
public static final String ICON_CONTROL_PAUSE = "control_pause_blug.png";
public static final String ICON_CONTROL_SEEK_START = "control_start_blue.png";
public static final String ICON_CONTROL_SEEK_END = "control_end_blue.png";
public static final String ICON_CONTROL_FULLSCREEN = "fullscreenbw.png";
public static final String ICON_CHECK = "check.png";
public static final String ICON_SNU_IN = "SNU_in.png";
public static final String ICON_SNU_OUT = "SNU_out1.png";
public static final String ICON_BLANK_SM = "blank_16x16.png";
public static final String ICON_WINDOW_ICON = "korsakow-64.png";
public static final String DRAG_DROP_KEY = "images.draganddrop";
public static final String ABOUT_KEY = "images.about";
public static final String SOUND_SAVE = "StarsNew2.aif";
// public static final String LAYOUT_SNU_RESOURCE_VIEW = "snuresourceview";
public static final String SYMBOL_INFINITE = "\u221E";
private static final Hashtable<String, Icon> iconCache = new Hashtable<String, Icon>();
private static final Hashtable<String, Image> imageCache = new Hashtable<String, Image>();
/**
* Language-specific images might not exist due to delays in translation. This method
* returns a generic image in such cases.
*/
public static Icon getLanguageIcon(String name)
{
try {
return getIcon(LanguageBundle.getString(name));
} catch (MissingResourceException e) {
return getIcon(LanguageBundle.getStringFromDefaultBundle(name));
}
}
public static Image getImage(String name)
{
Image icon;
if ((icon = imageCache.get(name)) == null) {
icon = Toolkit.getDefaultToolkit().createImage(ResourceManager.getResourceFile(UIRESOURCE_BASE_PATH + IMAGES_BASE_PATH + name).getAbsolutePath());
imageCache.put(name, icon);
}
return icon;
}
public static Icon getIcon(String name)
{
Icon icon;
if ((icon = iconCache.get(name)) == null) {
icon = new ImageIcon(ResourceManager.getResourceFile(UIRESOURCE_BASE_PATH + IMAGES_BASE_PATH + name).getAbsolutePath());
iconCache.put(name, icon);
}
return icon;
}
public static Icon getIconImmediately(String name) throws IOException
{
Icon icon;
if ((icon = iconCache.get(name)) == null) {
icon = new ImageIcon(FileUtil.readBytesFully(ResourceManager.getResourceStream(UIRESOURCE_BASE_PATH + IMAGES_BASE_PATH + name)));
iconCache.put(name, icon);
}
return icon;
}
public static String getSymbol(String name)
{
return name;
}
public static Document getLayout(String name) throws SAXException, ParserConfigurationException, IOException
{
String path = UIRESOURCE_BASE_PATH + "layouts/" + name + ".xml";
InputStream stream = ResourceManager.getResourceStream(path);
Document document = DomUtil.parseXML(stream);
return document;
}
public static InputStream getSoundResourceStream(String name)
{
return ResourceManager.getResourceStream(UIRESOURCE_BASE_PATH + SOUNDS_BASE_PATH + name);
}
}