/** * author: Marcel Genzmehr * 20.10.2011 */ package org.freeplane.plugin.workspace; import java.util.Collection; import java.util.Hashtable; import org.freeplane.core.util.LogUtils; import org.freeplane.features.mode.ModeController; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; /** * */ public abstract class WorkspaceDependingService 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<IWorkspaceDependingControllerExtension> getControllerExtensions(); protected abstract void setupDefaults(BundleContext context); /*********************************************************************************** * REQUIRED METHODS FOR INTERFACES **********************************************************************************/ public final void start(BundleContext context) throws Exception { setupDefaults(context); final Hashtable<String, String[]> props = new Hashtable<String, String[]>(); props.put("dependsOn", new String[] { DEPENDS_ON }); //$NON-NLS-1$ Collection<IWorkspaceDependingControllerExtension> extensions = getControllerExtensions(); if(extensions != null) { for(IWorkspaceDependingControllerExtension provider : extensions) { try { context.registerService(IWorkspaceDependingControllerExtension.class.getName(), provider, props); } catch (Exception e) { LogUtils.warn(provider.getClass() +" has not been registered", e); } } } context.registerService(WorkspaceDependingService.class.getName(), this, props); } }