Java tutorial
/******************************************************************************* * Copyright (c) 2008 Scott Stanchfield, based on ANTLR-Eclipse plugin * by Torsten Juergeleit. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors * Torsten Juergeleit - original ANTLR Eclipse plugin * Scott Stanchfield - modifications for ANTXR *******************************************************************************/ package com.javadude.antxr.eclipse.ui; import java.net.MalformedURLException; import java.net.URL; import org.eclipse.jface.action.IAction; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; /** * Bundle of images used by ANTXR UI plugin. */ public class AntxrUIPluginImages { private static final String NAME_PREFIX = AntxrUIPlugin.PLUGIN_ID; private static final int NAME_PREFIX_LENGTH = AntxrUIPluginImages.NAME_PREFIX.length(); private static URL fgIconBaseURL = null; // Determine display depth. If depth > 4 then we use high color images. // Otherwise low color images are used static { // Don't consider the default display since accessing it throws an // SWTException anyway. Display display = Display.getCurrent(); String pathSuffix; if (display != null && display.getIconDepth() > 4) { pathSuffix = "icons/full/"; } else { pathSuffix = "icons/basic/"; } try { AntxrUIPluginImages.fgIconBaseURL = new URL(AntxrUIPlugin.getInstallURL(), pathSuffix); } catch (MalformedURLException e) { AntxrUIPlugin.log(e); } } // The plugin registry private static final ImageRegistry IMAGE_REGISTRY = new ImageRegistry(); // Available cached Images in the ANTXR UI plugin image registry. /** class */ public static final String IMG_OBJS_CLASS = AntxrUIPluginImages.NAME_PREFIX + "class_obj.gif"; /** public */ public static final String IMG_MISC_PUBLIC = AntxrUIPluginImages.NAME_PREFIX + "methpub_obj.gif"; /** protected */ public static final String IMG_MISC_PROTECTED = AntxrUIPluginImages.NAME_PREFIX + "methpro_obj.gif"; /** private */ public static final String IMG_MISC_PRIVATE = AntxrUIPluginImages.NAME_PREFIX + "methpri_obj.gif"; /** default */ public static final String IMG_MISC_DEFAULT = AntxrUIPluginImages.NAME_PREFIX + "methdef_obj.gif"; // Set of predefined Image Descriptors. private static final String T_OBJ = "obj16"; // private static final String T_CLCL = "clcl16"; private static final String T_CTOOL = "ctool16"; /** class */ public static final ImageDescriptor DESC_OBJS_CLASS = AntxrUIPluginImages .createManaged(AntxrUIPluginImages.T_OBJ, AntxrUIPluginImages.IMG_OBJS_CLASS); /** public */ public static final ImageDescriptor DESC_MISC_PUBLIC = AntxrUIPluginImages .createManaged(AntxrUIPluginImages.T_OBJ, AntxrUIPluginImages.IMG_MISC_PUBLIC); /** protected */ public static final ImageDescriptor DESC_MISC_PROTECTED = AntxrUIPluginImages .createManaged(AntxrUIPluginImages.T_OBJ, AntxrUIPluginImages.IMG_MISC_PROTECTED); /** private */ public static final ImageDescriptor DESC_MISC_PRIVATE = AntxrUIPluginImages .createManaged(AntxrUIPluginImages.T_OBJ, AntxrUIPluginImages.IMG_MISC_PRIVATE); /** default */ public static final ImageDescriptor DESC_MISC_DEFAULT = AntxrUIPluginImages .createManaged(AntxrUIPluginImages.T_OBJ, AntxrUIPluginImages.IMG_MISC_DEFAULT); /** show segments */ public static final ImageDescriptor DESC_TOOL_SHOW_SEGMENTS = AntxrUIPluginImages .create(AntxrUIPluginImages.T_CTOOL, "segment_edit.gif"); /** go to next error */ public static final ImageDescriptor DESC_TOOL_GOTO_NEXT_ERROR = AntxrUIPluginImages .create(AntxrUIPluginImages.T_CTOOL, "next_error_nav.gif"); //$NON-NLS-1$ /** go to previous error */ public static final ImageDescriptor DESC_TOOL_GOTO_PREV_ERROR = AntxrUIPluginImages .create(AntxrUIPluginImages.T_CTOOL, "prev_error_nav.gif"); //$NON-NLS-1$ /** * Returns the image managed under the given key in this registry. * * @param aKey the image's key * @return the image managed under the given key */ public static Image get(String aKey) { return AntxrUIPluginImages.IMAGE_REGISTRY.get(aKey); } /** * Sets the three image descriptors for enabled, disabled, and hovered to * an action. The actions are retrieved from the *tool16 folders. * @param anAction The action for the image * @param anIconName the icon name */ public static void setToolImageDescriptors(IAction anAction, String anIconName) { AntxrUIPluginImages.setImageDescriptors(anAction, "tool16", anIconName); } /** * Sets the three image descriptors for enabled, disabled, and hovered to * an action. The actions are retrieved from the *lcl16 folders. * @param anAction The action for the image * @param anIconName the icon name */ public static void setLocalImageDescriptors(IAction anAction, String anIconName) { AntxrUIPluginImages.setImageDescriptors(anAction, "lcl16", anIconName); } //---- Helper methods to access icons on the file system ----------------- private static void setImageDescriptors(IAction anAction, String aType, String aRelPath) { try { ImageDescriptor id = ImageDescriptor .createFromURL(AntxrUIPluginImages.makeIconFileURL("d" + aType, aRelPath)); if (id != null) { anAction.setDisabledImageDescriptor(id); } } catch (MalformedURLException e) { AntxrUIPlugin.log(e); } try { ImageDescriptor id = ImageDescriptor .createFromURL(AntxrUIPluginImages.makeIconFileURL("c" + aType, aRelPath)); if (id != null) { anAction.setHoverImageDescriptor(id); } } catch (MalformedURLException e) { AntxrUIPlugin.log(e); } anAction.setImageDescriptor(AntxrUIPluginImages.create("e" + aType, aRelPath)); } private static ImageDescriptor createManaged(String aPrefix, String aName) { ImageDescriptor result; try { result = ImageDescriptor.createFromURL(AntxrUIPluginImages.makeIconFileURL(aPrefix, aName.substring(AntxrUIPluginImages.NAME_PREFIX_LENGTH))); AntxrUIPluginImages.IMAGE_REGISTRY.put(aName, result); } catch (MalformedURLException e) { result = ImageDescriptor.getMissingImageDescriptor(); } return result; } private static ImageDescriptor create(String aPrefix, String aName) { ImageDescriptor result; try { result = ImageDescriptor.createFromURL(AntxrUIPluginImages.makeIconFileURL(aPrefix, aName)); } catch (MalformedURLException e) { result = ImageDescriptor.getMissingImageDescriptor(); } return result; } private static URL makeIconFileURL(String aPrefix, String aName) throws MalformedURLException { if (AntxrUIPluginImages.fgIconBaseURL == null) { throw new MalformedURLException(); } StringBuffer buffer = new StringBuffer(aPrefix); buffer.append('/'); buffer.append(aName); return new URL(AntxrUIPluginImages.fgIconBaseURL, buffer.toString()); } }