X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/PHPUiImages.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/PHPUiImages.java index ee12ab3..395ee76 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/PHPUiImages.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/PHPUiImages.java @@ -2,6 +2,8 @@ package net.sourceforge.phpdt.internal.ui; import java.net.MalformedURLException; import java.net.URL; +import java.util.HashMap; +import java.util.Iterator; import net.sourceforge.phpeclipse.PHPeclipsePlugin; @@ -16,7 +18,7 @@ public class PHPUiImages { "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/"; @@ -38,8 +40,9 @@ public class PHPUiImages { 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"; @@ -102,11 +105,15 @@ public class PHPUiImages { 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. */ @@ -135,7 +142,7 @@ public class PHPUiImages { public static final String IMG_OBJS_INTERFACE= NAME_PREFIX + "int_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_INTERFACEALT= NAME_PREFIX + "intf_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_INTERFACE_DEFAULT= NAME_PREFIX + "int_default_obj.gif"; //$NON-NLS-1$ - public static final String IMG_OBJS_CUNIT= NAME_PREFIX + "jcu_obj.gif"; //$NON-NLS-1$ + public static final String IMG_OBJS_CUNIT= NAME_PREFIX + "phpedit.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_CUNIT_RESOURCE= NAME_PREFIX + "jcu_resource_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_CFILE= NAME_PREFIX + "classf_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_CFILECLASS= NAME_PREFIX + "class_obj.gif"; //$NON-NLS-1$ @@ -376,14 +383,28 @@ public class PHPUiImages { 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); } /** @@ -406,8 +427,19 @@ public class PHPUiImages { 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 -------------------------------------- @@ -438,16 +470,32 @@ public class PHPUiImages { 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();