package eu.dnetlib.client;

import com.google.gwt.inject.client.AbstractGinModule;
import com.google.inject.Singleton;

import eu.dnetlib.client.loader.ComponentLoader;
import eu.dnetlib.client.loader.ComponentLoaderImpl;
import eu.dnetlib.client.managers.ActiveComponentsManager;
import eu.dnetlib.client.managers.ActiveComponentsManagerImpl;
import eu.dnetlib.client.managers.NotificationManager;
import eu.dnetlib.client.managers.NotificationManagerImpl;
import eu.dnetlib.client.managers.PermissionsManager;
import eu.dnetlib.client.managers.PermissionsManagerImpl;
import eu.dnetlib.client.managers.UpdateManager;
import eu.dnetlib.client.managers.UpdateManagerImpl;
import eu.dnetlib.client.notification.NotificationSender;
import eu.dnetlib.client.notification.NotificationSenderImpl;
import eu.dnetlib.client.notification.NotificationServiceAsync;
import eu.dnetlib.client.resources.frame.Frames;
import eu.dnetlib.client.resources.item.Items;
import eu.dnetlib.client.resources.theme.Themes;
import eu.dnetlib.client.resources.topic.Topics;
import eu.dnetlib.client.shared.StartUpComponents;
import eu.dnetlib.client.updaters.LayoutUpdater;
import eu.dnetlib.client.updaters.LayoutUpdaterImpl;
import eu.dnetlib.client.updaters.Updater;

public class GinWidgetClientModule extends AbstractGinModule {
	protected void configure() {
		bind(Items.class).in(Singleton.class);
		bind(Frames.class).in(Singleton.class);
		bind(Topics.class).in(Singleton.class);
		bind(Themes.class).in(Singleton.class);
		bind(LayoutUpdater.class).to(LayoutUpdaterImpl.class).in(Singleton.class);
		bind(NotificationManager.class).to(NotificationManagerImpl.class).in(Singleton.class);
		bind(UpdateManager.class).to(UpdateManagerImpl.class).in(Singleton.class);
		bind(ActiveComponentsManager.class).to(ActiveComponentsManagerImpl.class).in(Singleton.class);
		bind(PermissionsManager.class).to(PermissionsManagerImpl.class).in(Singleton.class);
		bind(ComponentLoader.class).to(ComponentLoaderImpl.class).in(Singleton.class);
		bind(StartUpComponents.class).in(Singleton.class);
		bind(NotificationSender.class).to(NotificationSenderImpl.class).in(Singleton.class);
		bind(Updater.class).in(Singleton.class);
		bind(NotificationServiceAsync.class).in(Singleton.class);
 
	}

}
