package tv.dyndns.kishibe.qmaclone.client.setting;
import static java.lang.Math.max;
import java.util.Date;
import tv.dyndns.kishibe.qmaclone.client.Utility;
import tv.dyndns.kishibe.qmaclone.client.packet.PacketThemeModeEditLog;
import com.google.common.base.Preconditions;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.view.client.AsyncDataProvider;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.Range;
public class CellTableThemeModeEditLog extends CellTable<PacketThemeModeEditLog> {
private static final int NUMBER_OF_ROWS = 100;
private final PanelSettingThemeModeEditLog presenter;
public CellTableThemeModeEditLog(PanelSettingThemeModeEditLog presenter, int numberOfEntries) {
super(NUMBER_OF_ROWS,
GWT.<CellTable.BasicResources> create(CellTable.BasicResources.class),
new ProvidesKey<PacketThemeModeEditLog>() {
@Override
public Object getKey(PacketThemeModeEditLog item) {
return item.getUserCode() + "-" + item.getTimeMs();
}
});
this.presenter = Preconditions.checkNotNull(presenter);
setRowCount(numberOfEntries, true);
setVisibleRange(max(0, numberOfEntries - NUMBER_OF_ROWS), NUMBER_OF_ROWS);
dataProvider.addDataDisplay(this);
// プレイヤー
addColumn(new TextColumn<PacketThemeModeEditLog>() {
@Override
public String getValue(PacketThemeModeEditLog object) {
return object.getUserName() + "◆" + Utility.makeTrip(object.getUserCode());
}
}, "プレイヤー");
// 日時
addColumn(new TextColumn<PacketThemeModeEditLog>() {
@Override
public String getValue(PacketThemeModeEditLog object) {
return Utility.toDateFormat(new Date(object.getTimeMs()));
}
}, "日時");
// 操作
addColumn(new TextColumn<PacketThemeModeEditLog>() {
@Override
public String getValue(PacketThemeModeEditLog object) {
return object.getType().toString();
}
}, "操作");
// テーマ
addColumn(new TextColumn<PacketThemeModeEditLog>() {
@Override
public String getValue(PacketThemeModeEditLog object) {
return object.getTheme();
}
}, "テーマ");
// クエリ
addColumn(new TextColumn<PacketThemeModeEditLog>() {
@Override
public String getValue(PacketThemeModeEditLog object) {
return object.getQuery();
}
}, "クエリ");
}
private final AsyncDataProvider<PacketThemeModeEditLog> dataProvider = new AsyncDataProvider<PacketThemeModeEditLog>() {
@Override
protected void onRangeChanged(HasData<PacketThemeModeEditLog> display) {
Range range = display.getVisibleRange();
presenter.onThemeModeEditLogRequest(range.getStart(), range.getLength());
}
};
}