blob: b68ea47cb629face9ba5193e49745efe2e10d949 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2012 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);
}
}