/*******************************************************************************
* Copyright (c) 2012-2017 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.web.inject;
import com.google.gwt.inject.client.AbstractGinModule;
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.api.extension.ExtensionGinModule;
import org.eclipse.che.ide.api.filetypes.FileType;
import org.eclipse.che.ide.api.project.type.wizard.ProjectWizardRegistrar;
import org.eclipse.che.ide.ext.web.WebExtensionResource;
import org.eclipse.che.ide.ext.web.typescript.TSProjectWizardRegistrar;
/**
* Adds custom binding for Editors.
*
* @author Florent Benoit
*/
@ExtensionGinModule
public class WebModule extends AbstractGinModule {
@Override
protected void configure() {
GinMultibinder.newSetBinder(binder(), ProjectWizardRegistrar.class).addBinding().to(TSProjectWizardRegistrar.class);
}
@Provides
@Singleton
@Named("CSSFileType")
protected FileType provideCSSFile(WebExtensionResource res) {
return new FileType(res.cssFile(), "css");
}
@Provides
@Singleton
@Named("LESSFileType")
protected FileType provideLESSFile(WebExtensionResource res) {
return new FileType(res.lessFile(), "less");
}
@Provides
@Singleton
@Named("JSFileType")
protected FileType provideJSFile(WebExtensionResource res) {
return new FileType(res.jsFile(), "js");
}
@Provides
@Singleton
@Named("ES6FileType")
protected FileType provideES6File(WebExtensionResource res) {
return new FileType(res.jsFile(), "es6");
}
@Provides
@Singleton
@Named("JSXFileType")
protected FileType provideJSXFile(WebExtensionResource res) {
return new FileType(res.jsFile(), "jsx");
}
@Provides
@Singleton
@Named("TypeScript")
protected FileType provideTypeScriptFile(WebExtensionResource res) {
return new FileType(res.jsFile(), "ts");
}
@Provides
@Singleton
@Named("HTMLFileType")
protected FileType provideHTMLFile(WebExtensionResource res) {
return new FileType(res.htmlFile(), "html");
}
@Provides
@Singleton
@Named("PHPFileType")
protected FileType providePHPFile(WebExtensionResource res) {
return new FileType(res.phpFile(), "php");
}
}