// Near Infinity - An Infinity Engine Browser and Editor
// Copyright (C) 2001 - 2005 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.icon;
import java.awt.Image;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.swing.ImageIcon;
public class Icons
{
public static final String ICON_ABOUT_16 = "About16.gif";
public static final String ICON_ADD_16 = "Add16.gif";
public static final String ICON_APP_16 = "App16.png";
public static final String ICON_APP_32 = "App32.png";
public static final String ICON_APP_64 = "App64.png";
public static final String ICON_APP_128 = "App128.png";
public static final String ICON_APPLICATION_16 = "Application16.gif";
public static final String ICON_ARROW_DOWN_15 = "ArrowDown15.gif";
public static final String ICON_ARROW_UP_15 = "ArrowUp15.gif";
public static final String ICON_BACK_16 = "Back16.gif";
public static final String ICON_BLUE_CIRCLE_16 = "BlueCircle16.gif";
public static final String ICON_BLUE_CIRCLE_20 = "BlueCircle20.gif";
public static final String ICON_BUNDLE_16 = "Bundle16.gif";
public static final String ICON_CHECK_NOT_16 = "Check_Not16.gif";
public static final String ICON_CHECK_16 = "Check16.gif";
public static final String ICON_CIRCLE_20 = "Circle20.gif";
public static final String ICON_COLLAPSE_16 = "Collapse16.png";
public static final String ICON_COLLAPSE_ALL_24 = "CollapseAll24.png";
public static final String ICON_COLOR_16 = "Color16.gif";
public static final String ICON_COPY_16 = "Copy16.gif";
public static final String ICON_CUT_16 = "Cut16.gif";
public static final String ICON_DELETE_16 = "Delete16.gif";
public static final String ICON_DOWN_16 = "Down16.gif";
public static final String ICON_EDIT_16 = "Edit16.gif";
public static final String ICON_END_16 = "End16.gif";
public static final String ICON_EXIT_16 = "Exit16.gif";
public static final String ICON_EXPAND_16 = "Expand16.png";
public static final String ICON_EXPAND_ALL_24 = "ExpandAll24.png";
public static final String ICON_EXPORT_16 = "Export16.gif";
public static final String ICON_FIND_16 = "Find16.gif";
public static final String ICON_FIND_AGAIN_16 = "FindAgain16.gif";
public static final String ICON_FORWARD_16 = "Forward16.gif";
public static final String ICON_GREEN_CIRCLE_16 = "GreenCircle16.gif";
public static final String ICON_HELP_16 = "Help16.gif";
public static final String ICON_HISTORY_16 = "History16.gif";
public static final String ICON_IMPORT_16 = "Import16.gif";
public static final String ICON_MAGNIFY_16 = "Magnify16.png";
public static final String ICON_MOVIE_16 = "Movie16.gif";
public static final String ICON_NEW_16 = "New16.gif";
public static final String ICON_OPEN_16 = "Open16.gif";
public static final String ICON_PASTE_16 = "Paste16.gif";
public static final String ICON_PAUSE_16 = "Pause16.gif";
public static final String ICON_PLAY_16 = "Play16.gif";
public static final String ICON_PRINT_16 = "Print16.gif";
public static final String ICON_PROPERTIES_16 = "Properties16.gif";
public static final String ICON_REDO_16 = "Redo16.gif";
public static final String ICON_REFRESH_16 = "Refresh16.gif";
public static final String ICON_RELEASE_16 = "Release16.gif";
public static final String ICON_REMOVE_16 = "Remove16.gif";
public static final String ICON_ROW_INSERT_AFTER_16 = "RowInsertAfter16.gif";
public static final String ICON_SAVE_16 = "Save16.gif";
public static final String ICON_STEP_BACK_16 = "StepBack16.gif";
public static final String ICON_STEP_FORWARD_16 = "StepForward16.gif";
public static final String ICON_STOP_16 = "Stop16.gif";
public static final String ICON_STOP_24 = "Stop24.gif";
public static final String ICON_UNDO_16 = "Undo16.gif";
public static final String ICON_UP_16 = "Up16.gif";
public static final String ICON_VOLUME_16 = "Volume16.gif";
public static final String ICON_YELLOW_CIRCLE_16 = "YellowCircle16.gif";
public static final String ICON_YELLOW_CIRCLE_20 = "YellowCircle20.gif";
public static final String ICON_ZOOM_16 = "Zoom16.gif";
private static final Map<URL, ImageIcon> ICONMAP = new HashMap<URL, ImageIcon>(100);
/**
* Returns an ImageIcon object of the specified graphics filename.
* @param name The graphics filename, can include a path relative to the current class path.
* @return The ImageIcon object, or {@code null} on error.
*/
public static ImageIcon getIcon(String name)
{
return getIcon(null, name);
}
/**
* Returns an ImageIcon object of the specified graphics filename.
* @param c A class located in the same package as the specified graphics file. The full package name
* of the class will be used to determine the correct path of the graphics file.
* @param name The graphics filename.
* @return The ImageIcon object, or {@code null} on error.
*/
public static ImageIcon getIcon(Class<?> c, String fileName)
{
URL url = getValidURL(c, fileName);
if (url != null) {
ImageIcon icon = ICONMAP.get(url);
if (icon == null) {
icon = new ImageIcon(url);
ICONMAP.put(url, icon);
}
return icon;
}
return null;
}
/**
* Returns an Image object of the specified graphics filename.
* @param name The graphics filename, can include a path relative to the current class path.
* @return The Image object, or {@code null} on error.
*/
public static Image getImage(String fileName)
{
return getImage(null, fileName);
}
/**
* Returns an Image object of the specified graphics filename.
* @param c A class located in the same package as the specified graphics file. The full package name
* of the class will be used to determine the correct path of the graphics file.
* @param name The graphics filename.
* @return The Image object, or {@code null} on error.
*/
public static Image getImage(Class<?> c, String fileName)
{
ImageIcon icon = getIcon(c, fileName);
if (icon != null) {
return icon.getImage();
}
return null;
}
// Returns a URL instance that points to the specified filename
private static URL getValidURL(Class<?> c, String fileName)
{
URL retVal = null;
if (fileName != null && !fileName.isEmpty()) {
if (c == null) {
retVal = ClassLoader.getSystemResource(fileName);
}
if (retVal == null) {
if (c == null) {
c = Icons.class;
}
String basePath = c.getPackage().getName().replace('.', '/');
String separator = (fileName.charAt(0) == '/') ? "" : "/";
retVal = ClassLoader.getSystemResource(basePath + separator + fileName);
}
}
return retVal;
}
protected Icons(){}
}