/*******************************************************************************
* Copyright (c) 2010 Martin Schnabel <mb0@mb0.org>.
* 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
******************************************************************************/
package org.axdt.as3.ui;
import org.axdt.as3.config.IFormattingConfig;
import org.axdt.as3.resource.As3ProjectsStateHelper;
import org.axdt.as3.resource.AvmResourceSetProvider;
import org.axdt.as3.ui.autoedit.As3AutoEditStrategyProvider;
import org.axdt.as3.ui.coloring.As3HighlightingConfiguration;
import org.axdt.as3.ui.coloring.As3TokenToAttributeIdMapper;
import org.axdt.as3.ui.folding.As3FoldingRegionProvider;
import org.axdt.as3.ui.folding.As3FoldingStructureProvider;
import org.axdt.as3.ui.hover.As3DocumentationProvider;
import org.axdt.as3.ui.hover.As3TextHover;
import org.axdt.as3.ui.preferences.As3EditorPreferences;
import org.axdt.as3.ui.preferences.As3FormattingPreferences;
import org.axdt.as3.ui.templates.As3CrossReferenceTemplateVariableResolver;
import org.axdt.as3.ui.templates.As3TemplateProposalProvider;
import org.axdt.as3.ui.wizards.As3ProjectCreator;
import org.axdt.asdoc.access.AsdocResourceFactoryProvider;
import org.axdt.asdoc.access.AsdocRootProvider;
import org.axdt.asdoc.access.IDocRootProvider;
import org.axdt.asdoc.scoping.AsdocLibraryScopeProvider;
import org.axdt.asdoc.ui.hyperlink.AsdocAwareHyperlinkHelper;
import org.axdt.asdoc.ui.preferences.AsdocPreferences;
import org.axdt.asdoc.ui.proposal.AsdocProposalProvider;
import org.axdt.avm.access.AvmResourceFactory;
import org.axdt.avm.naming.AvmQualifiedNameConverter;
import org.axdt.avm.scoping.AvmAwareGlobalScopeProvider;
import org.axdt.avm.scoping.AvmLibraryScopeProvider;
import org.axdt.avm.ui.naming.AvmPrefixMatcher;
import org.axdt.avm.ui.proposal.IAvmProposalProvider;
import org.axdt.core.ui.img.AxdtImageHelper;
import org.axdt.core.ui.preferences.CorePreferences;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.text.source.IAnnotationHover;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.xtext.documentation.IEObjectDocumentationProvider;
import org.eclipse.xtext.naming.IQualifiedNameConverter;
import org.eclipse.xtext.resource.containers.IAllContainersState;
import org.eclipse.xtext.ui.IImageHelper;
import org.eclipse.xtext.ui.containers.WorkspaceProjectsStateHelper;
import org.eclipse.xtext.ui.editor.XtextSourceViewerConfiguration;
import org.eclipse.xtext.ui.editor.autoedit.AbstractEditStrategyProvider;
import org.eclipse.xtext.ui.editor.contentassist.ITemplateProposalProvider;
import org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher;
import org.eclipse.xtext.ui.editor.folding.IFoldingRegionProvider;
import org.eclipse.xtext.ui.editor.folding.IFoldingStructureProvider;
import org.eclipse.xtext.ui.editor.hover.DispatchingEObjectTextHover;
import org.eclipse.xtext.ui.editor.hover.IEObjectHover;
import org.eclipse.xtext.ui.editor.hover.ProblemAnnotationHover;
import org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper;
import org.eclipse.xtext.ui.editor.model.ITokenTypeToPartitionTypeMapper;
import org.eclipse.xtext.ui.editor.syntaxcoloring.AbstractAntlrTokenToAttributeIdMapper;
import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration;
import org.eclipse.xtext.ui.editor.templates.CrossReferenceTemplateVariableResolver;
import org.eclipse.xtext.ui.resource.IResourceSetProvider;
import org.eclipse.xtext.ui.shared.Access;
import org.eclipse.xtext.ui.wizard.IProjectCreator;
import com.google.inject.Binder;
import com.google.inject.Provider;
import com.google.inject.name.Names;
/**
* Use this class to register components to be used within the IDE.
*/
public class As3UiModule extends org.axdt.as3.ui.AbstractAs3UiModule {
public As3UiModule(AbstractUIPlugin plugin) {
super(plugin);
}
public AsdocPreferences bindAsdocPreferencesToInstance() {
return AsdocPreferences.getInstance();
}
public CorePreferences bindCorePreferencesToInstance() {
return CorePreferences.getInstance();
}
public As3EditorPreferences bindAs3EditorPreferencesToInstance() {
return As3EditorPreferences.getInstance();
}
public IFormattingConfig bindIFormattingConfigToInstance() {
return As3FormattingPreferences.getInstance();
}
public IDocRootProvider bindDocRootProviderToInstance() {
return AsdocRootProvider.getInstance();
}
public Class<? extends AvmResourceFactory.Provider> bindAvmResourceFactory$Provider() {
return AsdocResourceFactoryProvider.class;
}
public Class<? extends IProjectCreator> bindIProjectCreator() {
return As3ProjectCreator.class;
}
public Class<? extends IFoldingRegionProvider> bindIFoldingRegionProvider() {
return As3FoldingRegionProvider.class;
}
public Class<? extends AbstractEditStrategyProvider> bindAbstractEditStrategyProvider() {
return As3AutoEditStrategyProvider.class;
}
public Class<? extends IHighlightingConfiguration> bindIHighlightingConfiguration() {
return As3HighlightingConfiguration.class;
}
public Class<? extends AbstractAntlrTokenToAttributeIdMapper> bindAbstractAntlrTokenToAttributeIdMapper() {
return As3TokenToAttributeIdMapper.class;
}
@Override
public Class<? extends IImageHelper> bindIImageHelper() {
return As3ImageHelper.class;
}
@Override
public Class<? extends ITemplateProposalProvider> bindITemplateProposalProvider() {
return As3TemplateProposalProvider.class;
}
public Class<? extends WorkspaceProjectsStateHelper> bindWorkspaceProjectsStateHelper() {
return As3ProjectsStateHelper.class;
}
public Class<? extends IHyperlinkHelper> bindIHyperlinkHelper() {
return AsdocAwareHyperlinkHelper.class;
}
public Class<? extends AvmLibraryScopeProvider> bindAvmLibraryScopeProvider() {
return AsdocLibraryScopeProvider.class;
}
public Class<? extends IAvmProposalProvider> bindIAvmProposalProvider() {
return AsdocProposalProvider.class;
}
@Override
public Class<? extends PrefixMatcher> bindPrefixMatcher() {
return AvmPrefixMatcher.class;
}
public Class<? extends IQualifiedNameConverter> bindIQualifiedNameSupport() {
return AvmQualifiedNameConverter.class;
}
public void configureAvmPrefixMatcher_delegate(Binder binder) {
binder.bind(PrefixMatcher.class)
.annotatedWith(Names.named(AvmPrefixMatcher.DELEGATE_NAME))
.to(PrefixMatcher.CamelCase.class);
}
@Override
public Class<? extends IResourceSetProvider> bindIResourceSetProvider() {
return AvmResourceSetProvider.class;
}
public Class<? extends IFoldingStructureProvider> bindIFoldingStructureProvider() {
return As3FoldingStructureProvider.class;
}
public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
return AvmAwareGlobalScopeProvider.class;
}
public Class<? extends CrossReferenceTemplateVariableResolver> bindCrossReferenceTemplateVariableResolver() {
return As3CrossReferenceTemplateVariableResolver.class;
}
public Provider<IAllContainersState> provideIAllContainersState() {
return Access.getWorkspaceProjectsState();
}
public Class<? extends XtextSourceViewerConfiguration> bindXtextSourceViewerConfiguration() {
return As3SourceViewerConfiguration.class;
}
public Class<? extends IAnnotationHover> bindIAnnotationHover () {
return ProblemAnnotationHover.class;
}
public Class<? extends ITokenTypeToPartitionTypeMapper> bindITokenTypeToPartitionTypeMapper () {
return As3TokenTypeToPartitionMapper.class;
}
public Class<? extends IEObjectDocumentationProvider> bindIEObjectDocumentationProvider() {
return As3DocumentationProvider.class;
}
public Class<? extends IEObjectHover> bindIEObjectHover() {
return As3TextHover.class;
}
public Class<? extends DispatchingEObjectTextHover> bindDispatchingEObjectTextHover() {
return As3TextHover.class;
}
}
class As3ImageHelper implements IImageHelper {
private final AxdtImageHelper delegate = AxdtImageHelper.getInstance();
public Image getImage(String name) {
return delegate.getImage(name);
}
public Image getImage(ImageDescriptor imageDescriptor) {
return delegate.getImage(imageDescriptor);
}
}