package com.christophdietze.jack.client.view.embed;
import com.christophdietze.jack.client.view.BoardPanel;
import com.christophdietze.jack.client.view.DragAndDropView;
import com.christophdietze.jack.client.view.PlayerNamePanel;
import com.christophdietze.jack.client.view.PromotionView;
import com.christophdietze.jack.client.view.SquareSelectionView;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiFactory;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.google.inject.Provider;
public class MainPanelEmbed extends Composite {
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
interface MyUiBinder extends UiBinder<Widget, MainPanelEmbed> {
}
// inner class must be public for injection to work
public static class ProviderHelper {
@Inject
private Provider<BoardPanel> boardPanelProvider;
@Inject
private Provider<SquareSelectionView> squareSelectionViewProvider;
@Inject
private Provider<DragAndDropView> dndViewProvider;
@Inject
private Provider<PromotionView> promotionViewProvider;
@Inject
private Provider<PlayerNamePanel> playerNamePanelProvider;
@Inject
private Provider<MoveNavigationPanel> moveNavigationPanelProvider;
@Inject
private Provider<MoveTextPanel> moveTextPanelProvider;
}
private ProviderHelper providerHelper;
@Inject
public MainPanelEmbed(ProviderHelper providerHelper) {
this.providerHelper = providerHelper;
initWidget(uiBinder.createAndBindUi(this));
initializeDetachedViews();
}
private void initializeDetachedViews() {
providerHelper.squareSelectionViewProvider.get();
providerHelper.dndViewProvider.get();
providerHelper.promotionViewProvider.get();
}
@UiFactory
BoardPanel makeBoardPanel() {
return providerHelper.boardPanelProvider.get();
}
@UiFactory
PlayerNamePanel makePlayerNamePanel() {
return providerHelper.playerNamePanelProvider.get();
}
@UiFactory
MoveNavigationPanel makeMoveNavigationPanel() {
return providerHelper.moveNavigationPanelProvider.get();
}
@UiFactory
MoveTextPanel makeMoveTextPanel() {
return providerHelper.moveTextPanelProvider.get();
}
}