package sushi.application.components.table;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import sushi.application.components.table.model.AbstractDataProvider;
/**
* This class renders a checkbox inside of a form.
* The checkbox informs the given {@link AbstractDataProvider} about ajax state changes.
* @author micha
*/
public class SelectEntryPanel extends Panel {
private static final long serialVersionUID = 1L;
/**
* Constructor for a checkbox inside of a form.
* The checkbox informs the given {@link AbstractDataProvider} about ajax state changes.
* @param id
* @param entryId
* @param dataProvider
*/
public SelectEntryPanel(String id, final int entryId, final AbstractDataProvider dataProvider) {
super(id);
Form<Void> form = new Form<Void>("form");
CheckBox checkBox = new CheckBox("checkBoxID", Model.of(dataProvider.isEntrySelected(entryId)));
checkBox.add(new AjaxFormComponentUpdatingBehavior("onchange"){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
if(dataProvider.isEntrySelected(entryId)){
dataProvider.deselectEntry(entryId);
} else if(!dataProvider.isEntrySelected(entryId)){
dataProvider.selectEntry(entryId);
}
}
});
form.add(checkBox);
add(form);
}
}