| /******************************************************************************* |
| * Copyright (c) 2003, 2015 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * IBM Corporation - Initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.server.ui.internal; |
| |
| import java.net.URL; |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.core.runtime.IConfigurationElement; |
| import org.eclipse.core.runtime.IExtensionDelta; |
| import org.eclipse.core.runtime.IExtensionRegistry; |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.jface.resource.ImageRegistry; |
| |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.ui.PlatformUI; |
| import org.eclipse.ui.plugin.AbstractUIPlugin; |
| import org.eclipse.wst.server.core.ServerUtil; |
| /** |
| * Utility class to handle image resources. |
| */ |
| public class ImageResource { |
| // the image registry |
| private static ImageRegistry imageRegistry; |
| |
| // map of image descriptors since these |
| // will be lost by the image registry |
| private static Map<String, ImageDescriptor> imageDescriptors; |
| |
| // base urls for images |
| private static URL ICON_BASE_URL; |
| |
| static { |
| try { |
| String pathSuffix = "icons/"; |
| ICON_BASE_URL = ServerUIPlugin.getInstance().getBundle().getEntry(pathSuffix); |
| } catch (Exception e) { |
| if(Trace.SEVERE) { |
| Trace.trace(Trace.STRING_SEVERE, "Could not set icon base URL", e); |
| } |
| } |
| } |
| |
| private static final String URL_CLCL = "clcl16/"; |
| private static final String URL_CTOOL = "ctool16/"; |
| |
| private static final String URL_ELCL = "elcl16/"; |
| private static final String URL_ETOOL = "etool16/"; |
| |
| private static final String URL_DLCL = "dlcl16/"; |
| private static final String URL_DTOOL = "dtool16/"; |
| |
| private static final String URL_OBJ = "obj16/"; |
| |
| private static final String URL_OVR = "ovr16/"; |
| |
| private static final String URL_WIZBAN = "wizban/"; |
| |
| // --- constants for images --- |
| |
| // Server State Images |
| public static final String IMG_CLCL_START = "IMG_CLCL_START"; |
| public static final String IMG_CLCL_START_DEBUG = "IMG_CLCL_START_DEBUG"; |
| public static final String IMG_CLCL_START_PROFILE = "IMG_CLCL_START_PROFILE"; |
| public static final String IMG_CLCL_STOP = "IMG_CLCL_STOP"; |
| public static final String IMG_CLCL_PUBLISH = "IMG_CLCL_PUBLISH"; |
| public static final String IMG_CLCL_DISCONNECT = "IMG_CLCL_DISCONNECT"; |
| public static final String IMG_CLCL_RESTART = "IMG_CLCL_RESTART"; |
| |
| public static final String IMG_ELCL_START = "IMG_ELCL_START"; |
| public static final String IMG_ELCL_START_DEBUG = "IMG_ELCL_START_DEBUG"; |
| public static final String IMG_ELCL_START_PROFILE = "IMG_ELCL_START_PROFILE"; |
| public static final String IMG_ELCL_STOP = "IMG_ELCL_STOP"; |
| public static final String IMG_ELCL_PUBLISH = "IMG_ELCL_PUBLISH"; |
| public static final String IMG_ELCL_DISCONNECT = "IMG_ELCL_DISCONNECT"; |
| public static final String IMG_ELCL_RESTART= "IMG_ELCL_RESTART"; |
| |
| public static final String IMG_DLCL_START = "IMG_DLCL_START"; |
| public static final String IMG_DLCL_START_DEBUG = "IMG_DLCL_START_DEBUG"; |
| public static final String IMG_DLCL_START_PROFILE = "IMG_DLCL_START_PROFILE"; |
| public static final String IMG_DLCL_STOP = "IMG_DLCL_STOP"; |
| public static final String IMG_DLCL_PUBLISH = "IMG_DLCL_PUBLISH"; |
| public static final String IMG_DLCL_DISCONNECT = "IMG_DLCL_DISCONNECT"; |
| public static final String IMG_DLCL_RESTART = "IMG_DLCL_RESTART"; |
| |
| // Wizard Banner Images |
| public static final String IMG_WIZBAN_NEW_RUNTIME = "newServerWiz"; |
| public static final String IMG_WIZBAN_NEW_SERVER = "newServerWiz"; |
| public static final String IMG_WIZBAN_SELECT_SERVER_CLIENT = "wizClient"; |
| public static final String IMG_WIZBAN_SELECT_SERVER = "selectServer"; |
| public static final String IMG_WIZBAN_IMPORT_SERVER_CONFIGURATION = "importConfigWiz"; |
| |
| public static final String IMG_SERVER_STATE_STARTED = "stateStarted"; |
| public static final String IMG_SERVER_STATE_STARTED_DEBUG = "stateStartedDebug"; |
| public static final String IMG_SERVER_STATE_STARTED_PROFILE = "stateStartedProfile"; |
| public static final String IMG_SERVER_STATE_STOPPED = "stateStopped"; |
| |
| public static final String IMG_STATE_STARTED = "stateStarted2"; |
| public static final String IMG_STATE_STOPPED = "stateStopped2"; |
| |
| public static final String IMG_SERVER_STATE_STARTING_1 = "stateStarting1"; |
| public static final String IMG_SERVER_STATE_STARTING_2 = "stateStarting2"; |
| public static final String IMG_SERVER_STATE_STARTING_3 = "stateStarting3"; |
| |
| public static final String IMG_SERVER_STATE_STOPPING_1 = "stateStopping1"; |
| public static final String IMG_SERVER_STATE_STOPPING_2 = "stateStopping2"; |
| public static final String IMG_SERVER_STATE_STOPPING_3 = "stateStopping3"; |
| |
| public static final String IMG_SERVER_STATE_STARTED_OVERLAY = "stateStartedOverlay"; |
| public static final String IMG_SERVER_STATE_STARTED_DEBUG_OVERLAY = "stateStartedDebugOverlay"; |
| public static final String IMG_SERVER_STATE_STARTED_PROFILE_OVERLAY = "stateStartedProfileOverlay"; |
| public static final String IMG_SERVER_STATE_STOPPED_OVERLAY = "stateStoppedOverlay"; |
| |
| public static final String IMG_SERVER_STATE_STARTING_1_OVERLAY = "stateStartingOverlay1"; |
| public static final String IMG_SERVER_STATE_STARTING_2_OVERLAY = "stateStartingOverlay2"; |
| public static final String IMG_SERVER_STATE_STARTING_3_OVERLAY = "stateStartingOverlay3"; |
| |
| public static final String IMG_SERVER_STATE_STOPPING_1_OVERLAY = "stateStoppingOverlay1"; |
| public static final String IMG_SERVER_STATE_STOPPING_2_OVERLAY = "stateStoppingOverlay2"; |
| public static final String IMG_SERVER_STATE_STOPPING_3_OVERLAY = "stateStoppingOverlay3"; |
| |
| |
| // Server Client Images |
| public static final String IMG_CTOOL_RUN_ON_SERVER = "IMG_CTOOL_CLIENT"; |
| public static final String IMG_CTOOL_DEBUG_ON_SERVER = "IMG_CTOOL_CLIENT2"; |
| public static final String IMG_CTOOL_PROFILE_ON_SERVER = "IMG_CTOOL_CLIENT3"; |
| public static final String IMG_CTOOL_NEW_SERVER = "IMG_CTOOL_NEW_SERVER"; |
| public static final String IMG_CTOOL_NEW_SERVER_INSTANCE = "IMG_CTOOL_NEW_SERVER_INSTANCE"; |
| public static final String IMG_CTOOL_MODIFY_MODULES = "IMG_CTOOL_MODIFY_MODULES"; |
| |
| public static final String IMG_ETOOL_RUN_ON_SERVER = "IMG_ETOOL_CLIENT"; |
| public static final String IMG_ETOOL_DEBUG_ON_SERVER = "IMG_ETOOL_CLIENT2"; |
| public static final String IMG_ETOOL_PROFILE_ON_SERVER = "IMG_ETOOL_CLIENT3"; |
| public static final String IMG_ETOOL_MODIFY_MODULES = "IMG_ETOOL_MODIFY_MODULES"; |
| public static final String IMG_ETOOL_RESET_DEFAULT = "IMG_ETOOL_RESET_DEFAULT"; |
| |
| public static final String IMG_DTOOL_RUN_ON_SERVER = "IMG_DTOOL_CLIENT"; |
| public static final String IMG_DTOOL_DEBUG_ON_SERVER = "IMG_DTOOL_CLIENT2"; |
| public static final String IMG_DTOOL_PROFILE_ON_SERVER = "IMG_DTOOL_CLIENT3"; |
| public static final String IMG_DTOOL_MODIFY_MODULES = "IMG_DTOOL_MODIFY_MODULES"; |
| public static final String IMG_DTOOL_RESET_DEFAULT = "IMG_DTOOL_RESET_DEFAULT"; |
| |
| // General Object Images |
| public static final String IMG_SERVER = "server"; |
| public static final String IMG_SERVER_CONFIGURATION_NONE = "noConfiguration"; |
| public static final String IMG_SERVER_CONFIGURATION_MISSING = "configurationMissing"; |
| public static final String IMG_PROJECT_MISSING = "projectMissing"; |
| public static final String IMG_REPAIR_CONFIGURATION = "repairConfiguration"; |
| |
| public static final String IMG_PUBLISH_ENABLED = "publishEnabled"; |
| public static final String IMG_PUBLISH_DISABLED = "publishDisabled"; |
| |
| public static final String IMG_MONITOR_ON = "monitorOn"; |
| public static final String IMG_MONITOR_OFF = "monitorOff"; |
| |
| public static final String IMG_DEFAULT_SERVER_OVERLAY = "defaultServerOverlay"; |
| |
| // Audio images |
| public static final String IMG_AUDIO_SOUND = "sound"; |
| public static final String IMG_AUDIO_CATEGORY = "category"; |
| |
| public static final String IMG_DOWN_ARROW = "IMG_DOWN_ARROW"; |
| |
| |
| /** |
| * Cannot construct an ImageResource. Use static methods only. |
| */ |
| private ImageResource() { |
| // do nothing |
| } |
| |
| /** |
| * Dispose of element images that were created. |
| */ |
| protected static void dispose() { |
| // do nothing |
| } |
| |
| /** |
| * Return the image with the given key. |
| * |
| * @param key java.lang.String |
| * @return org.eclipse.swt.graphics.Image |
| */ |
| public static Image getImage(String key) { |
| if (imageRegistry == null) |
| initializeImageRegistry(); |
| Image image = imageRegistry.get(key); |
| if (image == null) { |
| imageRegistry.put(key, ImageDescriptor.getMissingImageDescriptor()); |
| image = imageRegistry.get(key); |
| } |
| return image; |
| } |
| |
| /** |
| * Return the image descriptor with the given key. |
| * |
| * @param key java.lang.String |
| * @return org.eclipse.jface.resource.ImageDescriptor |
| */ |
| public static ImageDescriptor getImageDescriptor(String key) { |
| if (imageRegistry == null) |
| initializeImageRegistry(); |
| ImageDescriptor id = imageDescriptors.get(key); |
| if (id != null) |
| return id; |
| |
| return ImageDescriptor.getMissingImageDescriptor(); |
| } |
| |
| /** |
| * Initialize the image resources. |
| */ |
| protected static void initializeImageRegistry() { |
| imageRegistry = new ImageRegistry(); |
| imageDescriptors = new HashMap<String, ImageDescriptor>(); |
| |
| // wizard banners |
| registerImage(IMG_WIZBAN_NEW_SERVER, URL_WIZBAN + "new_server_wiz.png"); |
| registerImage(IMG_WIZBAN_IMPORT_SERVER_CONFIGURATION, URL_WIZBAN + "import_configuration_wiz.png"); |
| registerImage(IMG_WIZBAN_SELECT_SERVER_CLIENT, URL_WIZBAN + "select_client_wiz.png"); |
| registerImage(IMG_WIZBAN_SELECT_SERVER, URL_WIZBAN + "select_server_wiz.png"); |
| |
| // client images |
| registerImage(IMG_ETOOL_RUN_ON_SERVER, URL_ETOOL + "run_on_server.gif"); |
| registerImage(IMG_ETOOL_DEBUG_ON_SERVER, URL_ETOOL + "debug_on_server.gif"); |
| registerImage(IMG_ETOOL_PROFILE_ON_SERVER, URL_ETOOL + "profile_on_server.gif"); |
| registerImage(IMG_ETOOL_MODIFY_MODULES, URL_ETOOL + "wiz_modify_modules.gif"); |
| registerImage(IMG_ETOOL_RESET_DEFAULT, URL_ETOOL + "clear.gif"); |
| |
| registerImage(IMG_CTOOL_RUN_ON_SERVER, URL_CTOOL + "run_on_server.gif"); |
| registerImage(IMG_CTOOL_DEBUG_ON_SERVER, URL_CTOOL + "debug_on_server.gif"); |
| registerImage(IMG_CTOOL_PROFILE_ON_SERVER, URL_CTOOL + "profile_on_server.gif"); |
| registerImage(IMG_CTOOL_NEW_SERVER, URL_CTOOL + "wiz_new_server.gif"); |
| registerImage(IMG_CTOOL_NEW_SERVER_INSTANCE, URL_CTOOL + "wiz_new_instance.gif"); |
| registerImage(IMG_CTOOL_MODIFY_MODULES, URL_CTOOL + "wiz_modify_modules.gif"); |
| |
| registerImage(IMG_DTOOL_RUN_ON_SERVER, URL_DTOOL + "run_on_server.gif"); |
| registerImage(IMG_DTOOL_DEBUG_ON_SERVER, URL_DTOOL + "debug_on_server.gif"); |
| registerImage(IMG_DTOOL_PROFILE_ON_SERVER, URL_DTOOL + "profile_on_server.gif"); |
| registerImage(IMG_DTOOL_MODIFY_MODULES, URL_DTOOL + "wiz_modify_modules.gif"); |
| registerImage(IMG_DTOOL_RESET_DEFAULT, URL_DTOOL + "clear.gif"); |
| |
| // load server state images no overlay, still used in the Run On Server |
| registerImage(IMG_SERVER_STATE_STARTED, URL_OBJ + "server_started.gif"); |
| registerImage(IMG_SERVER_STATE_STARTED_DEBUG, URL_OBJ + "server_started_debug.gif"); |
| registerImage(IMG_SERVER_STATE_STARTED_PROFILE, URL_OBJ + "server_started_profile.gif"); |
| registerImage(IMG_SERVER_STATE_STOPPED, URL_OBJ + "server_stopped.gif"); |
| |
| registerImage(IMG_STATE_STARTED, URL_OBJ + "state_started.gif"); |
| registerImage(IMG_STATE_STOPPED, URL_OBJ + "state_stopped.gif"); |
| |
| registerImage(IMG_SERVER_STATE_STARTING_1, URL_OBJ + "server_starting1.gif"); |
| registerImage(IMG_SERVER_STATE_STARTING_2, URL_OBJ + "server_starting2.gif"); |
| registerImage(IMG_SERVER_STATE_STARTING_3, URL_OBJ + "server_starting3.gif"); |
| |
| registerImage(IMG_SERVER_STATE_STOPPING_1, URL_OBJ + "server_stopping1.gif"); |
| registerImage(IMG_SERVER_STATE_STOPPING_2, URL_OBJ + "server_stopping2.gif"); |
| registerImage(IMG_SERVER_STATE_STOPPING_3, URL_OBJ + "server_stopping3.gif"); |
| |
| // load server state images overlay |
| registerImage(IMG_SERVER_STATE_STARTED_OVERLAY, URL_OVR + "server_started_ovr.gif"); |
| registerImage(IMG_SERVER_STATE_STARTED_DEBUG_OVERLAY, URL_OVR + "server_started_debug_ovr.gif"); |
| registerImage(IMG_SERVER_STATE_STARTED_PROFILE_OVERLAY, URL_OVR + "server_started_profile_ovr.gif"); |
| registerImage(IMG_SERVER_STATE_STOPPED_OVERLAY, URL_OVR + "server_stopped_ovr.gif"); |
| |
| registerImage(IMG_SERVER_STATE_STARTING_1_OVERLAY, URL_OVR + "server_starting1_ovr.gif"); |
| registerImage(IMG_SERVER_STATE_STARTING_2_OVERLAY, URL_OVR + "server_starting2_ovr.gif"); |
| registerImage(IMG_SERVER_STATE_STARTING_3_OVERLAY, URL_OVR + "server_starting3_ovr.gif"); |
| |
| registerImage(IMG_SERVER_STATE_STOPPING_1_OVERLAY, URL_OVR + "server_stopping1_ovr.gif"); |
| registerImage(IMG_SERVER_STATE_STOPPING_2_OVERLAY, URL_OVR + "server_stopping2_ovr.gif"); |
| registerImage(IMG_SERVER_STATE_STOPPING_3_OVERLAY, URL_OVR + "server_stopping3_ovr.gif"); |
| |
| // load action images |
| registerImage(IMG_ELCL_PUBLISH, URL_ELCL + "launch_publish.gif"); |
| registerImage(IMG_ELCL_START, URL_ELCL + "launch_run.gif"); |
| registerImage(IMG_ELCL_START_DEBUG, URL_ELCL + "launch_debug.gif"); |
| registerImage(IMG_ELCL_START_PROFILE, URL_ELCL + "launch_profile.gif"); |
| registerImage(IMG_ELCL_STOP, URL_ELCL + "launch_stop.gif"); |
| registerImage(IMG_ELCL_DISCONNECT, URL_ELCL + "launch_disconnect.gif"); |
| registerImage(IMG_ELCL_RESTART, URL_ELCL + "launch_restart.gif"); |
| |
| registerImage(IMG_CLCL_PUBLISH, URL_CLCL + "launch_publish.gif"); |
| registerImage(IMG_CLCL_START, URL_CLCL + "launch_run.gif"); |
| registerImage(IMG_CLCL_START_DEBUG, URL_CLCL + "launch_debug.gif"); |
| registerImage(IMG_CLCL_START_PROFILE, URL_CLCL + "launch_profile.gif"); |
| registerImage(IMG_CLCL_STOP, URL_CLCL + "launch_stop.gif"); |
| registerImage(IMG_CLCL_DISCONNECT, URL_CLCL + "launch_disconnect.gif"); |
| registerImage(IMG_CLCL_RESTART, URL_CLCL + "launch_restart.gif"); |
| |
| registerImage(IMG_DLCL_PUBLISH, URL_DLCL + "launch_publish.gif"); |
| registerImage(IMG_DLCL_START, URL_DLCL + "launch_run.gif"); |
| registerImage(IMG_DLCL_START_DEBUG, URL_DLCL + "launch_debug.gif"); |
| registerImage(IMG_DLCL_START_PROFILE, URL_DLCL + "launch_profile.gif"); |
| registerImage(IMG_DLCL_STOP, URL_DLCL + "launch_stop.gif"); |
| registerImage(IMG_DLCL_DISCONNECT, URL_DLCL + "launch_disconnect.gif"); |
| registerImage(IMG_DLCL_RESTART, URL_DLCL + "launch_restart.gif"); |
| |
| // load general object images |
| registerImage(IMG_SERVER, URL_OBJ + "server.gif"); |
| registerImage(IMG_SERVER_CONFIGURATION_NONE, URL_OBJ + "configuration_none.gif"); |
| registerImage(IMG_SERVER_CONFIGURATION_MISSING, URL_OBJ + "configuration_missing.gif"); |
| registerImage(IMG_PROJECT_MISSING, URL_OBJ + "project_missing.gif"); |
| registerImage(IMG_REPAIR_CONFIGURATION, URL_OBJ + "repair_config.gif"); |
| |
| registerImage(IMG_PUBLISH_ENABLED, URL_OBJ + "publish_enabled.gif"); |
| registerImage(IMG_PUBLISH_DISABLED, URL_OBJ + "publish_disabled.gif"); |
| |
| registerImage(IMG_MONITOR_ON, URL_OBJ + "monitorOn.gif"); |
| registerImage(IMG_MONITOR_OFF, URL_OBJ + "monitorOff.gif"); |
| |
| registerImage(IMG_DEFAULT_SERVER_OVERLAY, URL_OVR + "default_server_ovr.gif"); |
| |
| // audio images |
| registerImage(IMG_AUDIO_SOUND, URL_OBJ + "audio_sound.gif"); |
| registerImage(IMG_AUDIO_CATEGORY, URL_OBJ + "audio_category.gif"); |
| |
| registerImage(IMG_DOWN_ARROW, URL_OBJ + "down_arrow.gif"); |
| |
| loadServerImages(); |
| |
| PlatformUI.getWorkbench().getProgressService().registerIconForFamily( |
| getImageDescriptor(IMG_SERVER), ServerUtil.SERVER_JOB_FAMILY); |
| } |
| |
| /** |
| * Register an image with the registry. |
| * |
| * @param key java.lang.String |
| * @param partialURL java.lang.String |
| */ |
| private static void registerImage(String key, String partialURL) { |
| try { |
| ImageDescriptor id = ImageDescriptor.createFromURL(new URL(ICON_BASE_URL, partialURL)); |
| imageRegistry.put(key, id); |
| imageDescriptors.put(key, id); |
| } catch (Exception e) { |
| if (Trace.SEVERE) { |
| Trace.trace(Trace.STRING_SEVERE, "Error registering image " + key + " from " + partialURL, e); |
| } |
| } |
| } |
| |
| /** |
| * Load the server images. |
| */ |
| private static void loadServerImages() { |
| if (Trace.CONFIG) { |
| Trace.trace(Trace.STRING_CONFIG, "->- Loading .serverImages extension point ->-"); |
| } |
| IExtensionRegistry registry = Platform.getExtensionRegistry(); |
| loadServerImages(registry.getConfigurationElementsFor(ServerUIPlugin.PLUGIN_ID, ServerUIPlugin.EXTENSION_SERVER_IMAGES)); |
| ServerUIPlugin.addRegistryListener(); |
| if (Trace.CONFIG) { |
| Trace.trace(Trace.STRING_CONFIG, "-<- Done loading .serverImages extension point -<-"); |
| } |
| } |
| |
| /** |
| * Load the server images. |
| */ |
| private static void loadServerImages(IConfigurationElement[] cf) { |
| int size = cf.length; |
| for (int i = 0; i < size; i++) { |
| try { |
| String name = cf[i].getDeclaringExtension().getContributor().getName(); |
| String iconPath = cf[i].getAttribute("icon"); |
| ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(name, iconPath); |
| if (imageDescriptor == null && iconPath != null && iconPath.length() > 0) |
| imageDescriptor = ImageDescriptor.getMissingImageDescriptor(); |
| |
| if (imageDescriptor != null) { |
| String[] typeIds = ServerUIPlugin.tokenize(cf[i].getAttribute("typeIds"), ","); |
| int size2 = typeIds.length; |
| for (int j = 0; j < size2; j++) { |
| imageRegistry.put(typeIds[j], imageDescriptor); |
| imageDescriptors.put(typeIds[j], imageDescriptor); |
| } |
| } |
| if (Trace.CONFIG) { |
| Trace.trace(Trace.STRING_CONFIG, " Loaded serverImage: " + cf[i].getAttribute("id")); |
| } |
| } catch (Throwable t) { |
| if (Trace.SEVERE) { |
| Trace.trace(Trace.STRING_SEVERE, " Could not load serverImage: " + cf[i].getAttribute("id"), t); |
| } |
| } |
| } |
| } |
| |
| protected static void handleServerImageDelta(IExtensionDelta delta) { |
| if (imageRegistry == null) // not loaded yet |
| return; |
| |
| IConfigurationElement[] cf = delta.getExtension().getConfigurationElements(); |
| |
| if (delta.getKind() == IExtensionDelta.ADDED) |
| loadServerImages(cf); |
| else { |
| int size = cf.length; |
| for (int i = 0; i < size; i++) { |
| String typeId = cf[i].getAttribute("typeIds"); |
| imageRegistry.remove(typeId); |
| imageDescriptors.remove(typeId); |
| } |
| } |
| } |
| } |