X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.eclipse.ui.workbench%2Fsrc%2Forg%2Fargeo%2Feclipse%2Fui%2Fworkbench%2FWorkbenchUiPlugin.java;h=4898e80d73f6a9df2d1c44f0e5062a7cce4db1d0;hb=7f945886dbd3cd0cf5b0e06b481b78ba1e2c9db9;hp=48ed86142fab608a6ae066a46e16b2eae0c1040a;hpb=ebc46b310bf1f44c4acbeae3d2ab8c1aeaef5eb5;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/WorkbenchUiPlugin.java b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/WorkbenchUiPlugin.java index 48ed86142..4898e80d7 100644 --- a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/WorkbenchUiPlugin.java +++ b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/WorkbenchUiPlugin.java @@ -19,6 +19,9 @@ import java.util.ResourceBundle; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.eclipse.core.runtime.ILogListener; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Platform; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; @@ -26,7 +29,7 @@ import org.osgi.framework.BundleContext; /** * The activator class controls the plug-in life cycle */ -public class WorkbenchUiPlugin extends AbstractUIPlugin { +public class WorkbenchUiPlugin extends AbstractUIPlugin implements ILogListener { private final static Log log = LogFactory.getLog(WorkbenchUiPlugin.class); private ResourceBundle messages; @@ -51,9 +54,15 @@ public class WorkbenchUiPlugin extends AbstractUIPlugin { */ public void start(BundleContext context) throws Exception { super.start(context); - plugin = this; - messages = ResourceBundle.getBundle(ID + ".messages"); - + // weirdly, the start method is called twice... + // TODO check if it is still the case. + if (plugin == null) { + plugin = this; + messages = ResourceBundle.getBundle(ID + ".messages"); + Platform.addLogListener(this); + log.debug("Eclipse logging now directed to standard logging"); + } else + log.warn("Trying to start an already started plugin."); } /* @@ -64,8 +73,18 @@ public class WorkbenchUiPlugin extends AbstractUIPlugin { * ) */ public void stop(BundleContext context) throws Exception { - plugin = null; - super.stop(context); + try { + // weirdly, the stop method is called twice... + // TODO check if it is still the case. + if (plugin != null) { + Platform.removeLogListener(this); + log.debug("Eclipse logging not directed anymore to standard logging"); + plugin = null; + } else + log.warn("Trying to stop an already stopped plugin."); + } finally { + super.stop(context); + } } /** @@ -103,4 +122,19 @@ public class WorkbenchUiPlugin extends AbstractUIPlugin { return null; } + public void logging(IStatus status, String plugin) { + Log pluginLog = LogFactory.getLog(plugin); + Integer severity = status.getSeverity(); + if (severity == IStatus.ERROR) + pluginLog.error(status.getMessage(), status.getException()); + else if (severity == IStatus.WARNING) + pluginLog.warn(status.getMessage(), status.getException()); + else if (severity == IStatus.INFO) + pluginLog.info(status.getMessage(), status.getException()); + else if (severity == IStatus.CANCEL) + if (pluginLog.isDebugEnabled()) + pluginLog.debug(status.getMessage(), status.getException()); + + } + }