package de.tud.kom.socom.web.client.administration;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Overflow;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
import de.tud.kom.socom.web.client.GraphPanel;
import de.tud.kom.socom.web.client.administration.AdministrationPresenter.AdministrationViewInterface;
import de.tud.kom.socom.web.client.htmlelements.ErrorList;
import de.tud.kom.socom.web.client.htmlelements.ErrorListItemView;
import de.tud.kom.socom.web.client.sharedmodels.GameInstance;
public class GameStatisticAdministrationView extends Composite implements AdministrationViewInterface<GameInstance> {
private static AdministrationViewUiBinder uiBinder = GWT.create(AdministrationViewUiBinder.class);
private AdministrationPresenter presenter;
interface AdministrationViewUiBinder extends UiBinder<Widget, GameStatisticAdministrationView> {
}
public GameStatisticAdministrationView(AdministrationPresenter presenter) {
this.presenter = presenter;
initWidget(uiBinder.createAndBindUi(this));
presenter.loadGames(gameList);
}
@UiField
ListBox gameList;
@UiField
SimplePanel statisticPanel;
@UiField
ErrorList errorList;
public GameStatisticAdministrationView(String firstName) {
initWidget(uiBinder.createAndBindUi(this));
}
@Override
public void showError(ErrorListItemView error) {
this.errorList.addError(error);
}
@Override
public void hideErrors() {
this.errorList.clear();
}
@Override
public void hideError(ErrorListItemView error) {
this.errorList.removeError(error);
}
@Override
public void updateInformation(List<GameInstance> res, UIObject parent) {
gameList.addItem("-", "none");
for(GameInstance instance: res) {
String name = instance.getName() + " " + instance.getVersion();
String value = String.valueOf(instance.getId());
gameList.addItem(name, value);
}
gameList.removeStyleName("hidden");
}
@UiHandler("gameList")
void onValueChanged(ChangeEvent ce) {
showLoad(true);
String gameid = gameList.getValue(gameList.getSelectedIndex());
if(gameid.equals("none")){
} else {
presenter.onGameGraphSelection(Long.parseLong(gameid));
}
}
public void setGraphData(JSONObject graph) {
int offX = statisticPanel.getAbsoluteLeft();
int offY = statisticPanel.getAbsoluteTop();
GraphPanel panel = GraphPanel.get(offX, offY);
panel.setGraph(graph);
panel.showFullGraph();
panel.getElement().getStyle().setOverflow(Overflow.VISIBLE);
showLoad(false);
statisticPanel.setWidget(panel);
}
private void showLoad(boolean show){
statisticPanel.clear();
if(show)
statisticPanel.add(new Label("Lade..."));
}
}