/******************************************************************************* * Copyright (c) 2009 EclipseSource Corporation and others. * 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: * EclipseSource Corporation - initial API and implementation *******************************************************************************/ /******************************************************************************* * Modified work Copyright 2013 Temenos Holdings N.V. * The example code for XText visualisation has been modified to visualise * the IRIS RIMDSL. ******************************************************************************/ package com.temenos.interaction.rimdsl.visualisation; /* * #%L * com.temenos.interaction.rimdsl.RimDsl - Visualisation * %% * Copyright (C) 2012 - 2013 Temenos Holdings N.V. * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ import java.net.URL; 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.graphics.Image; /** * Use this manager to instantiate an image. * It loads the corresponding resource from the plugin and * releasing its resources at the end of the lifecycle. * * @author Simon Gerlach */ public class VisualisationImageManager { /** * Use this method to get an image instance. * @param key The key the image is registered with in the registry * @return The image instance */ public static Image get(String key) { if (PLUGIN_REGISTRY == null) initialize(); return PLUGIN_REGISTRY.get(key); } /** * The path to the images */ private static final String PATH_OBJ = "icons/obj16/"; //$NON-NLS-1$ /** * The key of the image of resources */ public static final String IMG_RESOURCE = "resource32.png"; //$NON-NLS-1$ public static final ImageDescriptor DESC_ENTITY = create(PATH_OBJ, IMG_RESOURCE); /** * The key of the image representing incoming transitions */ public static final String IMG_SHOW_INCOMING_TRANSITIONS = "incoming_transitions.gif"; //$NON-NLS-1$ public static final ImageDescriptor DESC_INCOMING_TRANSITIONS = create(PATH_OBJ, IMG_SHOW_INCOMING_TRANSITIONS); /** * The key of the image representing outgoing transitions */ public static final String IMG_SHOW_OUTGOING_TRANSITIONS = "outgoing_transitions.gif"; //$NON-NLS-1$ public static final ImageDescriptor DESC_OUTGOING_TRANSITIONS = create(PATH_OBJ, IMG_SHOW_OUTGOING_TRANSITIONS); /** * The key of the view's icon */ public static final String IMG_RIM_VISUALIZATION_VIEW_ICON = "rim_visualization_view_icon.png"; //$NON-NLS-1$ public static final ImageDescriptor DESC_RIM_VISUALIZATION_VIEW_ICON = create(PATH_OBJ, IMG_RIM_VISUALIZATION_VIEW_ICON); /** * The image registry to use for managing the image's lifecycle */ private static ImageRegistry PLUGIN_REGISTRY; /** * Initializes the registry by registering all images. */ private static final void initialize() { PLUGIN_REGISTRY = Activator.getDefault().getImageRegistry(); manage(IMG_RESOURCE, DESC_ENTITY); manage(IMG_SHOW_INCOMING_TRANSITIONS, DESC_INCOMING_TRANSITIONS); manage(IMG_SHOW_OUTGOING_TRANSITIONS, DESC_OUTGOING_TRANSITIONS); manage(IMG_RIM_VISUALIZATION_VIEW_ICON, DESC_RIM_VISUALIZATION_VIEW_ICON); } /** * Utility method to get a language specific image descriptor for an image * @param prefix The prefix of the image URL, f.ex. the icons folder * @param name The name of the image * @return The image descriptor */ private static ImageDescriptor create(String prefix, String name) { return ImageDescriptor.createFromURL(makeIconURL(prefix, name)); } /** * If there should be different langauge version of the plugin this * creates a language dependet URL of the corresponding ressources * @param prefix The prefix of the image URL, f.ex. the icons folder * @param name The name of the image * @return The complete URL of the image */ private static URL makeIconURL(String prefix, String name) { String path = "$nl$/" + prefix + name; //$NON-NLS-1$ return FileLocator.find(Activator.getDefault().getBundle(), new Path(path), null); } /** * Loads an image and registers it in the registry * @param key The registry key to use * @param desc The image descriptor of the image to load and register * @return The image instance */ private static Image manage(String key, ImageDescriptor desc) { Image image = desc.createImage(); PLUGIN_REGISTRY.put(key, image); return image; } }