/******************************************************************************* * Copyright (c) 2010-2012, Zoltan Ujhelyi, Istvan Rath and Daniel Varro * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Zoltan Ujhelyi - initial API and implementation *******************************************************************************/ package org.eclipse.incquery.patternlanguage.emf.ui; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Logger; import org.eclipse.incquery.patternlanguage.emf.scoping.IMetamodelProvider; import org.eclipse.incquery.patternlanguage.emf.ui.feedback.GeneratorMarkerFeedback; import org.eclipse.incquery.patternlanguage.emf.ui.highlight.EMFPatternLanguageHighlightingCalculator; import org.eclipse.incquery.patternlanguage.emf.ui.highlight.EMFPatternLanguageHighlightingConfiguration; import org.eclipse.incquery.patternlanguage.emf.ui.labeling.EMFPatternLanguageHoverDocumentationProvider; import org.eclipse.incquery.patternlanguage.emf.ui.validation.GenmodelBasedEMFPatternLanguageJavaValidator; import org.eclipse.incquery.patternlanguage.emf.validation.EMFPatternLanguageJavaValidator; import org.eclipse.incquery.patternlanguage.validation.IIssueCallback; import org.eclipse.incquery.tooling.core.generator.builder.EMFPatternLanguageBuilderParticipant; import org.eclipse.incquery.tooling.core.generator.builder.IErrorFeedback; import org.eclipse.incquery.tooling.core.generator.genmodel.GenModelMetamodelProviderService; import org.eclipse.incquery.tooling.core.generator.genmodel.IEiqGenmodelProvider; import org.eclipse.incquery.tooling.core.generator.jvmmodel.EMFPatternJvmModelAssociator; import org.eclipse.incquery.tooling.core.generator.jvmmodel.EMFPatternLanguageJvmModelInferrer; import org.eclipse.incquery.tooling.core.generator.types.GenModelBasedTypeProvider; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.xtext.builder.IXtextBuilderParticipant; import org.eclipse.xtext.service.SingletonBinding; import org.eclipse.xtext.ui.editor.contentassist.XtextContentAssistProcessor; import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider; import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration; import org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator; import org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer; import org.eclipse.xtext.xbase.jvmmodel.ILogicalContainerProvider; import org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator; import org.eclipse.xtext.xbase.typing.ITypeProvider; import com.google.inject.Binder; import com.google.inject.Provides; import com.google.inject.Singleton; import com.google.inject.name.Names; /** * Use this class to register components to be used within the IDE. */ public class EMFPatternLanguageUiModule extends AbstractEMFPatternLanguageUiModule { private static final String loggerRoot = "org.eclipse.incquery"; public EMFPatternLanguageUiModule(AbstractUIPlugin plugin) { super(plugin); } @Provides @Singleton Logger provideLoggerImplementation() { Logger logger = Logger.getLogger(loggerRoot); logger.setAdditivity(false); logger.addAppender(new ConsoleAppender()); logger.addAppender(new EclipseLogAppender()); return logger; } @Override public void configure(Binder binder) { super.configure(binder); binder.bind(String.class) .annotatedWith(Names.named(XtextContentAssistProcessor.COMPLETION_AUTO_ACTIVATION_CHARS)) .toInstance(".,"); } /* * Registering model inferrer from the tooling.generator project */ public Class<? extends IJvmModelInferrer> bindIJvmModelInferrer() { return EMFPatternLanguageJvmModelInferrer.class; } @Override public Class<? extends IXtextBuilderParticipant> bindIXtextBuilderParticipant() { return EMFPatternLanguageBuilderParticipant.class; } @Override public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() { return EMFPatternLanguageHighlightingCalculator.class; } @Override public Class<? extends IHighlightingConfiguration> bindIHighlightingConfiguration() { return EMFPatternLanguageHighlightingConfiguration.class; } public Class<? extends IMetamodelProvider> bindIMetamodelProvider() { return GenModelMetamodelProviderService.class; } public Class<? extends IEiqGenmodelProvider> bindIEiqGenmodelProvider() { return GenModelMetamodelProviderService.class; } public Class<? extends ITypeProvider> bindITypeProvider() { return GenModelBasedTypeProvider.class; } @Override public Class<? extends IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() { return EMFPatternLanguageHoverDocumentationProvider.class; } public Class<? extends IErrorFeedback> bindIErrorFeedback() { return GeneratorMarkerFeedback.class; } public Class<? extends ILogicalContainerProvider> bindILogicalContainerProvider() { return EMFPatternJvmModelAssociator.class; } public Class<? extends JvmModelAssociator> bindJvmModelAssociator() { return EMFPatternJvmModelAssociator.class; } @SingletonBinding(eager = true) public Class<? extends EMFPatternLanguageJavaValidator> bindEMFPatternLanguageJavaValidator() { return GenmodelBasedEMFPatternLanguageJavaValidator.class; } public Class<? extends IIssueCallback> bindIIssueCallback() { return GenmodelBasedEMFPatternLanguageJavaValidator.class; } }