/** * author: Marcel Genzmehr * 20.10.2011 */ package org.freeplane.plugin.workspace; import java.util.Collection; import java.util.Hashtable; import org.freeplane.features.mode.ModeController; import org.freeplane.main.osgi.IControllerExtensionProvider; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; /** * */ public abstract class WorkspaceDependentService implements BundleActivator{ public final static String DEPENDS_ON = "org.freeplane.plugin.workspace"; /*********************************************************************************** * CONSTRUCTORS **********************************************************************************/ /*********************************************************************************** * METHODS **********************************************************************************/ public abstract void startPlugin(BundleContext context, ModeController modeController); protected abstract Collection<IControllerExtensionProvider> getControllerExtensions(); /*********************************************************************************** * REQUIRED METHODS FOR INTERFACES **********************************************************************************/ public final void start(BundleContext context) throws Exception { final Hashtable<String, String[]> props = new Hashtable<String, String[]>(); props.put("dependsOn", new String[] { DEPENDS_ON }); //$NON-NLS-1$ if(getControllerExtensions() != null) { for(IControllerExtensionProvider provider : getControllerExtensions()) { context.registerService(IControllerExtensionProvider.class.getName(), provider, null); } } context.registerService(WorkspaceDependentService.class.getName(), this, props); } }