/*******************************************************************************
* Copyright (c) 2013 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.terminology.ui;
import org.eclipse.jface.text.templates.ContextTypeRegistry;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.xtext.formatting.IIndentationInformation;
import org.eclipse.xtext.generator.IGenerator;
import org.eclipse.xtext.ui.editor.XtextEditor;
import org.eclipse.xtext.ui.editor.actions.IActionContributor;
import org.eclipse.xtext.ui.editor.folding.IFoldingRegionProvider;
import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
import org.eclipse.xtext.ui.editor.outline.impl.OutlineFilterAndSorter.IComparator;
import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer;
import org.eclipse.xtext.ui.editor.syntaxcoloring.HighlightingReconciler;
import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration;
import org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator;
import org.eclipse.xtext.ui.editor.templates.XtextTemplateContextType;
import com.google.inject.Binder;
import com.google.inject.name.Names;
import de.itemis.tooling.terminology.formatting.TerminologyIndentation;
import de.itemis.tooling.terminology.ui.folding.TerminologyFoldingActionContributor;
import de.itemis.tooling.terminology.ui.folding.TerminologyFoldingRegionProvider;
import de.itemis.tooling.terminology.ui.generator.TerminologyUIGenerator;
import de.itemis.tooling.terminology.ui.hover.TerminologyEObjectHoverProvider;
import de.itemis.tooling.terminology.ui.outline.TerminologyOutlineSorter;
import de.itemis.tooling.terminology.ui.preferences.TerminologyBuilderPreferenceInitializer;
import de.itemis.tooling.terminology.ui.preferences.TerminologyPreferenceBasedValidationSeverityLevels;
import de.itemis.tooling.terminology.ui.syntaxcoloring.TerminologyHighlightingConfig;
import de.itemis.tooling.terminology.ui.syntaxcoloring.TerminologyHighlightingReconciler;
import de.itemis.tooling.terminology.ui.syntaxcoloring.TerminologySemanticHighlighter;
import de.itemis.tooling.terminology.ui.templates.TerminologyTemplateContextType;
import de.itemis.tooling.terminology.ui.templates.TerminologyTemplateContextTypeRegistry;
import de.itemis.tooling.terminology.validation.TerminologyValidationSeverityLevels;
/**
* Use this class to register components to be used within the IDE.
*/
public class TerminologyUiModule extends de.itemis.tooling.terminology.ui.AbstractTerminologyUiModule {
public TerminologyUiModule(AbstractUIPlugin plugin) {
super(plugin);
}
public Class<? extends IHighlightingConfiguration> bindHighlightingConfig(){
return TerminologyHighlightingConfig.class;
}
public Class<? extends ISemanticHighlightingCalculator> bindSemanticHighlighter(){
return TerminologySemanticHighlighter.class;
}
public Class<? extends IEObjectHoverProvider> bindHoverProvider(){
return TerminologyEObjectHoverProvider.class;
}
//Folding Start
@Override
@SuppressWarnings("restriction")
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$
TerminologyFoldingActionContributor.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 TerminologyXtextEditor.class;
}
public Class<? extends IFoldingRegionProvider> bindFoldingRegionProvider() {
return TerminologyFoldingRegionProvider.class;
}
//Folding End
public Class<? extends TerminologyValidationSeverityLevels> bindSeverityLevels() {
return TerminologyPreferenceBasedValidationSeverityLevels.class;
}
@Override
public Class<? extends IIndentationInformation> bindIIndentationInformation() {
return TerminologyIndentation.class;
}
@Override
public Class<? extends ContextTypeRegistry> bindContextTypeRegistry() {
return TerminologyTemplateContextTypeRegistry.class;
}
public Class<? extends XtextTemplateContextType> bindTemplateContextType() {
return TerminologyTemplateContextType.class;
}
@Override
public Class<? extends IComparator> bindOutlineFilterAndSorter$IComparator() {
return TerminologyOutlineSorter.class;
}
@Override
public void configureBuilderPreferenceStoreInitializer(com.google.inject.Binder binder) {
binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("builderPreferenceInitializer")).to(TerminologyBuilderPreferenceInitializer.class);
}
public Class<? extends IGenerator> bindGenerator() {
return TerminologyUIGenerator.class;
}
public Class<? extends HighlightingReconciler> bindHighlightingReconciler() {
return TerminologyHighlightingReconciler.class;
}
}