package de.flower.rmt.ui.page.calendar;
import de.flower.common.ui.ajax.event.AjaxEventSender;
import de.flower.common.ui.panel.BasePanel;
import de.flower.rmt.service.ICalendarManager;
import de.flower.rmt.service.type.CalendarFilter;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
import org.apache.wicket.markup.html.form.CheckBoxMultipleChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import java.util.List;
/**
* @author flowerrrr
*/
public class CalendarSelectPanel extends BasePanel<List<CalendarFilter>> {
@SpringBean
private ICalendarManager calendarManager;
public CalendarSelectPanel(final IModel<List<CalendarFilter>> model) {
super(model);
final Form form = new Form("form");
add(form);
final CheckBoxMultipleChoice<CalendarFilter> c = new CheckBoxMultipleChoice<>("calendars", model, getCalendarFilters());
c.setChoiceRenderer(new IChoiceRenderer<CalendarFilter>() {
@Override
public Object getDisplayValue(final CalendarFilter object) {
String s;
s = new ResourceModel(CalendarFilter.Type.getResourceKey(object.type)).getObject();
if (object.type == CalendarFilter.Type.TEAM) {
s += " " + object.team.getName();
}
return s;
}
@Override
public String getIdValue(final CalendarFilter object, final int index) {
return "" + index;
}
});
c.add(new AjaxFormChoiceComponentUpdatingBehavior() {
@Override
protected void onUpdate(final AjaxRequestTarget target) {
// notify listeners about model change.
AjaxEventSender.send(this.getComponent(), model);
}
});
form.add(c);
}
private IModel<List<CalendarFilter>> getCalendarFilters() {
return new LoadableDetachableModel<List<CalendarFilter>>() {
@Override
protected List<CalendarFilter> load() {
return calendarManager.getCalendarFilters();
}
};
}
}