4cc1713830505d107dee56dd92ef224acc7c4e85
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / PHPUiImages.java
1 package net.sourceforge.phpdt.internal.ui;
2
3 import java.net.MalformedURLException;
4 import java.net.URL;
5
6 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
7 import org.eclipse.jface.action.IAction;
8 import org.eclipse.jface.resource.ImageDescriptor;
9 import org.eclipse.jface.resource.ImageRegistry;
10 import org.eclipse.swt.graphics.Image;
11
12 public class PHPUiImages {
13
14         protected static final String NAME_PREFIX = "net.sourceforge.phpdt.internal.ui.";
15         protected static final int NAME_PREFIX_LENGTH = NAME_PREFIX.length();
16   
17         protected static URL iconBaseURL;
18
19         static {
20                 String pathSuffix = "icons/";
21                 try {
22                         iconBaseURL = new URL(PHPeclipsePlugin.getDefault().getDescriptor().getInstallURL(), pathSuffix);
23                 } catch (MalformedURLException e) {
24                         PHPeclipsePlugin.log(e);
25                 }
26         }
27
28         protected static final ImageRegistry IMAGE_REGISTRY = new ImageRegistry();
29
30         protected static final String OBJ_PREFIX = "obj16";
31         protected static final String OVR_PREFIX = "ovr16";
32         protected static final String CTOOL_PREFIX = "ctool16";
33
34   public static final String IMG_CLASS = NAME_PREFIX + "class_obj.gif";
35   public static final String IMG_FUN = NAME_PREFIX + "fun_obj.gif";
36         public static final String IMG_OBJS_ERROR = NAME_PREFIX + "error_obj.gif";
37         public static final String IMG_OBJS_WARNING = NAME_PREFIX + "warning_obj.gif";
38         public static final String IMG_OBJS_INFO = NAME_PREFIX + "info_obj.gif";
39         public static final String IMG_CTOOLS_PHP_PAGE = NAME_PREFIX + "php_page.gif";
40         public static final String IMG_CTOOLS_PHP = NAME_PREFIX + "php.gif";
41
42   public static final ImageDescriptor DESC_CLASS = createManaged(OBJ_PREFIX, IMG_CLASS);
43   public static final ImageDescriptor DESC_FUN = createManaged(OBJ_PREFIX, IMG_FUN);
44         public static final ImageDescriptor DESC_OBJS_ERROR = createManaged(OBJ_PREFIX, IMG_OBJS_ERROR);
45         public static final ImageDescriptor DESC_OBJS_WARNING = createManaged(OBJ_PREFIX, IMG_OBJS_WARNING);
46         public static final ImageDescriptor DESC_OBJS_INFO = createManaged(OBJ_PREFIX, IMG_OBJS_INFO);
47         public static final ImageDescriptor DESC_CTOOL_PHP_PAGE = createManaged(CTOOL_PREFIX, IMG_CTOOLS_PHP_PAGE);
48         public static final ImageDescriptor DESC_CTOOL_PHP = createManaged(CTOOL_PREFIX, IMG_CTOOLS_PHP);
49
50         /**
51          * Returns the image managed under the given key in this registry.
52          * 
53          * @param key the image's key
54          * @return the image managed under the given key
55          */
56         public static Image get(String key) {
57                 return IMAGE_REGISTRY.get(key);
58         }
59
60         /**
61          * Sets the three image descriptors for enabled, disabled, and hovered to an action. The actions
62          * are retrieved from the *tool16 folders.
63          */
64         public static void setToolImageDescriptors(IAction action, String iconName) {
65                 setImageDescriptors(action, "tool16", iconName);
66         }
67
68         /**
69          * Sets the three image descriptors for enabled, disabled, and hovered to an action. The actions
70          * are retrieved from the *lcl16 folders.
71          */
72         public static void setLocalImageDescriptors(IAction action, String iconName) {
73                 setImageDescriptors(action, "lcl16", iconName);
74         }
75
76         public static ImageRegistry getImageRegistry() {
77                 return IMAGE_REGISTRY;
78         }
79
80         //---- Helper methods to access icons on the file system --------------------------------------
81
82         protected static void setImageDescriptors(IAction action, String type, String relPath) {
83
84                 try {
85                         ImageDescriptor id = ImageDescriptor.createFromURL(makeIconFileURL("d" + type, relPath));
86                         if (id != null)
87                                 action.setDisabledImageDescriptor(id);
88                 } catch (MalformedURLException e) {}
89
90                 try {
91                         ImageDescriptor id = ImageDescriptor.createFromURL(makeIconFileURL("c" + type, relPath));
92                         if (id != null)
93                                 action.setHoverImageDescriptor(id);
94                 } catch (MalformedURLException e) {}
95
96                 action.setImageDescriptor(create("e" + type, relPath));
97         }
98
99         protected static ImageDescriptor createManaged(String prefix, String name) {
100                 try {
101                         ImageDescriptor result = ImageDescriptor.createFromURL(makeIconFileURL(prefix, name.substring(NAME_PREFIX_LENGTH)));
102                         IMAGE_REGISTRY.put(name, result);
103                         return result;
104                 } catch (MalformedURLException e) {
105                         return ImageDescriptor.getMissingImageDescriptor();
106                 }
107         }
108
109         protected static ImageDescriptor create(String prefix, String name) {
110                 try {
111                         return ImageDescriptor.createFromURL(makeIconFileURL(prefix, name));
112                 } catch (MalformedURLException e) {
113                         return ImageDescriptor.getMissingImageDescriptor();
114                 }
115         }
116
117         protected static URL makeIconFileURL(String prefix, String name) throws MalformedURLException {
118                 if (iconBaseURL == null)
119                         throw new MalformedURLException();
120
121                 StringBuffer buffer = new StringBuffer(prefix);
122                 buffer.append('/');
123                 buffer.append(name);
124                 return new URL(iconBaseURL, buffer.toString());
125         }
126 }