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();