Improve JCR and GIS
[lgpl/argeo-commons.git] / eclipse / runtime / org.argeo.eclipse.ui / src / main / java / org / argeo / eclipse / ui / ArgeoUiPlugin.java
index 1561282b67a4fc679293e7d948daef4f15a6eef2..73fef7812c5ef1fceb5849014a1494daf89eba5a 100644 (file)
 
 package org.argeo.eclipse.ui;
 
+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.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.Bundle;
@@ -24,13 +28,15 @@ import org.osgi.framework.BundleContext;
 /**
  * The activator class controls the plug-in life cycle
  */
-public class ArgeoUiPlugin extends AbstractUIPlugin {
+public class ArgeoUiPlugin extends AbstractUIPlugin implements ILogListener {
 
        // The plug-in ID
        public static final String PLUGIN_ID = "org.argeo.eclipse.ui";
 
        private final static String SPRING_OSGI_EXTENDER = "org.springframework.osgi.extender";
 
+       private final static Log log = LogFactory.getLog(ArgeoUiPlugin.class);
+
        // The shared instance
        private static ArgeoUiPlugin plugin;
 
@@ -54,12 +60,16 @@ public class ArgeoUiPlugin extends AbstractUIPlugin {
                plugin = this;
                bundleContext = context;
 
+               Platform.addLogListener(this);
+               log.debug("Eclipse logging now directed to standard logging");
+
                // Make sure that the Spring OSGi extender is started
                Bundle osgiExtBundle = Platform.getBundle(SPRING_OSGI_EXTENDER);
                if (osgiExtBundle != null)
                        osgiExtBundle.start();
                else
-                       throw new Exception("Spring OSGi Extender not found");
+                       log.error("Spring OSGi Extender not found");
+
        }
 
        /*
@@ -70,6 +80,9 @@ public class ArgeoUiPlugin extends AbstractUIPlugin {
         * )
         */
        public void stop(BundleContext context) throws Exception {
+               Platform.removeLogListener(this);
+               log.debug("Eclipse logging not directed anymore to standard logging");
+
                plugin = null;
                super.stop(context);
        }
@@ -87,4 +100,19 @@ public class ArgeoUiPlugin extends AbstractUIPlugin {
                return bundleContext;
        }
 
+       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());
+
+       }
+
 }