package de.flower.rmt.ui.page.uniforms.manager; import de.flower.common.ui.ajax.event.AjaxEventListener; import de.flower.common.ui.ajax.event.AjaxEventSender; import de.flower.common.ui.ajax.markup.html.AjaxLinkWithConfirmation; import de.flower.common.ui.markup.html.list.EntityListView; import de.flower.common.ui.panel.BasePanel; import de.flower.rmt.model.db.entity.Team; import de.flower.rmt.model.db.entity.Uniform; import de.flower.rmt.service.IUniformManager; import de.flower.rmt.ui.model.UniformModel; import de.flower.rmt.ui.panel.DropDownMenuPanel; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.model.CompoundPropertyModel; 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 UniformListPanel extends BasePanel<Team> { @SpringBean private IUniformManager uniformManager; public UniformListPanel(final IModel<Team> model) { super(model); final IModel<List<Uniform>> listModel = getListModel(model); WebMarkupContainer uniformListContainer = new WebMarkupContainer("listContainer"); add(uniformListContainer); uniformListContainer.add(new WebMarkupContainer("noUniform") { @Override public boolean isVisible() { return listModel.getObject().isEmpty(); } }); uniformListContainer.add(new EntityListView<Uniform>("uniformList", listModel) { @Override public boolean isVisible() { return !getList().isEmpty(); } @Override protected void populateItem(final ListItem<Uniform> item) { final Uniform uniform = item.getModelObject(); item.setModel(new CompoundPropertyModel<Uniform>(item.getModel())); Link editLink = createEditLink("editLink", item, model); editLink.add(new Label("name", uniform.getName())); item.add(editLink); item.add(new Label("shirt")); item.add(new Label("shorts")); item.add(new Label("socks")); DropDownMenuPanel menuPanel = new DropDownMenuPanel(); item.add(menuPanel); menuPanel.addLink(createEditLink("link", item, model), "button.edit"); menuPanel.addLink(new AjaxLinkWithConfirmation("link", new ResourceModel("manager.uniforms.delete.confirm")) { @Override public void onClick(AjaxRequestTarget target) { uniformManager.delete(item.getModelObject().getId()); AjaxEventSender.entityEvent(this, Uniform.class); } }, "button.delete"); } }); uniformListContainer.add(new AjaxEventListener(Uniform.class)); } private IModel<List<Uniform>> getListModel(final IModel<Team> model) { return new LoadableDetachableModel<List<Uniform>>() { @Override protected List<Uniform> load() { return uniformManager.findAllByTeam(model.getObject()); } }; } private Link createEditLink(String id, final ListItem<Uniform> item, final IModel<Team> teamModel) { return new Link(id) { @Override public void onClick() { setResponsePage(new UniformEditPage(new UniformModel(item.getModel().getObject()), teamModel)); } }; } }