package edu.ualberta.med.biobank.mvp.presenter.impl; import com.google.inject.Inject; import com.google.web.bindery.event.shared.EventBus; import edu.ualberta.med.biobank.common.action.Dispatcher; import edu.ualberta.med.biobank.model.ActivityStatus; import edu.ualberta.med.biobank.mvp.presenter.HasState; import edu.ualberta.med.biobank.mvp.presenter.IStatefulPresenter; import edu.ualberta.med.biobank.mvp.presenter.impl.ActivityStatusComboPresenter.View; import edu.ualberta.med.biobank.mvp.presenter.state.ModelState; import edu.ualberta.med.biobank.mvp.user.ui.SelectedValueField; import edu.ualberta.med.biobank.mvp.util.Converter; import edu.ualberta.med.biobank.mvp.view.IView; public class ActivityStatusComboPresenter extends AbstractPresenter<View> implements IStatefulPresenter { private final static OptionLabeller LABELLER = new OptionLabeller(); private final ModelState state = new ModelState(); @SuppressWarnings("unused") private final Dispatcher dispatcher; public interface View extends IView { SelectedValueField<ActivityStatus> getActivityStatus(); } @Inject public ActivityStatusComboPresenter(View view, EventBus eventBus, Dispatcher dispatcher) { super(view, eventBus); this.dispatcher = dispatcher; view.getActivityStatus().setOptionLabeller(LABELLER); } @Override protected void onBind() { state.add(view.getActivityStatus()); } @Override protected void onUnbind() { state.dispose(); } @Override public HasState getState() { return state; } public ActivityStatus getActivityStatus() { return view.getActivityStatus().getValue(); } public void setActivityStatus(ActivityStatus activityStatus) { loadOptions(); view.getActivityStatus().setValue(activityStatus); } private void loadOptions() { view.getActivityStatus() .setOptions(ActivityStatus.valuesList()); } private static class OptionLabeller implements Converter<ActivityStatus, String> { @Override public String convert(ActivityStatus activityStatus) { return activityStatus.getName(); } } }