package tv.dyndns.kishibe.qmaclone.client.ranking;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import tv.dyndns.kishibe.qmaclone.client.ServiceAsync;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.inject.Inject;
public class ThemeSelectorPresenter {
interface View extends IsWidget {
void setTheme(List<List<String>> themes);
}
private static final Logger logger = Logger.getLogger(ThemeSelectorPresenter.class.toString());
private final ThemeRankingPresenter themeRankingPresenter;
private View view;
@Inject
public ThemeSelectorPresenter(ServiceAsync service, ThemeRankingPresenter themeRankingPresenter) {
this.themeRankingPresenter = Preconditions.checkNotNull(themeRankingPresenter);
service.getThemeModeThemes(callbackGetThemeModeThemes);
}
public void setView(View view) {
this.view = Preconditions.checkNotNull(view);
}
@VisibleForTesting
final AsyncCallback<List<List<String>>> callbackGetThemeModeThemes = new AsyncCallback<List<List<String>>>() {
@Override
public void onSuccess(List<List<String>> result) {
view.setTheme(result);
}
@Override
public void onFailure(Throwable caught) {
logger.log(Level.WARNING, "テーマモードの取得に失敗しました", caught);
}
};
public void onThemeSelected(String theme) {
themeRankingPresenter.onThemeSelected(theme);
}
}