package fr.openwide.core.showcase.web.application.widgets.page; import java.util.List; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.model.util.CollectionModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.spring.injection.annot.SpringBean; import com.google.common.collect.Lists; import fr.openwide.core.showcase.core.business.user.model.User; import fr.openwide.core.showcase.core.business.user.service.IUserService; import fr.openwide.core.showcase.core.util.binding.Bindings; import fr.openwide.core.showcase.web.application.widgets.component.UserSelect2AjaxMultipleChoice; import fr.openwide.core.showcase.web.application.widgets.component.UserSelect2DropDownChoice; import fr.openwide.core.showcase.web.application.widgets.component.UserSelect2ListMultipleChoice; import fr.openwide.core.wicket.more.link.descriptor.IPageLinkDescriptor; import fr.openwide.core.wicket.more.link.descriptor.builder.LinkDescriptorBuilder; import fr.openwide.core.wicket.more.markup.html.template.model.BreadCrumbElement; import fr.openwide.core.wicket.more.model.BindingModel; public class SelectBoxPage extends WidgetsTemplate { private static final long serialVersionUID = -4802009584951257187L; public static final IPageLinkDescriptor linkDescriptor() { return LinkDescriptorBuilder.start() .page(SelectBoxPage.class); } @SpringBean private IUserService userService; private IModel<User> userModel = Model.of(); private List<User> selectedUsers = Lists.newArrayList(); private List<User> ajaxSelectedUsers = Lists.newArrayList(); public SelectBoxPage(PageParameters parameters) { super(parameters); addBreadCrumbElement(new BreadCrumbElement(new ResourceModel("widgets.menu.selectbox"), SelectBoxPage.linkDescriptor())); List<User> userList = userService.list(); // User DropDownChoice with optgroups add(new Label("dropDownSelectedUser", BindingModel.of(userModel, Bindings.user().fullName()))); UserSelect2DropDownChoice dropDownChoice = new UserSelect2DropDownChoice("dropDownChoice", userModel, userList); add(newShowcaseForm("single", dropDownChoice)); // User ListMultipleChoice with optgroups add(new ListView<User>("listSelectedUser", selectedUsers) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<User> item) { item.add(new Label("userName", BindingModel.of(item.getModel(), Bindings.user().fullName()))); } }); UserSelect2ListMultipleChoice listMultipleChoice = new UserSelect2ListMultipleChoice("listMultipleChoice", new CollectionModel<User>(selectedUsers), userList); add(newShowcaseForm("multi", listMultipleChoice)); // Ajax add(new ListView<User>("ajaxSelectedUser", ajaxSelectedUsers) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<User> item) { item.add(new Label("userName", BindingModel.of(item.getModel(), Bindings.user().fullName()))); } }); UserSelect2AjaxMultipleChoice ajaxMultipleChoice = new UserSelect2AjaxMultipleChoice("ajaxMultipleChoice", new CollectionModel<User>(ajaxSelectedUsers)); add(newShowcaseForm("ajax", ajaxMultipleChoice)); } private <T> Form<T> newShowcaseForm(String id, FormComponent<T> child) { Form<T> form = new Form<T>(id, child.getModel()); form.add(child); return form; } @Override protected Class<? extends WebPage> getSecondMenuPage() { return SelectBoxPage.class; } }