package tv.dyndns.kishibe.qmaclone.client.ranking;
import java.util.List;
import tv.dyndns.kishibe.qmaclone.client.packet.PacketRankingData;
import tv.dyndns.kishibe.qmaclone.client.report.SafeHtmlColumn;
import com.google.gwt.core.client.GWT;
import com.google.gwt.safehtml.client.SafeHtmlTemplates;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.safehtml.shared.SafeUri;
import com.google.gwt.safehtml.shared.UriUtils;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.ProvidesKey;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
public class CellTableRanking extends CellTable<PacketRankingData> {
interface Factory {
CellTableRanking create(String dataLabel);
}
interface CellTableRankingTemplates extends SafeHtmlTemplates {
@Template("<img src=\"{0}\" style=\"width: 48px; height: 48px;\">")
SafeHtml icon(SafeUri fileName);
}
private static final CellTableRankingTemplates TEMPLATES = GWT
.create(CellTableRankingTemplates.class);
private final ListDataProvider<PacketRankingData> rankingProvider = new ListDataProvider<PacketRankingData>();
@Inject
public CellTableRanking(@Assisted String dataLabel) {
super(0, GWT.<CellTable.BasicResources> create(CellTable.BasicResources.class),
new ProvidesKey<PacketRankingData>() {
@Override
public Object getKey(PacketRankingData item) {
return item.imageFileName;
}
});
rankingProvider.addDataDisplay(this);
// 順位
addColumn(new SafeHtmlColumn<PacketRankingData>() {
@Override
public SafeHtml getValue(PacketRankingData object) {
return SafeHtmlUtils.fromString(String.valueOf(object.ranking));
}
}, "順位");
// アイコン
addColumn(new SafeHtmlColumn<PacketRankingData>() {
@Override
public SafeHtml getValue(PacketRankingData object) {
return TEMPLATES.icon(UriUtils.fromString("http://kishibe.dyndns.tv/qmaclone_icon/"
+ object.imageFileName));
}
}, "");
// プレイヤー
addColumn(new SafeHtmlColumn<PacketRankingData>() {
@Override
public SafeHtml getValue(PacketRankingData object) {
return SafeHtmlUtils.fromString(object.name);
}
}, "プレイヤー");
// データ
addColumn(new SafeHtmlColumn<PacketRankingData>() {
@Override
public SafeHtml getValue(PacketRankingData object) {
return SafeHtmlUtils.fromString(object.data);
}
}, dataLabel);
}
public void setRanking(List<PacketRankingData> ranking) {
setPageSize(ranking.size());
rankingProvider.setList(ranking);
rankingProvider.refresh();
}
}