/*******************************************************************************
* Copyright (c) 2013 AKSW Xturtle Project, itemis AG (http://www.itemis.eu).
* 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
******************************************************************************/
/*
* generated by Xtext
*/
package de.itemis.tooling.xturtle.ui;
import org.eclipse.jface.text.DefaultIndentLineAutoEditStrategy;
import org.eclipse.jface.text.templates.ContextTypeRegistry;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.xtext.resource.containers.IAllContainersState;
import org.eclipse.xtext.ui.editor.XtextEditor;
import org.eclipse.xtext.ui.editor.actions.IActionContributor;
import org.eclipse.xtext.ui.editor.autoedit.AbstractEditStrategyProvider;
import org.eclipse.xtext.ui.editor.findrefs.IReferenceFinder;
import org.eclipse.xtext.ui.editor.folding.IFoldingRegionProvider;
import org.eclipse.xtext.ui.editor.hover.IEObjectHover;
import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
import org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper;
import org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler;
import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer;
import org.eclipse.xtext.ui.editor.syntaxcoloring.AbstractAntlrTokenToAttributeIdMapper;
import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration;
import org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator;
import com.google.inject.Binder;
import com.google.inject.Provider;
import com.google.inject.name.Names;
import de.itemis.tooling.xturtle.CustomXturtleLexer;
import de.itemis.tooling.xturtle.resource.TurtleIndexUserDataNamesProvider;
import de.itemis.tooling.xturtle.ui.autoedit.TurtleAutoEditStrategyProvider;
import de.itemis.tooling.xturtle.ui.autoedit.TurtleNewLineAutoedit;
import de.itemis.tooling.xturtle.ui.contentassist.CustomXturtleContentassistLexer;
import de.itemis.tooling.xturtle.ui.contentassist.TurtleLiteralsLanguages;
import de.itemis.tooling.xturtle.ui.contentassist.antlr.internal.InternalXturtleLexer;
import de.itemis.tooling.xturtle.ui.findrefs.TurtleReferenceFinder;
import de.itemis.tooling.xturtle.ui.folding.TurtleFoldingActionContributor;
import de.itemis.tooling.xturtle.ui.folding.TurtleFoldingRegionProvider;
import de.itemis.tooling.xturtle.ui.hover.TurtleEObjectHover;
import de.itemis.tooling.xturtle.ui.hover.TurtleEObjectHoverProvider;
import de.itemis.tooling.xturtle.ui.hyperlinking.TurtleHyperlinkHelper;
import de.itemis.tooling.xturtle.ui.hyperlinking.TurtleOpenDeclarationHandler;
import de.itemis.tooling.xturtle.ui.preferences.TurtlePreferenceBasedLiteralsLanguages;
import de.itemis.tooling.xturtle.ui.preferences.TurtlePreferenceBasedNoLinkingValidationUriPrefixes;
import de.itemis.tooling.xturtle.ui.preferences.TurtlePreferenceBasedUserDataNamesProvider;
import de.itemis.tooling.xturtle.ui.preferences.TurtlePreferenceBasedValidationSeverityLevels;
import de.itemis.tooling.xturtle.ui.syntaxcoloring.TurtleHighlightingConfig;
import de.itemis.tooling.xturtle.ui.syntaxcoloring.TurtleHighlightingMapper;
import de.itemis.tooling.xturtle.ui.syntaxcoloring.TurtleSemanticHighlighter;
import de.itemis.tooling.xturtle.ui.templates.TurtleTemplateContextTypeRegistry;
import de.itemis.tooling.xturtle.ui.validation.XturtleUIJavaValidator;
import de.itemis.tooling.xturtle.validation.TurtleFixedSeverityLevels;
import de.itemis.tooling.xturtle.validation.TurtleNoLinkingValidationUriPrefixes;
import de.itemis.tooling.xturtle.validation.TurtleValidationSeverityLevels;
/**
* Use this class to register components to be used within the IDE.
*/
public class XturtleUiModule extends de.itemis.tooling.xturtle.ui.AbstractXturtleUiModule {
public XturtleUiModule(AbstractUIPlugin plugin) {
super(plugin);
}
@Override
public void configureHighlightingLexer(com.google.inject.Binder binder) {
binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(CustomXturtleLexer.class);
}
/**
* Override that injects a wrapper for the external lexer used by the main parser.
* contributed by org.eclipse.xtext.generator.parser.antlr.ex.ca.ContentAssistParserGeneratorFragment.
*
* Without this override, a default generated lexer will be used and this lexer will not be correct as
* PP parsing requires an external lexer. The binding reuses the main lexer.
*/
@Override
public void configureContentAssistLexer(com.google.inject.Binder binder) {
binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(
com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(
CustomXturtleContentassistLexer.class);
}
/**
* Override that injects a wrapper for the external lexer used by the main parser.
* contributed by org.eclipse.xtext.generator.parser.antlr.ex.ca.ContentAssistParserGeneratorFragment
*/
@Override
public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
binder.bind(InternalXturtleLexer.class).toProvider(
org.eclipse.xtext.parser.antlr.LexerProvider.create(CustomXturtleContentassistLexer.class));
}
public Class <? extends AbstractAntlrTokenToAttributeIdMapper> bindTokenMapper(){
return TurtleHighlightingMapper.class;
}
public Class<? extends IHyperlinkHelper> bindIHyperlinkHelper() {
return TurtleHyperlinkHelper.class;
}
public Class<? extends OpenDeclarationHandler> bindOpenDeclarationHandler() {
return TurtleOpenDeclarationHandler.class;
}
public Class<? extends IHighlightingConfiguration> bindHighlightingConfig(){
return TurtleHighlightingConfig.class;
}
public Class<? extends ISemanticHighlightingCalculator> bindSemanticHighlighter(){
return TurtleSemanticHighlighter.class;
}
@Override
public Class<? extends IEObjectHover> bindIEObjectHover() {
return TurtleEObjectHover.class;
}
public Class<? extends IEObjectHoverProvider> bindHoverProvider(){
return TurtleEObjectHoverProvider.class;
}
public Class<? extends DefaultIndentLineAutoEditStrategy> bindAutoIndentStrategy(){
return TurtleNewLineAutoedit.class;
}
public Class<? extends IReferenceFinder> bindReferenceFinder(){
return TurtleReferenceFinder.class;
}
@Override
public Provider<IAllContainersState> provideIAllContainersState() {
return org.eclipse.xtext.ui.shared.Access.getWorkspaceProjectsState();
// return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
}
@Override
public Class<? extends AbstractEditStrategyProvider> bindAbstractEditStrategyProvider() {
return TurtleAutoEditStrategyProvider.class;
}
//Folding Start
@Override
public void configureBracketMatchingAction(Binder binder) {
//actually we want to override the first binding only...
binder.bind(IActionContributor.class).annotatedWith(Names.named("foldingActionGroup")).to( //$NON-NLS-1$
TurtleFoldingActionContributor.class);
binder.bind(IActionContributor.class).annotatedWith(Names.named("bracketMatcherAction")).to( //$NON-NLS-1$
org.eclipse.xtext.ui.editor.bracketmatching.GoToMatchingBracketAction.class);
binder.bind(IPreferenceStoreInitializer.class).annotatedWith(Names.named("bracketMatcherPrefernceInitializer")) //$NON-NLS-1$
.to(org.eclipse.xtext.ui.editor.bracketmatching.BracketMatchingPreferencesInitializer.class);
binder.bind(IActionContributor.class).annotatedWith(Names.named("selectionActionGroup")).to( //$NON-NLS-1$
org.eclipse.xtext.ui.editor.selection.AstSelectionActionContributor.class);
}
public Class<? extends XtextEditor> bindEditor() {
return TurtleXtextEditor.class;
}
public Class<? extends IFoldingRegionProvider> bindFoldingRegionProvider() {
return TurtleFoldingRegionProvider.class;
}
//Folding End
// contributed by org.eclipse.xtext.ui.generator.projectWizard.SimpleProjectWizardFragment
public Class<? extends org.eclipse.xtext.ui.wizard.IProjectCreator> bindIProjectCreator() {
return de.itemis.tooling.xturtle.ui.wizard.TurtleProjectCreator.class;
}
@Override
public Class<? extends ContextTypeRegistry> bindContextTypeRegistry() {
return TurtleTemplateContextTypeRegistry.class;
}
public Class<? extends TurtleIndexUserDataNamesProvider> bindUserDataNamesProvider() {
return TurtlePreferenceBasedUserDataNamesProvider.class;
}
public Class<? extends TurtleValidationSeverityLevels> bindSeverityLevels() {
return TurtlePreferenceBasedValidationSeverityLevels.class;
}
public Class<? extends TurtleNoLinkingValidationUriPrefixes> bindIgnoreLinkingUriPrefixes() {
return TurtlePreferenceBasedNoLinkingValidationUriPrefixes.class;
}
public Class<? extends TurtleLiteralsLanguages> bindCALanguages() {
return TurtlePreferenceBasedLiteralsLanguages.class;
}
// contributed by org.eclipse.xtext.generator.validation.JavaValidatorFragment
@org.eclipse.xtext.service.SingletonBinding(eager=true) public Class<? extends de.itemis.tooling.xturtle.validation.XturtleJavaValidator> bindXturtleJavaValidator() {
return XturtleUIJavaValidator.class;
}
}