package de.flower.rmt.ui.page.opponents.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.panel.BasePanel; import de.flower.rmt.model.db.entity.Opponent; import de.flower.rmt.service.IOpponentManager; import de.flower.rmt.ui.model.OpponentModel; import de.flower.rmt.ui.panel.DropDownMenuPanel; import de.flower.rmt.ui.panel.ListViewPanel; import org.apache.wicket.ajax.AjaxRequestTarget; 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 OpponentListPanel extends BasePanel { @SpringBean private IOpponentManager opponentManager; public OpponentListPanel() { final IModel<List<Opponent>> listModel = getListModel(); ListViewPanel listView = new ListViewPanel<Opponent>("listContainer", listModel, new ResourceModel("manager.teams.noentry")) { // @Override protected void populateItem(final ListItem<Opponent> item) { Link editLink = createEditLink("editLink", item); editLink.add(new Label("name", item.getModelObject().getName())); item.add(editLink); DropDownMenuPanel menuPanel = new DropDownMenuPanel(); item.add(menuPanel); menuPanel.addLink(createEditLink("link", item), "button.edit"); menuPanel.addLink(new AjaxLinkWithConfirmation("link", new ResourceModel("manager.opponent.delete.confirm")) { @Override public void onClick(AjaxRequestTarget target) { opponentManager.delete(item.getModelObject().getId()); AjaxEventSender.entityEvent(this, Opponent.class); } }, "button.delete"); } }; listView.add(new AjaxEventListener(Opponent.class)); add(listView); } private IModel<List<Opponent>> getListModel() { return new LoadableDetachableModel<List<Opponent>>() { @Override protected List<Opponent> load() { return opponentManager.findAll(); } }; } private Link createEditLink(String id, final ListItem<Opponent> item) { return new Link(id) { @Override public void onClick() { setResponsePage(new OpponentEditPage(new OpponentModel(item.getModel()))); } }; } }