/*
* Copyright 2010 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.guvnor.tools;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle
*/
public class Activator extends AbstractUIPlugin {
// The plug-in ID
public static final String PLUGIN_ID = "org.drools.guvnor"; //$NON-NLS-1$
// The shared instance
private static Activator plugin;
private static GuvnorLocationManager locManager;
private ResourceChangeListener rcListner;
/**
* The constructor
*/
public Activator() {
rcListner = new ResourceChangeListener();
}
public static GuvnorLocationManager getLocationManager() {
if (locManager == null) {
locManager = new GuvnorLocationManager();
}
return locManager;
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
getWorkspace().addResourceChangeListener(rcListner);
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
plugin = null;
super.stop(context);
getWorkspace().removeResourceChangeListener(rcListner);
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static Activator getDefault() {
return plugin;
}
public IWorkspace getWorkspace() {
return ResourcesPlugin.getWorkspace();
}
private IStatus createStatus(int severity, String msg, Throwable t) {
return new Status(severity, PLUGIN_ID, msg, t);
}
public void writeLog(int severity, String msg, Throwable t) {
super.getLog().log(createStatus(severity, msg, t));
}
public void writeLog(IStatus status) {
super.getLog().log(status);
}
public void displayMessage(final int severity, final String msg) {
final Display display = PlatformUI.getWorkbench().getDisplay();
display.syncExec(new Runnable() {
public void run() {
switch (severity) {
case IStatus.ERROR:
MessageDialog.openError(display.getActiveShell(),
Messages.getString("error"), msg); //$NON-NLS-1$
break;
case IStatus.WARNING:
MessageDialog.openWarning(display.getActiveShell(),
Messages.getString("warning"), msg); //$NON-NLS-1$
break;
}
}
});
}
public void displayError(int severity, final String msg,
Throwable t, boolean shouldLog) {
final IStatus status = createStatus(severity, msg, t);
if (shouldLog) {
writeLog(status);
}
final Display display = PlatformUI.getWorkbench().getDisplay();
display.syncExec(new Runnable() {
public void run() {
ErrorDialog.openError(display.getActiveShell(),
null,
Messages.getString("error"), status); //$NON-NLS-1$
}
});
}
@Override
protected void initializeImageRegistry(ImageRegistry reg) {
super.initializeImageRegistry(reg);
reg.put(IMG_GUVCONTROLLED, loadImageDescriptor(IMG_GUVCONTROLLED));
reg.put(IMG_GUVLOCADD, loadImageDescriptor(IMG_GUVLOCADD));
reg.put(IMG_GUVCONTROLLED, loadImageDescriptor(IMG_GUVREPWIZBAN));
reg.put(IMG_GUVREP, loadImageDescriptor(IMG_GUVREP));
reg.put(IMG_GUVPACK, loadImageDescriptor(IMG_GUVPACK));
reg.put(IMG_GUVFOLDER, loadImageDescriptor(IMG_GUVFOLDER));
reg.put(IMG_GUVSNAPPACK, loadImageDescriptor(IMG_GUVSNAPPACK));
reg.put(IMG_GUVSNAPSHOT, loadImageDescriptor(IMG_GUVSNAPSHOT));
}
/**
* Returns an image descriptor for the image file at the given
* plug-in relative path
*
* @param path the path
* @return the image descriptor
*/
public static ImageDescriptor getImageDescriptor(String id) {
ImageDescriptor retVal = getDefault().getImageRegistry().getDescriptor(id);
if (retVal == null) {
retVal = loadImageDescriptor(id);
getDefault().getImageRegistry().put(id, retVal);
}
return retVal;
}
private static ImageDescriptor loadImageDescriptor(String id) {
String iconPath = "icons/"; //$NON-NLS-1$
try {
URL installURL = Activator.getDefault().getBundle().getEntry("/"); //$NON-NLS-1$
URL url = new URL(installURL, iconPath + id);
return ImageDescriptor.createFromURL(url);
} catch (MalformedURLException e) {
return ImageDescriptor.getMissingImageDescriptor();
}
}
public static final String IMG_GUVCONTROLLED = "guvnor_controlled.gif"; //$NON-NLS-1$
public static final String IMG_GUVLOCADD = "guvnor_rep_add.gif"; //$NON-NLS-1$
public static final String IMG_GUVREPWIZBAN = "guvnor_rep_wizban.gif"; //$NON-NLS-1$
public static final String IMG_GUVREP = "guvnor_rep.gif"; //$NON-NLS-1$
public static final String IMG_GUVPACK = "package.gif"; //$NON-NLS-1$
public static final String IMG_GUVFOLDER = "chart_organisation.gif"; //$NON-NLS-1$
public static final String IMG_GUVSNAPPACK = "snapshot_small.gif"; //$NON-NLS-1$
public static final String IMG_GUVSNAPSHOT = "details.gif"; //$NON-NLS-1$
public boolean useDebugHttpClient() {
return Boolean.parseBoolean(Platform.getDebugOption("org.guvnor.tools/debugHttpClient")); //$NON-NLS-1$
}
}