package com.google.gwt.gin.higherlower.client.gin;
import com.google.gwt.gin.higherlower.client.GameHost;
import com.google.gwt.gin.higherlower.client.Shuffler;
import com.google.gwt.gin.higherlower.client.SimpleShuffler;
import com.google.gwt.gin.higherlower.client.Walter;
import com.google.gwt.gin.higherlower.client.GameDialogs;
import com.google.gwt.gin.higherlower.client.DefaultGameDialogs;
import com.google.gwt.gin.higherlower.client.DefaultScoreBoard;
import com.google.gwt.gin.higherlower.client.ScoreBoard;
import com.google.gwt.gin.higherlower.client.DefaultHigherLowerGame;
import com.google.gwt.gin.higherlower.client.HigherLowerGame;
import com.google.gwt.gin.higherlower.client.Homepage;
import com.google.gwt.gin.higherlower.client.DefaultHomepage;
import com.google.gwt.gin.higherlower.client.DefaultCardGrid;
import com.google.gwt.gin.higherlower.client.CardGrid;
import com.google.gwt.gin.higherlower.client.model.Deck;
import com.google.gwt.inject.client.AbstractGinModule;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Image;
import com.google.inject.Singleton;
import com.google.inject.name.Names;
public class HigherOrLowerModule extends AbstractGinModule {
@Override
protected void configure() {
bind(Homepage.class).to(DefaultHomepage.class);
bind(Deck.class).toProvider(DeckProvider.class);
bind(Shuffler.class).to(SimpleShuffler.class).in(Singleton.class);
bind(Image.class).annotatedWith(BackOfCard.class).toProvider(BackOfCardProvider.class);
bind(Button.class).annotatedWith(StartGame.class).toProvider(StartGameButtonProvider.class)
.in(Singleton.class);
bind(GameHost.class).to(Walter.class).in(Singleton.class);
bind(GameDialogs.class).to(DefaultGameDialogs.class).in(Singleton.class);
bind(HigherLowerGame.class).to(DefaultHigherLowerGame.class);
bind(CardGrid.class).to(DefaultCardGrid.class).in(Singleton.class);
bind(ScoreBoard.class).to(DefaultScoreBoard.class).in(Singleton.class);
bindConstant().annotatedWith(Rows.class).to(2);
bindConstant().annotatedWith(Columns.class).to(5);
bind(Integer.class).annotatedWith(NumberOfCards.class)
.toProvider(NumberOfCardsProvider.class);
}
}