package tv.dyndns.kishibe.qmaclone.client.chat; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; import tv.dyndns.kishibe.qmaclone.client.Service; import tv.dyndns.kishibe.qmaclone.client.constant.Constant; import com.google.gwt.core.client.GWT; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.cellview.client.SimplePager; import com.google.gwt.user.cellview.client.SimplePager.TextLocation; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HasValue; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.datepicker.client.DatePicker; public class PanelPast extends Composite implements ValueChangeHandler<Date>, HasValue<Date> { private static final Logger logger = Logger.getLogger(PanelPast.class.getName()); private static PanelPastUiBinder uiBinder = GWT.create(PanelPastUiBinder.class); interface PanelPastUiBinder extends UiBinder<Widget, PanelPast> { } @UiField(provided = true) SimplePager simplePagerHeader; @UiField(provided = true) SimplePager simplePagerFooter; @UiField DatePicker datePicker; @UiField(provided = true) CellListChatLog cellListChatLog; public PanelPast() { cellListChatLog = new CellListChatLog(new PastChatDataProvider(this)); final SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class); simplePagerHeader = new SimplePager(TextLocation.CENTER, pagerResources, true, 10, true); simplePagerHeader.setDisplay(cellListChatLog); simplePagerHeader.setPageSize(Constant.CHAT_MAX_RESPONSES); simplePagerFooter = new SimplePager(TextLocation.CENTER, pagerResources, true, 10, true); simplePagerFooter.setDisplay(cellListChatLog); simplePagerFooter.setPageSize(Constant.CHAT_MAX_RESPONSES); initWidget(uiBinder.createAndBindUi(this)); datePicker.addValueChangeHandler(this); } @Override public void onValueChange(ValueChangeEvent<Date> event) { final Date value = event.getValue(); final int year = value.getYear() + 1900; final int month = value.getMonth() + 1; final int date = value.getDate(); final int hours = 0; final int minutes = 0; final int seconds = 0; Service.Util.getInstance().getChatLogId(year, month, date, hours, minutes, seconds, callbackGetChatLogId); } private final AsyncCallback<Integer> callbackGetChatLogId = new AsyncCallback<Integer>() { @Override public void onSuccess(Integer result) { final int start = result; simplePagerHeader.setPageStart(start); } @Override public void onFailure(Throwable caught) { logger.log(Level.WARNING, "チャット過去ログのレス番号の取得に失敗しました", caught); } }; @Override public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Date> handler) { return datePicker.addValueChangeHandler(handler); } @Override public Date getValue() { return datePicker.getValue(); } @Override public void setValue(Date value) { datePicker.setValue(value); datePicker.setCurrentMonth(value); } @Override public void setValue(Date value, boolean fireEvents) { datePicker.setValue(value, fireEvents); datePicker.setCurrentMonth(value); } public SimplePager getPager() { return simplePagerHeader; } }