From: Jan P. <jp...@us...> - 2007-01-02 14:32:33
|
Update of /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/perleditor In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv15927/src/org/epic/perleditor Modified Files: Tag: stable PerlEditorPlugin.java Added Files: Tag: stable PerlPluginImages.java Log Message: Fixed bug [ 1236592 ] Eclipse crash - SWTError: No more handles. --- NEW FILE: PerlPluginImages.java --- package org.epic.perleditor; import java.net.URL; import java.util.HashMap; import java.util.Iterator; import org.eclipse.core.runtime.*; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.graphics.Image; import org.osgi.framework.Bundle; /** * Bundle of most images used by the Perl plug-in. * * This class is adapted from org.eclipse.jdt.internal.ui.JavaPluginImages. */ public class PerlPluginImages { public static final IPath ICONS_PATH = new Path("$nl$/icons"); //$NON-NLS-1$ private static final String NAME_PREFIX = "org.epic.perleditor."; //$NON-NLS-1$ private static final int NAME_PREFIX_LENGTH = NAME_PREFIX.length(); private static ImageRegistry fgImageRegistry = null; private static HashMap fgAvoidSWTErrorMap = null; /* * Available cached Images in the Perl plug-in image registry. */ public static final String IMG_ICON_EDITOR = NAME_PREFIX + "epic.gif"; //$NON-NLS-1$ public static final String IMG_ICON_SUBROUTINE = NAME_PREFIX + "subroutine.gif"; //$NON-NLS-1$ public static final String IMG_ICON_SUBROUTINE_NODE = NAME_PREFIX + "subroutine_node.gif"; //$NON-NLS-1$ public static final String IMG_ICON_PACKAGE_NODE = NAME_PREFIX + "package_node.gif"; //$NON-NLS-1$ public static final String IMG_ICON_USE = NAME_PREFIX + "use.gif"; //$NON-NLS-1$ public static final String IMG_ICON_USE_NODE = NAME_PREFIX + "use_node.gif"; //$NON-NLS-1$ public static final String IMG_ICON_VARIABLE = NAME_PREFIX + "variable.gif"; //$NON-NLS-1$ public static final String IMG_ICON_CONSTRUCTOR = NAME_PREFIX + "constructor.gif"; //$NON-NLS-1$ public static final String IMG_ICON_SEARCH = NAME_PREFIX + "search.gif"; //$NON-NLS-1$ public static final String IMG_ICON_MARK_OCCURRENCES = NAME_PREFIX + "mark_occurrences.gif"; //$NON-NLS-1$ public static final String IMG_NEW_PROJECT_WIZARD = NAME_PREFIX + "new_wizard.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_ERROR = NAME_PREFIX + "error_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_WARNING = NAME_PREFIX + "warning_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_INFO = NAME_PREFIX + "info_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_TEMPLATE = NAME_PREFIX + "template_obj.gif"; //$NON-NLS-1$ static { createManaged("", IMG_ICON_EDITOR); createManaged("", IMG_ICON_SUBROUTINE); createManaged("", IMG_ICON_SUBROUTINE_NODE); createManaged("", IMG_ICON_PACKAGE_NODE); createManaged("", IMG_ICON_USE); createManaged("", IMG_ICON_USE_NODE); createManaged("", IMG_ICON_VARIABLE); createManaged("", IMG_ICON_CONSTRUCTOR); createManaged("", IMG_ICON_SEARCH); createManaged("", IMG_ICON_MARK_OCCURRENCES); createManaged("", IMG_NEW_PROJECT_WIZARD); createManaged("", IMG_OBJS_ERROR); createManaged("", IMG_OBJS_WARNING); createManaged("", IMG_OBJS_INFO); createManaged("", IMG_OBJS_TEMPLATE); } /** * 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 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); } /** * Helper method to access the image registry from the * PerlEditorPlugin class. */ 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; } private static ImageDescriptor createManaged(String prefix, String name) { return createManaged(prefix, name, name); } private static ImageDescriptor createManaged( String prefix, String name, String key) { ImageDescriptor result = create( prefix, name.substring(NAME_PREFIX_LENGTH), true); if (fgAvoidSWTErrorMap == null) fgAvoidSWTErrorMap = new HashMap(); fgAvoidSWTErrorMap.put(key, result); return result; } /** * Creates an image descriptor for the given prefix and name in the Perl * plug-in bundle. The path can contain variables like $NL$. If no image could be * found, <code>useMissingImageDescriptor</code> decides if either the * 'missing image descriptor' is returned or <code>null</code>. */ private static ImageDescriptor create( String prefix, String name, boolean useMissingImageDescriptor) { IPath path = ICONS_PATH.append(prefix).append(name); return createImageDescriptor( PerlEditorPlugin.getDefault().getBundle(), path, useMissingImageDescriptor); } /** * Creates an image descriptor for the given path in a bundle. The path can * contain variables like $NL$. If no image could be found, <code>useMissingImageDescriptor</code> * decides if either the 'missing image descriptor' is returned or <code>null</code>. */ private static ImageDescriptor createImageDescriptor( Bundle bundle, IPath path, boolean useMissingImageDescriptor) { URL url = Platform.find(bundle, path); if (url != null) return ImageDescriptor.createFromURL(url); else return useMissingImageDescriptor ? ImageDescriptor.getMissingImageDescriptor() : null; } } Index: PerlEditorPlugin.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/perleditor/PerlEditorPlugin.java,v retrieving revision 1.20.2.4 retrieving revision 1.20.2.5 diff -u -d -r1.20.2.4 -r1.20.2.5 --- PerlEditorPlugin.java 7 Nov 2006 18:35:20 -0000 1.20.2.4 +++ PerlEditorPlugin.java 2 Jan 2007 14:32:29 -0000 1.20.2.5 @@ -9,13 +9,13 @@ import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; +import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; import org.eclipse.team.core.IFileTypeInfo; import org.eclipse.team.core.Team; import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.editors.text.TextFileDocumentProvider; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.ui.texteditor.IDocumentProvider; import org.epic.core.util.PerlExecutor; @@ -321,6 +321,11 @@ return requirePerlCheckPassed; } + protected ImageRegistry createImageRegistry() + { + return PerlPluginImages.getImageRegistry(); + } + /** * Checks that a valid Perl interpreter is specified in Preferences * and updates the requirePerlCheckPassed flag. Displays an error dialog @@ -393,4 +398,4 @@ colorProvider.dispose(); super.stop(context); } -} \ No newline at end of file +} |