package org.eclipselabs.spray.xtext.ui.internal; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.xtext.util.Modules2; import org.eclipselabs.spray.generator.graphiti.GraphitiGeneratorModule; import org.eclipselabs.spray.runtime.graphiti.GraphitiRuntimeModule; import org.eclipselabs.spray.xtext.SprayRuntimeModule; import org.osgi.framework.BundleContext; import com.google.inject.Inject; import com.google.inject.Module; public class SprayActivatorExt extends SprayActivator { public static final String LANGUAGE_ID = "org.eclipselabs.spray.xtext.Spray"; @Inject private RegisterPlatformGenmodelListener registerPlatformGenmodelListener; private SprayResourceChangeBuildInvoker sprayResourceChangeBuildInvoker; @Override protected Module getRuntimeModule(String grammar) { // TODO: Get rid of direct dependencies to Graphiti, add Extension Point for additional modules return Modules2.mixin(super.getRuntimeModule(grammar), new SprayRuntimeModule(), new GraphitiRuntimeModule(), new GraphitiGeneratorModule()); } @Override public void start(BundleContext context) throws Exception { super.start(context); sprayResourceChangeBuildInvoker = new SprayResourceChangeBuildInvoker(this); ResourcesPlugin.getWorkspace().addResourceChangeListener(sprayResourceChangeBuildInvoker); ResourcesPlugin.getWorkspace().addResourceChangeListener(registerPlatformGenmodelListener); // register workspace genmodels registerPlatformGenmodelListener.initWorkspace(); getInjector(LANGUAGE_ID).injectMembers(this); } @Override public void stop(BundleContext context) throws Exception { ResourcesPlugin.getWorkspace().removeResourceChangeListener(sprayResourceChangeBuildInvoker); ResourcesPlugin.getWorkspace().removeResourceChangeListener(registerPlatformGenmodelListener); super.stop(context); } }