| /******************************************************************************* |
| * Copyright (c) 2006 University College London Software Systems Engineering |
| * 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: |
| * Bruno Wassermann - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.bpel.runtimes; |
| |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.jface.resource.ImageRegistry; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.ui.plugin.AbstractUIPlugin; |
| import org.osgi.framework.BundleContext; |
| |
| /** |
| * The main plugin class to be used in the desktop. |
| */ |
| public class RuntimesPlugin extends AbstractUIPlugin { |
| |
| public static final String PLUGIN_ID = "org.eclipse.bpel.runtimes"; //$NON-NLS-1$ |
| |
| //The shared instance. |
| private static RuntimesPlugin plugin; |
| |
| private boolean imagesInitialized = false; |
| |
| /** |
| * The constructor. |
| */ |
| public RuntimesPlugin() { |
| super(); |
| } |
| |
| /** |
| * This method is called upon plug-in activation |
| */ |
| @Override |
| public void start(BundleContext context) throws Exception { |
| super.start(context); |
| plugin = this; |
| } |
| |
| /** |
| * This method is called when the plug-in is stopped |
| */ |
| @Override |
| public void stop(BundleContext context) throws Exception { |
| super.stop(context); |
| plugin = null; |
| } |
| |
| /** |
| * Returns the shared instance. |
| * |
| * @return the shared instance. |
| */ |
| public static RuntimesPlugin getPlugin() { |
| return plugin; |
| } |
| |
| @Override |
| public ImageRegistry getImageRegistry() { |
| ImageRegistry result = super.getImageRegistry(); |
| initialize(); |
| return result; |
| } |
| |
| /** |
| * Returns the image descriptor for the given image ID. |
| * Returns null if there is no such image. |
| */ |
| public ImageDescriptor getImageDescriptor(String id) { |
| return getImageRegistry().getDescriptor(id); |
| } |
| |
| public Image getImage(String id) { |
| return getImageRegistry().get(id); |
| } |
| |
| /** |
| * Creates an image descriptor and places it in the image registry. |
| */ |
| private void createImageDescriptor(String id, URL baseURL) { |
| URL url = null; |
| try { |
| url = new URL(baseURL, IRuntimesUIConstants.ICON_PATH + id); |
| } catch (MalformedURLException e) { |
| RuntimesPlugin.log(e); |
| } |
| ImageDescriptor desc = ImageDescriptor.createFromURL(url); |
| getImageRegistry().put(id, desc); |
| } |
| |
| protected void initialize() { |
| if (!imagesInitialized) { |
| imagesInitialized = true; |
| initializeImages(); |
| } |
| } |
| |
| /** |
| * Initializes the table of images used in this plugin. |
| */ |
| private void initializeImages() { |
| URL baseURL = getBundle().getEntry("/"); //$NON-NLS-1$ |
| |
| // TODO make sure you initialize all required icons here |
| createImageDescriptor(IRuntimesUIConstants.ICON_NEWPRJ_WIZARD_BANNER, baseURL); |
| createImageDescriptor(IRuntimesUIConstants.ICON_BPEL_NEW_PRJ, baseURL); |
| createImageDescriptor(IRuntimesUIConstants.ICON_BPEL_PRJ, baseURL); |
| } |
| |
| /** |
| * Utility methods for logging exceptions. |
| */ |
| public static void log(Exception e, int severity) { |
| IStatus status = null; |
| if (e instanceof CoreException) { |
| status = ((CoreException)e).getStatus(); |
| } else { |
| String m = e.getMessage(); |
| status = new Status(severity, PLUGIN_ID, 0, m==null? "<no message>" : m, e); //$NON-NLS-1$ |
| } |
| System.out.println(e.getClass().getName()+": "+status); //$NON-NLS-1$ |
| RuntimesPlugin.getPlugin().getLog().log(status); |
| } |
| |
| public static void log(Exception e) { |
| log(e, IStatus.ERROR); |
| } |
| } |