package org.freeplane.plugin.script;
import java.util.Hashtable;
import jsyntaxpane.DefaultSyntaxKit;
import jsyntaxpane.syntaxkits.GroovySyntaxKit;
import org.freeplane.features.mode.ModeController;
import org.freeplane.features.mode.mindmapmode.MModeController;
import org.freeplane.main.osgi.IModeControllerExtensionProvider;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(final BundleContext context) throws Exception {
final Hashtable<String, String[]> props = new Hashtable<String, String[]>();
props.put("mode", new String[] { MModeController.MODENAME });
context.registerService(IModeControllerExtensionProvider.class.getName(),
new IModeControllerExtensionProvider() {
public void installExtension(ModeController modeController) {
if(! modeController.getController().getViewController().isHeadless())
initJSyntaxPane(context);
new ScriptingRegistration(modeController);
}
}, props);
}
private void initJSyntaxPane(BundleContext context) {
final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(DefaultSyntaxKit.class.getClassLoader());
DefaultSyntaxKit.initKit();
final String components = "jsyntaxpane.components.PairsMarker" //
+ ", jsyntaxpane.components.LineNumbersRuler" //
+ ", jsyntaxpane.components.TokenMarker" //
+ ", org.freeplane.plugin.script.NodeIdHighLighter";
new GroovySyntaxKit().setProperty("Components", components);
}
finally {
Thread.currentThread().setContextClassLoader(contextClassLoader);
}
}
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(final BundleContext context) throws Exception {
}
}