package de.flower.rmt.ui.page.teams.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.service.ITeamManager; import de.flower.rmt.ui.model.TeamModel; import de.flower.rmt.ui.page.squad.manager.SquadPage; import de.flower.rmt.ui.page.uniforms.manager.UniformsPage; 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.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 TeamListPanel extends BasePanel { @SpringBean private ITeamManager teamManager; public TeamListPanel() { final IModel<List<Team>> listModel = getListModel(); WebMarkupContainer listContainer = new WebMarkupContainer("listContainer"); add(listContainer); listContainer.add(new WebMarkupContainer("noEntry") { @Override public boolean isVisible() { return listModel.getObject().isEmpty(); } }); listContainer.add(new EntityListView<Team>("list", listModel) { @Override public boolean isVisible() { return !getList().isEmpty(); } @Override protected void populateItem(final ListItem<Team> item) { Link squadLink = createSquadLink("squadLink", item); squadLink.add(new Label("name", item.getModelObject().getName())); item.add(squadLink); DropDownMenuPanel menuPanel = new DropDownMenuPanel(); item.add(menuPanel); menuPanel.addLink(createSquadLink("link", item), "button.edit.squad"); menuPanel.addLink(createUniformLink("link", item), "button.edit.uniform"); menuPanel.addLink(new Link("link") { @Override public void onClick() { setResponsePage(new TeamEditPage(new TeamModel(item.getModel()))); } }, "button.edit"); menuPanel.addLink(new AjaxLinkWithConfirmation("link", new ResourceModel("manager.teams.delete.confirm")) { @Override public void onClick(AjaxRequestTarget target) { teamManager.delete(item.getModelObject().getId()); AjaxEventSender.entityEvent(this, Team.class); } }, "button.delete"); } }); listContainer.add(new AjaxEventListener(Team.class)); } private IModel<List<Team>> getListModel() { return new LoadableDetachableModel<List<Team>>() { @Override protected List<Team> load() { return teamManager.findAll(); } }; } private Link createSquadLink(String id, final ListItem<Team> item) { return new Link(id) { @Override public void onClick() { setResponsePage(new SquadPage(new TeamModel(item.getModel()))); } }; } private Link createUniformLink(String id, final ListItem<Team> item) { return new Link(id) { @Override public void onClick() { setResponsePage(new UniformsPage(item.getModel())); } }; } }