package tv.dyndns.kishibe.qmaclone.client.ranking;
import java.util.List;
import tv.dyndns.kishibe.qmaclone.client.game.ProblemGenre;
import com.google.common.base.Preconditions;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.inject.Inject;
public class ThemeSelectorViewImpl extends Tree implements ThemeSelectorPresenter.View,
SelectionHandler<TreeItem> {
private ThemeSelectorPresenter presenter;
@Inject
public ThemeSelectorViewImpl(ThemeSelectorPresenter presenter) {
this.presenter = Preconditions.checkNotNull(presenter);
presenter.setView(this);
setAnimationEnabled(true);
addSelectionHandler(this);
setPixelSize(ThemeRankingViewImpl.LEFT_WIDTH, 400);
}
@Override
public void setTheme(List<List<String>> themess) {
int index = 1;
for (ProblemGenre genre : ProblemGenre.values()) {
TreeItem treeItem = addTextItem(genre.toString());
List<String> themes = themess.get(genre.getIndex());
for (String theme : themes) {
String value = index++ + " " + theme;
treeItem.addTextItem(value);
}
}
}
@Override
public void onSelection(SelectionEvent<TreeItem> event) {
String label = event.getSelectedItem().getText();
if (!label.contains(" ")) {
// ジャンル名が選択された
return;
}
String theme = label.substring(label.indexOf(' ') + 1);
presenter.onThemeSelected(theme);
}
}