import java.net.MalformedURLException;
import java.net.URL;
+import java.util.HashMap;
+import java.util.Iterator;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
"net.sourceforge.phpdt.internal.ui.";
protected static final int NAME_PREFIX_LENGTH = NAME_PREFIX.length();
- protected static URL fgIconBaseURL;
+ protected static URL fgIconBaseURL=null;
// static {
// String pathSuffix = "icons/";
static {
fgIconBaseURL= PHPeclipsePlugin.getDefault().getBundle().getEntry("/icons/"); //$NON-NLS-1$
}
- protected static final ImageRegistry IMAGE_REGISTRY = new ImageRegistry();
-
+ private static ImageRegistry fgImageRegistry= null;
+ private static HashMap fgAvoidSWTErrorMap= null;
+
protected static final String OBJ_PREFIX = "obj16";
protected static final String OVR_PREFIX = "ovr16";
protected static final String CTOOL_PREFIX = "ctool16";
private static final String T_WIZBAN= "wizban"; //$NON-NLS-1$
private static final String T_CLCL= "clcl16"; //$NON-NLS-1$
private static final String T_DLCL= "dlcl16"; //$NON-NLS-1$
+ private static final String T_ELCL= "elcl16"; //$NON-NLS-1$
private static final String T_CTOOL= "ctool16"; //$NON-NLS-1$
private static final String T_CVIEW= "cview16"; //$NON-NLS-1$
public static final ImageDescriptor DESC_WIZBAN_NEWCLASS= create(T_WIZBAN, "newclass_wiz.gif"); //$NON-NLS-1$
+ public static final ImageDescriptor DESC_ELCL_FILTER= create(T_ELCL, "filter_ps.gif"); //$NON-NLS-1$
+ public static final ImageDescriptor DESC_DLCL_FILTER= create(T_DLCL, "filter_ps.gif"); //$NON-NLS-1$
+
/*
* Available cached Images in the Java plugin image registry.
*/
createManaged(T_OBJ, IMG_CORRECTION_REMOVE);
createManaged(T_OBJ, IMG_CORRECTION_ADD);
}
+
/**
* Returns the image managed under the given key in this registry.
*
* @param key the image's key
* @return the image managed under the given key
- */
+ */
public static Image get(String key) {
- return IMAGE_REGISTRY.get(key);
+ return getImageRegistry().get(key);
+ }
+
+ /**
+ * Returns the image descriptor for the given key in this registry. Might be called in a non-UI thread.
+ *
+ * @param key the image's key
+ * @return the image descriptor for the given key
+ */
+ public static ImageDescriptor getDescriptor(String key) {
+ if (fgImageRegistry == null) {
+ return (ImageDescriptor) fgAvoidSWTErrorMap.get(key);
+ }
+ return getImageRegistry().getDescriptor(key);
}
/**
setImageDescriptors(action, "lcl16", iconName);
}
- public static ImageRegistry getImageRegistry() {
- return IMAGE_REGISTRY;
+ /*
+ * Helper method to access the image registry from the JavaPlugin class.
+ */
+ /* package */ static ImageRegistry getImageRegistry() {
+ if (fgImageRegistry == null) {
+ fgImageRegistry= new ImageRegistry();
+ for (Iterator iter= fgAvoidSWTErrorMap.keySet().iterator(); iter.hasNext();) {
+ String key= (String) iter.next();
+ fgImageRegistry.put(key, (ImageDescriptor) fgAvoidSWTErrorMap.get(key));
+ }
+ fgAvoidSWTErrorMap= null;
+ }
+ return fgImageRegistry;
}
//---- Helper methods to access icons on the file system --------------------------------------
action.setImageDescriptor(create("e" + type, relPath));
}
- protected static ImageDescriptor createManaged(
- String prefix,
- String name) {
+ private static ImageDescriptor createManaged(String prefix, String name) {
try {
- ImageDescriptor result =
- ImageDescriptor.createFromURL(
- makeIconFileURL(
- prefix,
- name.substring(NAME_PREFIX_LENGTH)));
- IMAGE_REGISTRY.put(name, result);
+ ImageDescriptor result= ImageDescriptor.createFromURL(makeIconFileURL(prefix, name.substring(NAME_PREFIX_LENGTH)));
+ if (fgAvoidSWTErrorMap == null) {
+ fgAvoidSWTErrorMap= new HashMap();
+ }
+ fgAvoidSWTErrorMap.put(name, result);
+ if (fgImageRegistry != null) {
+ PHPeclipsePlugin.logErrorMessage("Image registry already defined"); //$NON-NLS-1$
+ }
+ return result;
+ } catch (MalformedURLException e) {
+ return ImageDescriptor.getMissingImageDescriptor();
+ }
+ }
+
+ private static ImageDescriptor createManaged(String prefix, String name, String key) {
+ try {
+ ImageDescriptor result= ImageDescriptor.createFromURL(makeIconFileURL(prefix, name.substring(NAME_PREFIX_LENGTH)));
+ if (fgAvoidSWTErrorMap == null) {
+ fgAvoidSWTErrorMap= new HashMap();
+ }
+ fgAvoidSWTErrorMap.put(key, result);
+ if (fgImageRegistry != null) {
+ PHPeclipsePlugin.logErrorMessage("Image registry already defined"); //$NON-NLS-1$
+ }
return result;
} catch (MalformedURLException e) {
return ImageDescriptor.getMissingImageDescriptor();