package com.github.jknack.antlr4ide; import static com.google.common.base.Preconditions.checkNotNull; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.xtext.generator.IOutputConfigurationProvider; import org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider; import org.eclipse.xtext.naming.IQualifiedNameProvider; import com.github.jknack.antlr4ide.console.Console; import com.github.jknack.antlr4ide.console.ConsoleImpl; import com.github.jknack.antlr4ide.generator.Antlr4OutputConfigurationProvider; import com.github.jknack.antlr4ide.lang.LangFactory; import com.github.jknack.antlr4ide.scoping.Antlr4NameProvider; import com.github.jknack.antlr4ide.validation.Antlr4MissingReferenceMessageProvider; import com.google.inject.Binder; /** * The runtime module useful for create or customize Xtext. */ public class Antlr4RuntimeModule extends com.github.jknack.antlr4ide.AbstractAntlr4RuntimeModule { @Override public void configure(final Binder binder) { checkNotNull(binder); super.configure(binder); binder.bind(LangFactory.class).toInstance(LangFactory.eINSTANCE); binder.bind(ILinkingDiagnosticMessageProvider.Extended.class) .to(Antlr4MissingReferenceMessageProvider.class); binder.bind(ILaunchManager.class).toInstance(getLaunchManager()); binder.bind(Console.class).toInstance(getConsole()); } @Override public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() { return Antlr4NameProvider.class; } public Class<? extends IOutputConfigurationProvider> bindIOutputConfigurationProvider() { return Antlr4OutputConfigurationProvider.class; } protected ILaunchManager getLaunchManager() { return DebugPlugin.getDefault().getLaunchManager(); } protected Console getConsole() { return new ConsoleImpl(); } }