/** * Copyright (c) 2012 Cloudsmith Inc. and other contributors, as listed below. * 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: * Cloudsmith * */ package org.cloudsmith.geppetto.pp.dsl.ui.internal; import java.net.URL; import java.util.HashMap; import java.util.Map; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.eclipse.xtext.ui.editor.XtextEditor; /** * Helper for some of the icons. * */ public class PPPluginImages { private static ImageRegistry PLUGIN_REGISTRY; public final static String ICONS_PATH = "icons/"; //$NON-NLS-1$ /** * Set of predefined Image Descriptors. */ private static final String PATH_LCL = ICONS_PATH + "elcl16/"; //$NON-NLS-1$ private static final String PATH_LCL_DISABLED = ICONS_PATH + "dlcl16/"; //$NON-NLS-1$ /** * LCL */ public static final ImageDescriptor DESC_LINK_WITH_EDITOR = create(PATH_LCL, "synced.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_ALPHAB_SORT_CO = create(PATH_LCL, "alphab_sort_co.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_LINK_WITH_EDITOR_DISABLED = create(PATH_LCL_DISABLED, "synced.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_ALPHAB_SORT_CO_DISABLED = create(PATH_LCL_DISABLED, "alphab_sort_co.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_SEARCH_PREVIOUS = create(PATH_LCL, "prev_nav.gif"); public static final ImageDescriptor DESC_SEARCH_NEXT = create(PATH_LCL, "next_nav.gif"); public static final ImageDescriptor DESC_EXPAND_ALL = create(PATH_LCL, "expandall.gif"); public static final ImageDescriptor DESC_COLLAPSE_ALL = create(PATH_LCL, "collapseall.gif"); public static final ImageDescriptor DESC_OPEN_DECLARATION = create(PATH_LCL, "goto_input.gif"); public static final ImageDescriptor DESC_OPEN_DECLARATION_DISABLED = create(PATH_LCL_DISABLED, "goto_input.gif"); public static final ImageDescriptor DESC_MARK_OCCURRENCES = create(PATH_LCL, "mark_occurrences.gif"); public static final ImageDescriptor DESC_MARK_OCCURRENCES_DISABLED = create( PATH_LCL_DISABLED, "mark_occurrences.gif"); private static boolean imagesInitialized; private static final Map<String, Image> annotationImagesFixable = new HashMap<String, Image>(); private static final Map<String, Image> annotationImagesNonFixable = new HashMap<String, Image>(); private static final Map<String, Image> annotationImagesDeleted = new HashMap<String, Image>(); private static ImageDescriptor create(String prefix, String name) { return ImageDescriptor.createFromURL(makeImageURL(prefix, name)); } private static void ensureInitialized() { if(PLUGIN_REGISTRY == null) initialize(); } public static Image get(String key) { ensureInitialized(); return PLUGIN_REGISTRY.get(key); } public static Map<String, Image> getAnnotationImagesDeleted() { ensureInitialized(); return annotationImagesDeleted; } public static Map<String, Image> getAnnotationImagesFixable() { ensureInitialized(); return annotationImagesFixable; } public static Map<String, Image> getAnnotationImagesNonfixable() { ensureInitialized(); return annotationImagesNonFixable; } /* package */ private static final void initialize() { PLUGIN_REGISTRY = new ImageRegistry(); initializeImageMaps(); } private static final void initializeImageMaps() { if(imagesInitialized) return; ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages(); Image error = sharedImages.getImage(ISharedImages.IMG_OBJS_ERROR_TSK); Image warning = sharedImages.getImage(ISharedImages.IMG_OBJS_WARN_TSK); annotationImagesNonFixable.put(XtextEditor.ERROR_ANNOTATION_TYPE, error); annotationImagesNonFixable.put(XtextEditor.WARNING_ANNOTATION_TYPE, warning); Display display = Display.getCurrent(); annotationImagesDeleted.put(XtextEditor.ERROR_ANNOTATION_TYPE, new Image(display, error, SWT.IMAGE_GRAY)); annotationImagesDeleted.put(XtextEditor.WARNING_ANNOTATION_TYPE, new Image(display, warning, SWT.IMAGE_GRAY)); } private static URL makeImageURL(String prefix, String name) { String path = "$nl$/" + prefix + name; //$NON-NLS-1$ return FileLocator.find(PPDSLActivator.getInstance().getBundle(), new Path(path), null); } public static Image manage(String key, ImageDescriptor desc) { Image image = desc.createImage(); PLUGIN_REGISTRY.put(key, image); return image; } }