package hu.sch.web.wicket.components; import hu.sch.web.wicket.components.customlinks.UserLink; import hu.sch.domain.user.User; import hu.sch.services.UserManagerLocal; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.CheckBox; 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.model.CompoundPropertyModel; import org.apache.wicket.model.PropertyModel; /** * * @author aldaris */ public abstract class EditDelegatesForm extends Form { @Inject UserManagerLocal userManager; private List<ExtendedUser> lines = new ArrayList<ExtendedUser>(); public EditDelegatesForm(String name, List<User> users) { super(name); for (User user : users) { lines.add(new ExtendedUser(user)); } WebMarkupContainer table = new WebMarkupContainer("table"); ListView<ExtendedUser> members = new ListView<ExtendedUser>("members", lines) { @Override protected void populateItem(ListItem<ExtendedUser> item) { ExtendedUser ext = item.getModelObject(); User user = ext.getUser(); item.setModel(new CompoundPropertyModel<ExtendedUser>(ext)); item.add(new UserLink("userLink", user)); item.add(new Label("user.nickName")); CheckBox checkBox = new CheckBox("check", new PropertyModel<Boolean>(ext, "selected")); if (user.getDelegated()) { checkBox.getModel().setObject(true); } item.add(checkBox); onPopulateItem(item, user); } }; members.setReuseItems(true); table.add(members); add(table); } public List<ExtendedUser> getLines() { return lines; } protected abstract void onPopulateItem(ListItem<ExtendedUser> item, User user); @Override protected abstract void onSubmit(); protected static class ExtendedUser implements Serializable { private User user; private boolean selected; public ExtendedUser(User newuser) { this.user = newuser; } public User getUser() { return user; } public void setUser(User newUser) { this.user = newUser; } public boolean getSelected() { return selected; } public void setSelected(boolean isSelected) { this.selected = isSelected; } } }