wrote new reusable panel for selecting projectclasses using checkboxes

This commit is contained in:
Fredrik Friis 2012-02-14 11:44:45 +09:00
parent e9e4781fb5
commit 25df883fac
2 changed files with 120 additions and 0 deletions
src/main/java/se/su/dsv/scipro/reusable

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<body>
<wicket:panel>
<form wicket:id="form">
<div><span wicket:id="name"></span> <input wicket:id="check" type="checkbox"/></div>
</form>
</wicket:panel>
</body>
</html>

@ -0,0 +1,109 @@
package se.su.dsv.scipro.reusable;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
public abstract class FilterProjectClassPanel extends Panel{
private static final long serialVersionUID = 1L;
private ProjectClassForm projectClassForm;
public FilterProjectClassPanel(String id) {
super(id);
projectClassForm = new ProjectClassForm("form");
add(projectClassForm);
}
public Collection<ProjectClass> getSelectedProjectClasses(){
return projectClassForm.getSelectedProjectClasses();
}
/**
* Override this method to do something.
*/
public abstract void onUpdateFilter(AjaxRequestTarget target);
private class ProjectClassForm extends Form {
private static final long serialVersionUID = 1L;
@SpringBean
private ProjectClassDao projectClassDao;
private Collection<ProjectClass> selectedProjectClasses;
public Collection<ProjectClass> getSelectedProjectClasses(){
return selectedProjectClasses;
}
public ProjectClassForm(String id) {
super(id);
ArrayList<Wrapper> wrapperCollection = new ArrayList<Wrapper>();
for (ProjectClass pc : projectClassDao.findAll()){
wrapperCollection.add(new Wrapper(pc));
}
ListView<Wrapper> listView = new ListView<Wrapper>(id, wrapperCollection){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Wrapper> item) {
final Wrapper wrapper = (Wrapper) item.getModelObject();
item.add(new Label("name", wrapper.getProjectClass().getName()));
item.add(new AjaxCheckBox("check", new PropertyModel<Boolean>(wrapper, "selected")){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
if (getModelObject() == true){
selectedProjectClasses.add(wrapper.getProjectClass());
}
else if (getModelObject() == false){
selectedProjectClasses.remove(wrapper.getProjectClass());
}
}
});
}
};
listView.setReuseItems(true);
add(listView);
}
}
private class Wrapper implements Serializable {
private final ProjectClass projectClass;
private Boolean selected = Boolean.FALSE;
public Wrapper(ProjectClass projectClass){
this.projectClass = projectClass;
}
public boolean getSelected(){
return selected;
}
public void setSelected(boolean selected){
this.selected = selected;
}
public ProjectClass getProjectClass(){
return projectClass;
}
// public void setProjectClass(ProjectClass projectClass){
// this.projectClass = projectClass;
// }
}
}