--- /dev/null
+package org.simantics.help.core;\r
+\r
+import java.net.URL;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.nio.file.StandardCopyOption;\r
+\r
+import org.eclipse.core.runtime.IPath;\r
+import org.eclipse.core.runtime.Platform;\r
+import org.eclipse.ui.plugin.AbstractUIPlugin;\r
+import org.osgi.framework.Bundle;\r
+import org.osgi.framework.BundleContext;\r
+\r
+/**\r
+ * The activator class controls the plug-in life cycle\r
+ */\r
+public class Activator extends AbstractUIPlugin {\r
+\r
+ // The plug-in ID\r
+ public static final String PLUGIN_ID = "org.simantics.help.core"; //$NON-NLS-1$\r
+\r
+ public static final String HTML_FOLDER = "html";\r
+ \r
+ // The shared instance\r
+ private static Activator plugin;\r
+ private static Path directory;\r
+ \r
+ /**\r
+ * The constructor\r
+ */\r
+ public Activator() {\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)\r
+ */\r
+ public void start(BundleContext context) throws Exception {\r
+ super.start(context);\r
+ plugin = this;\r
+ Bundle bundle = context.getBundle();\r
+ IPath path = Platform.getStateLocation(bundle);\r
+ Path p = Paths.get(path.toOSString());\r
+ directory = p.resolve(HTML_FOLDER);\r
+ if (!Files.exists(directory))\r
+ Files.createDirectories(directory);\r
+ \r
+ // Ensure that style.css is inside the html directory\r
+ Path css = directory.resolve("style.css");\r
+ if (!Files.exists(css)) {\r
+ Files.createFile(css);\r
+ URL url = bundle.getEntry("css/style.css");\r
+ Files.copy(url.openStream(), css, StandardCopyOption.REPLACE_EXISTING);\r
+ }\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)\r
+ */\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 Activator getDefault() {\r
+ return plugin;\r
+ }\r
+ \r
+ public static Path getHtmlDirectory() {\r
+ return directory;\r
+ }\r
+\r
+}\r