]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - ide/plugins/org.argeo.slc.ide.ui/src/org/argeo/slc/ide/ui/SlcIdeUiPlugin.java
Refactor SLC IDE
[gpl/argeo-slc.git] / ide / plugins / org.argeo.slc.ide.ui / src / org / argeo / slc / ide / ui / SlcIdeUiPlugin.java
diff --git a/ide/plugins/org.argeo.slc.ide.ui/src/org/argeo/slc/ide/ui/SlcIdeUiPlugin.java b/ide/plugins/org.argeo.slc.ide.ui/src/org/argeo/slc/ide/ui/SlcIdeUiPlugin.java
new file mode 100644 (file)
index 0000000..3570a61
--- /dev/null
@@ -0,0 +1,122 @@
+package org.argeo.slc.ide.ui;\r
+\r
+import java.net.URL;\r
+\r
+import org.eclipse.core.resources.IResource;\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.debug.core.DebugEvent;\r
+import org.eclipse.debug.core.DebugPlugin;\r
+import org.eclipse.debug.core.IDebugEventSetListener;\r
+import org.eclipse.debug.core.ILaunch;\r
+import org.eclipse.debug.core.model.IProcess;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.jface.resource.ImageRegistry;\r
+import org.eclipse.pde.core.plugin.TargetPlatform;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.eclipse.ui.plugin.AbstractUIPlugin;\r
+import org.osgi.framework.BundleContext;\r
+\r
+/**\r
+ * The activator class controls the plug-in life cycle\r
+ */\r
+public class SlcIdeUiPlugin extends AbstractUIPlugin {\r
+\r
+       // The plug-in ID\r
+       public static final String ID = "org.argeo.slc.ide.ui";\r
+\r
+       // The shared instance\r
+       private static SlcIdeUiPlugin plugin;\r
+\r
+       /**\r
+        * The constructor\r
+        */\r
+       public SlcIdeUiPlugin() {\r
+       }\r
+\r
+       @Override\r
+       public void start(BundleContext context) throws Exception {\r
+               super.start(context);\r
+               plugin = this;\r
+               DebugPlugin.getDefault()\r
+                               .addDebugEventListener(new DebugEventListener());\r
+\r
+               String location = TargetPlatform.getLocation();\r
+               System.out.println(location);\r
+       }\r
+\r
+       @Override\r
+       public void stop(BundleContext context) throws Exception {\r
+               plugin = null;\r
+               super.stop(context);\r
+       }\r
+\r
+       /**\r
+        * Returns the shared instance\r
+        * \r
+        * @return the shared instance\r
+        */\r
+       public static SlcIdeUiPlugin getDefault() {\r
+               return plugin;\r
+       }\r
+\r
+       public Image getImage(String relativeURL) {\r
+               ImageRegistry imageRegistry = getImageRegistry();\r
+               Image image = imageRegistry.get(relativeURL);\r
+               if (image == null) {\r
+                       URL imageURL = getBundle().getEntry(relativeURL);\r
+                       ImageDescriptor descriptor = ImageDescriptor\r
+                                       .createFromURL(imageURL);\r
+                       image = descriptor.createImage();\r
+                       imageRegistry.put(relativeURL, image);\r
+               }\r
+               return image;\r
+       }\r
+\r
+       protected static class DebugEventListener implements IDebugEventSetListener {\r
+               public void handleDebugEvents(DebugEvent[] events) {\r
+                       if (events == null)\r
+                               return;\r
+\r
+                       for (int i = 0; i < events.length; i++) {\r
+                               DebugEvent event = events[i];\r
+                               if (event == null)\r
+                                       continue;\r
+                               Object source = event.getSource();\r
+                               if (source instanceof IProcess\r
+                                               && event.getKind() == DebugEvent.TERMINATE) {\r
+                                       IProcess process = (IProcess) source;\r
+//                                     if (process == null)\r
+//                                             continue;\r
+                                       ILaunch launch = process.getLaunch();\r
+                                       if (launch != null)\r
+                                               refreshOsgiBootLaunch(launch);\r
+                               }\r
+                       }\r
+               }\r
+\r
+               protected void refreshOsgiBootLaunch(ILaunch launch) {\r
+                       try {\r
+                               if (launch == null)\r
+                                       return;\r
+                               IResource[] resources = launch.getLaunchConfiguration()\r
+                                               .getMappedResources();\r
+                               if (resources == null)\r
+                                       return;\r
+                               if (resources.length > 0) {\r
+                                       IResource propertiesFile = resources[0];\r
+                                       if (propertiesFile.getParent() == null)\r
+                                               return;\r
+                                       propertiesFile.getParent().refreshLocal(\r
+                                                       IResource.DEPTH_INFINITE, null);\r
+                                       // System.out.println("Refreshed "\r
+                                       // + propertiesFile.getParent());\r
+                               }\r
+                       } catch (CoreException e) {\r
+                               e.printStackTrace();\r
+                       }\r
+\r
+               }\r
+\r
+       }\r
+\r
+}\r