package tv.dyndns.kishibe.qmaclone.client.ranking; import java.util.List; import tv.dyndns.kishibe.qmaclone.client.packet.PacketMonth; 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 DateRangeSelectorViewImpl extends Tree implements DateRangeSelectorPresenter.View, SelectionHandler<TreeItem> { private static final String LABEL_ALL = "全範囲"; private static final String LABEL_OLD = "旧ランキング"; private static final String YEAR = "年"; private static final String MONTH = "月"; private DateRangeSelectorPresenter presenter; @Inject public DateRangeSelectorViewImpl(DateRangeSelectorPresenter presenter) { this.presenter = Preconditions.checkNotNull(presenter); presenter.setView(this); setAnimationEnabled(true); addSelectionHandler(this); setPixelSize(ThemeRankingViewImpl.LEFT_WIDTH, 200); } @Override public void setDateRange(List<PacketMonth> months) { clear(); int lastYear = 0; TreeItem lastYearTreeItem = null; for (PacketMonth month : months) { if (month.year != lastYear) { lastYear = month.year; lastYearTreeItem = addTextItem(month.year + "年"); } lastYearTreeItem.addTextItem(month.year + "年" + month.month + "月"); } addTextItem(LABEL_ALL); addTextItem(LABEL_OLD); } @Override public void onSelection(SelectionEvent<TreeItem> event) { String label = event.getSelectedItem().getText(); if (label.equals(LABEL_ALL)) { presenter.onAllSelected(); } else if (label.equals(LABEL_OLD)) { presenter.onOldSelected(); } else if (label.endsWith(YEAR)) { int year = Integer.valueOf(label.substring(0, label.length() - 1)); presenter.onYearSelected(year); } else { int year = Integer.valueOf(label.substring(0, label.indexOf(YEAR))); int month = Integer.valueOf(label.substring(label.indexOf(YEAR) + 1, label.indexOf(MONTH))); presenter.onMonthSelected(year, month); } } }