/******************************************************************************* * Copyright (c) 2012-2016 Codenvy, S.A. * 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: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.ext.java.client.inject; import com.google.gwt.inject.client.AbstractGinModule; import com.google.gwt.inject.client.assistedinject.GinFactoryModuleBuilder; import com.google.gwt.inject.client.multibindings.GinMapBinder; import com.google.gwt.inject.client.multibindings.GinMultibinder; import com.google.inject.Provides; import com.google.inject.Singleton; import com.google.inject.name.Named; import org.eclipse.che.ide.MimeType; import org.eclipse.che.ide.api.extension.ExtensionGinModule; import org.eclipse.che.ide.api.filetypes.FileType; import org.eclipse.che.ide.api.project.node.interceptor.NodeInterceptor; import org.eclipse.che.ide.api.project.node.settings.SettingsProvider; import org.eclipse.che.ide.ext.java.client.CurrentClassFQNProvider; import org.eclipse.che.ide.ext.java.client.JavaResources; import org.eclipse.che.ide.ext.java.client.dependenciesupdater.JavaClasspathServiceClient; import org.eclipse.che.ide.ext.java.client.dependenciesupdater.JavaClasspathServiceClientImpl; import org.eclipse.che.ide.ext.java.client.documentation.QuickDocPresenter; import org.eclipse.che.ide.ext.java.client.documentation.QuickDocumentation; import org.eclipse.che.ide.ext.java.client.inject.factories.PropertyWidgetFactory; import org.eclipse.che.ide.ext.java.client.navigation.service.JavaNavigationService; import org.eclipse.che.ide.ext.java.client.navigation.service.JavaNavigationServiceImpl; import org.eclipse.che.ide.ext.java.client.newsourcefile.NewJavaSourceFileView; import org.eclipse.che.ide.ext.java.client.newsourcefile.NewJavaSourceFileViewImpl; import org.eclipse.che.ide.ext.java.client.project.interceptor.JavaClassInterceptor; import org.eclipse.che.ide.ext.java.client.project.interceptor.TestContentRootDecorator; import org.eclipse.che.ide.ext.java.client.project.node.JavaNodeFactory; import org.eclipse.che.ide.ext.java.client.project.node.JavaNodeManager; import org.eclipse.che.ide.ext.java.client.project.settings.JavaNodeSettingsProvider; import org.eclipse.che.ide.ext.java.client.search.JavaSearchService; import org.eclipse.che.ide.ext.java.client.search.JavaSearchServiceWS; import org.eclipse.che.ide.ext.java.client.search.node.NodeFactory; import org.eclipse.che.ide.ext.java.client.settings.compiler.ErrorWarningsPresenter; import org.eclipse.che.ide.ext.java.client.settings.property.PropertyWidget; import org.eclipse.che.ide.ext.java.client.settings.property.PropertyWidgetImpl; import org.eclipse.che.ide.extension.machine.client.command.valueproviders.CommandPropertyValueProvider; import org.eclipse.che.ide.settings.common.SettingsPagePresenter; /** * @author Evgen Vidolob * @author Artem Zatsarynnyi */ @ExtensionGinModule public class JavaGinModule extends AbstractGinModule { /** {@inheritDoc} */ @Override protected void configure() { bind(NewJavaSourceFileView.class).to(NewJavaSourceFileViewImpl.class).in(Singleton.class); bind(QuickDocumentation.class).to(QuickDocPresenter.class).in(Singleton.class); bind(JavaNavigationService.class).to(JavaNavigationServiceImpl.class); bind(JavaClasspathServiceClient.class).to(JavaClasspathServiceClientImpl.class); bind(JavaSearchService.class).to(JavaSearchServiceWS.class); bind(JavaNodeManager.class); GinMapBinder<String, SettingsProvider> mapBinder = GinMapBinder.newMapBinder(binder(), String.class, SettingsProvider.class); mapBinder.addBinding("java").to(JavaNodeSettingsProvider.class); GinMultibinder.newSetBinder(binder(), NodeInterceptor.class).addBinding().to(JavaClassInterceptor.class); GinMultibinder.newSetBinder(binder(), NodeInterceptor.class).addBinding().to(TestContentRootDecorator.class); install(new GinFactoryModuleBuilder().build(JavaNodeFactory.class)); install(new GinFactoryModuleBuilder().implement(PropertyWidget.class, PropertyWidgetImpl.class) .build(PropertyWidgetFactory.class)); install(new GinFactoryModuleBuilder().build(NodeFactory.class)); install(new GinFactoryModuleBuilder().build(org.eclipse.che.ide.ext.java.client.navigation.factory.NodeFactory.class)); GinMultibinder<SettingsPagePresenter> settingsBinder = GinMultibinder.newSetBinder(binder(), SettingsPagePresenter.class); settingsBinder.addBinding().to(ErrorWarningsPresenter.class); GinMultibinder.newSetBinder(binder(), CommandPropertyValueProvider.class).addBinding().to(CurrentClassFQNProvider.class); } @Provides @Singleton @Named("JavaFileType") protected FileType provideJavaFile() { return new FileType("Java", JavaResources.INSTANCE.javaFile(), MimeType.TEXT_X_JAVA, "java"); } @Provides @Singleton @Named("JavaClassFileType") protected FileType provideJavaClassFile() { return new FileType("Java Class", JavaResources.INSTANCE.javaFile(), MimeType.APPLICATION_JAVA_CLASS, "class"); } @Provides @Singleton @Named("JspFileType") protected FileType provideJspFile() { return new FileType("Jsp", JavaResources.INSTANCE.jspFile(), MimeType.APPLICATION_JSP, "jsp"); } @Provides @Singleton @Named("JsfFileType") protected FileType provideJsfFile() { return new FileType("Jsf", JavaResources.INSTANCE.jsfFile(), MimeType.TEXT_X_JAVA, "jsf"); } }