package com.google.gwt.gin.higherlower.client; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; import com.google.inject.Provider; public class DefaultGameDialogs implements GameDialogs { // we use a provider to break up a circular dependency, // GIN does not support them (yet)! private final Provider<GameHost> gameHost; @Inject public DefaultGameDialogs(Provider<GameHost> gameHost) { this.gameHost = gameHost; } public void show(String title) { final DialogBox box = new DialogBox(); box.setAnimationEnabled(true); box.setText(title); box.setWidth("200px"); // It's an higherlower, folks! VerticalPanel verticalPanel = new VerticalPanel(); Button higher = new Button("Higher, higher!"); higher.addStyleName("centered"); higher.addClickListener(new ClickListener() { public void onClick(Widget sender) { box.hide(); gameHost.get().playerGuess(RelationshipToPreviousCard.HIGHER); } }); verticalPanel.add(higher); Button lower = new Button("Down, boy!"); lower.addStyleName("centered"); lower.addClickListener(new ClickListener() { public void onClick(Widget sender) { box.hide(); gameHost.get().playerGuess(RelationshipToPreviousCard.LOWER); } }); verticalPanel.add(lower); HorizontalPanel hp = new HorizontalPanel(); hp.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER); hp.add(verticalPanel); box.setWidget(hp); box.center(); box.show(); } public void showEndGame(final Runnable runnable) { final DialogBox box = new DialogBox(); box.setAnimationEnabled(true); box.setText("Thanks for playing Higher or Lower! *ding*ding*ding*ding*"); Button b = new Button("Thanks for having me!"); b.addStyleName("centered"); b.addClickListener(new ClickListener() { public void onClick(Widget sender) { runnable.run(); box.hide(); } }); box.setWidget(b); box.center(); box.show(); } }