blob: 666cd6ce1a7b95312dce80640171692da8bb44e5 [file] [log] [blame]
package net.sf.taverna.biocatalogue.model;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.image.BufferedImage;
import java.net.URL;
import java.util.HashMap;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import net.sf.taverna.t2.activities.rest.ui.servicedescription.RESTActivityIcon;
import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLActivityIcon;
import net.sf.taverna.t2.ui.perspectives.biocatalogue.BioCataloguePerspective;
/**
* This class will be a single point of lookup of all resource files.
* (Icons, images, CSS files, etc).
*
* @author Sergejs Aleksejevs
*/
public class ResourceManager
{
// subfolders, where some icons / other resources are kept
public static final String FAMFAMFAM_PATH = "famfamfam_silk/"; // free collection of icons
public static final String SERVICE_ICONS_PATH = "service_icons/"; // icons related to web services (e.g. service types)
public static final String FOLDS_PATH = "folds/"; // icons for 'folding' menus (like 'Search for...')
public static final String TRISTATE_TREE_ICONS_PATH = "tristate_checkbox/"; // icons for the tri-state filtering tree
// all known resources to follow
public static final int FAVICON = 1;
public static final int INFORMATION_ICON_LARGE = 10;
public static final int SPINNER_STILL = 20;
public static final int SPINNER = 21;
public static final int BAR_LOADER_GREY = 25;
public static final int BAR_LOADER_GREY_STILL = 26;
public static final int BAR_LOADER_ORANGE = 30;
public static final int BAR_LOADER_ORANGE_STILL = 31;
public static final int FOLD_ICON = 40;
public static final int UNFOLD_ICON = 41;
public static final int FOLD_ICON_16x16 = 42;
public static final int UNFOLD_ICON_16x16 = 43;
public static final int SERVICE_TYPE_SOAP_ICON = 50;
public static final int SERVICE_TYPE_REST_ICON = 51;
public static final int SERVICE_TYPE_MULTITYPE_ICON = 65;
public static final int SERVICE_TYPE_UNKNOWN_ICON = 70;
public static final int TRISTATE_CHECKBOX_CHECKED_ICON = 80;
public static final int TRISTATE_CHECKBOX_PARTIAL_ICON = 82;
public static final int TRISTATE_CHECKBOX_UNCHECKED_ICON = 85;
public static final int UNCHECKED_ICON = 86;
public static final int SERVICE_STATUS_PASSED_ICON = 100;
public static final int SERVICE_STATUS_PASSED_ICON_LARGE = 101;
public static final int SERVICE_STATUS_WARNING_ICON = 110;
public static final int SERVICE_STATUS_WARNING_ICON_LARGE = 111;
public static final int SERVICE_STATUS_FAILED_ICON = 120;
public static final int SERVICE_STATUS_FAILED_ICON_LARGE = 121;
public static final int SERVICE_STATUS_UNCHECKED_ICON = 130;
public static final int SERVICE_STATUS_UNCHECKED_ICON_LARGE = 131;
public static final int SERVICE_STATUS_UNKNOWN_ICON = 140;
public static final int UNKNOWN_RESOURCE_TYPE_ICON = 200;
public static final int USER_ICON = 205;
public static final int REGISTRY_ICON = 210;
public static final int SERVICE_PROVIDER_ICON = 215;
public static final int SERVICE_ICON = 220;
public static final int SOAP_OPERATION_ICON = 225;
public static final int REST_METHOD_ICON = 227;
public static final int SERVICE_CATEGORY_ICON = 230;
public static final int WSDL_DOCUMENT_ICON = 235;
public static final int TAG_ICON = 240;
public static final int OPEN_IN_BIOCATALOGUE_ICON = 310;
public static final int SEARCH_ICON = 315;
public static final int HISTORY_ICON = 320;
public static final int REFRESH_ICON = 330;
public static final int FAVOURITE_ICON = 335;
public static final int TICK_ICON = 340;
public static final int CROSS_ICON = 341;
public static final int WARNING_ICON = 342;
public static final int ERROR_ICON = 343;
public static final int SAVE_ICON = 345;
public static final int DELETE_ITEM_ICON = 350;
public static final int CLEAR_ICON = 355;
public static final int LOCKED_ICON = 360;
public static final int UNLOCKED_ICON = 365;
public static final int BACK_ICON = 370;
public static final int FORWARD_ICON = 375;
public static final int FILTER_ICON = 380;
public static final int PREVIEW_ICON = 385;
public static final int SUGGESTION_TO_USER_ICON = 390;
public static final int ADD_PROCESSOR_TO_WORKFLOW_ICON = 395;
public static final int ADD_PROCESSOR_AS_FAVOURITE_ICON = 396;
public static final int EXECUTE_HEALTH_CHECK_ICON = 397;
public static final int ADD_ALL_SERVICES_AS_FAVOURITE_ICON = 398;
public static final int SELECT_ALL_ICON = 400;
public static final int DESELECT_ALL_ICON = 405;
public static final int EXPAND_ALL_ICON = 410;
public static final int COLLAPSE_ALL_ICON = 420;
public static final int SORT_BY_NAME_ICON = 450;
public static final int SORT_BY_COUNTS_ICON = 455;
public static final int STYLES_CSS = 1000;
/**
* Simple method to retrieve relative path of a required resource.
*/
public static String getResourceRelPath(int resourceId)
{
String resPath = "";
switch (resourceId) {
case FAVICON: resPath += "favicon.png";
break;
case INFORMATION_ICON_LARGE: resPath += "info-sphere-35.png";
break;
case SPINNER_STILL: resPath += "ajax-loader-still.gif";
break;
case SPINNER: resPath += "ajax-loader.gif";
break;
case BAR_LOADER_GREY: resPath += "ajax-loader-grey-bert2.gif";
break;
case BAR_LOADER_GREY_STILL: resPath += "ajax-loader-grey-bert2-still.png";
break;
case BAR_LOADER_ORANGE: resPath += "ajax-loader-orange-bert2.gif";
break;
case BAR_LOADER_ORANGE_STILL: resPath += "ajax-loader-orange-bert2-still.png";
break;
case FOLD_ICON: resPath += FOLDS_PATH + "fold.png";
break;
case UNFOLD_ICON: resPath += FOLDS_PATH + "unfold.png";
break;
case FOLD_ICON_16x16: resPath += FOLDS_PATH + "fold_16x16.png";
break;
case UNFOLD_ICON_16x16: resPath += FOLDS_PATH + "unfold_16x16.png";
break;
case SERVICE_TYPE_SOAP_ICON: resPath += SERVICE_ICONS_PATH + "service_type_soap.png";
break;
case SERVICE_TYPE_REST_ICON: resPath += SERVICE_ICONS_PATH + "service_type_rest.png";
break;
case SERVICE_TYPE_MULTITYPE_ICON: resPath += SERVICE_ICONS_PATH + "service_type_multitype.png";
break;
case SERVICE_TYPE_UNKNOWN_ICON: resPath += SERVICE_ICONS_PATH + "service_type_unknown.png";
break;
case SERVICE_STATUS_PASSED_ICON: resPath += FAMFAMFAM_PATH + "accept.png";
break;
case SERVICE_STATUS_PASSED_ICON_LARGE: resPath += "tick-sphere-35.png";
break;
case SERVICE_STATUS_WARNING_ICON: resPath += FAMFAMFAM_PATH + "error.png";
break;
case SERVICE_STATUS_WARNING_ICON_LARGE: resPath += "pling-sphere-35.png";
break;
case SERVICE_STATUS_FAILED_ICON: resPath += FAMFAMFAM_PATH + "exclamation.png";
break;
case SERVICE_STATUS_FAILED_ICON_LARGE: resPath += "cross-sphere-35.png";
break;
case SERVICE_STATUS_UNCHECKED_ICON: resPath += FAMFAMFAM_PATH + "help.png";
break;
case SERVICE_STATUS_UNCHECKED_ICON_LARGE: resPath += "query-sphere-35.png";
break;
case SERVICE_STATUS_UNKNOWN_ICON: resPath += FAMFAMFAM_PATH + "grey_circle.png";
break;
case TRISTATE_CHECKBOX_CHECKED_ICON: resPath += TRISTATE_TREE_ICONS_PATH + "tristate_checkbox_checked.png";
break;
case TRISTATE_CHECKBOX_PARTIAL_ICON: resPath += TRISTATE_TREE_ICONS_PATH + "tristate_checkbox_partial.png";
break;
case TRISTATE_CHECKBOX_UNCHECKED_ICON: resPath += TRISTATE_TREE_ICONS_PATH + "tristate_checkbox_unchecked.png";
break;
case UNCHECKED_ICON: resPath += "unchecked.png";
break;
case UNKNOWN_RESOURCE_TYPE_ICON: resPath += FAMFAMFAM_PATH + "grey_circle.png";
break;
case USER_ICON: resPath += FAMFAMFAM_PATH + "user.png";
break;
case REGISTRY_ICON: resPath += FAMFAMFAM_PATH + "remote_resource.png";
break;
case SERVICE_PROVIDER_ICON: resPath += FAMFAMFAM_PATH + "chart_organisation.png";
break;
case SERVICE_ICON: resPath += "favicon.png";
break;
case SOAP_OPERATION_ICON: resPath += FAMFAMFAM_PATH + "plugin.png";
break;
case REST_METHOD_ICON: resPath += FAMFAMFAM_PATH + "plugin.png";
break;
case SERVICE_CATEGORY_ICON: resPath += FAMFAMFAM_PATH + "text_list_numbers.png";
break;
case TAG_ICON: resPath += FAMFAMFAM_PATH + "tag_blue.png";
break;
case WSDL_DOCUMENT_ICON: resPath += FAMFAMFAM_PATH + "page_white_code.png";
break;
case OPEN_IN_BIOCATALOGUE_ICON: resPath += FAMFAMFAM_PATH + "magnifier.png";
break;
case SEARCH_ICON: resPath += FAMFAMFAM_PATH + "magnifier.png";
break;
case HISTORY_ICON: resPath += FAMFAMFAM_PATH + "folder_explore.png";
break;
case REFRESH_ICON: resPath += FAMFAMFAM_PATH + "arrow_refresh.png";
break;
case FAVOURITE_ICON: resPath += FAMFAMFAM_PATH + "star.png";
break;
case TICK_ICON: resPath += FAMFAMFAM_PATH + "tick.png";
break;
case CROSS_ICON: resPath += FAMFAMFAM_PATH + "cross.png";
break;
case WARNING_ICON: resPath += FAMFAMFAM_PATH + "error.png";
break;
case ERROR_ICON: resPath += FAMFAMFAM_PATH + "exclamation.png";
break;
case SAVE_ICON: resPath += FAMFAMFAM_PATH + "disk.png";
break;
case DELETE_ITEM_ICON: resPath += FAMFAMFAM_PATH + "cross.png";
break;
case CLEAR_ICON: resPath += "trash.png";
break;
case LOCKED_ICON: resPath += FAMFAMFAM_PATH + "lock.png";
break;
case UNLOCKED_ICON: resPath += FAMFAMFAM_PATH + "lock_open.png";
break;
case BACK_ICON: resPath += FAMFAMFAM_PATH + "arrow_left.png";
break;
case FORWARD_ICON: resPath += FAMFAMFAM_PATH + "arrow_right.png";
break;
case FILTER_ICON: resPath += FAMFAMFAM_PATH + "arrow_join (flipped vertically).png";
break;
case PREVIEW_ICON: resPath += FAMFAMFAM_PATH + "magnifier.png";
break;
case SUGGESTION_TO_USER_ICON: resPath += FAMFAMFAM_PATH + "lightbulb.png";
break;
case ADD_PROCESSOR_TO_WORKFLOW_ICON: resPath += "open_in_BioCatalogue.png";
break;
case ADD_PROCESSOR_AS_FAVOURITE_ICON: resPath += FAMFAMFAM_PATH + "star.png";
break;
case ADD_ALL_SERVICES_AS_FAVOURITE_ICON:resPath += FAMFAMFAM_PATH + "multiple_star.png";
break;
case EXECUTE_HEALTH_CHECK_ICON: resPath += FAMFAMFAM_PATH + "information.png";
break;
case SELECT_ALL_ICON: resPath += FAMFAMFAM_PATH + "tick.png";
break;
case DESELECT_ALL_ICON: resPath += FAMFAMFAM_PATH + "cross.png";
break;
case EXPAND_ALL_ICON: resPath += FAMFAMFAM_PATH + "text_linespacing.png";
break;
case COLLAPSE_ALL_ICON: resPath += FAMFAMFAM_PATH + "text_linespacing (collapse).png";
break;
case SORT_BY_NAME_ICON: resPath += FAMFAMFAM_PATH + "style.png";
break;
case SORT_BY_COUNTS_ICON: resPath += FAMFAMFAM_PATH + "sum.png";
break;
case STYLES_CSS: resPath += "styles.css";
break;
default: return (null);
}
return (resPath);
}
private static URL getResourceLocalURL(int resourceId) {
return (BioCataloguePerspective.class.getResource(getResourceRelPath(resourceId)));
}
private static HashMap<Integer, ImageIcon> iconMap = new HashMap<Integer, ImageIcon>();
public static ImageIcon getImageIcon(int iconId)
{
ImageIcon result = iconMap.get(iconId);
if (result == null) {
result = new ImageIcon(getResourceLocalURL(iconId));
iconMap.put(iconId, result);
}
return result;
}
public static ImageIcon getImageIcon(URL resourceLocalURL) {
return (new ImageIcon(resourceLocalURL));
}
public static Icon getIconFromTaverna(int iconId) {
switch (iconId) {
case SOAP_OPERATION_ICON: return (WSDLActivityIcon.getWSDLIcon());
case REST_METHOD_ICON: return (RESTActivityIcon.getRESTActivityIcon());
default: return (drawMissingIcon());
}
}
/**
* This method would be called by other methods in this class
* when they were unable to load requested icon.
*
* @return A 16x16 pixel icon that represents a missing icon -
* a red cross.
*/
private static ImageIcon drawMissingIcon()
{
int w = 16;
int h = 16;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
BufferedImage image = gc.createCompatibleImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.RED);
g.setStroke(new BasicStroke(3, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER));
g.drawLine(4, 4, 12, 12);
g.drawLine(12, 4, 4, 12);
g.dispose();
return new ImageIcon(image);
}
}