package de.flower.rmt.ui.page.event.manager.invitees; import de.flower.common.ui.ajax.event.AjaxEventListener; import de.flower.common.ui.ajax.event.AjaxEventSender; import de.flower.common.ui.ajax.markup.html.AjaxLink; import de.flower.common.ui.panel.BasePanel; import de.flower.common.ui.tooltips.TooltipBehavior; import de.flower.common.util.Check; import de.flower.rmt.model.db.entity.Invitation; import de.flower.rmt.model.db.entity.event.Event; import de.flower.rmt.service.IInvitationManager; import de.flower.rmt.ui.model.UserModel; import de.flower.rmt.ui.page.user.manager.PlayerPage; 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.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 InviteeListPanel extends BasePanel { @SpringBean private IInvitationManager invitationManager; public InviteeListPanel(String id, IModel<Event> model) { super(id); Check.notNull(model); final IModel<List<Invitation>> listModel = getListModel(model); ListViewPanel listView = new ListViewPanel<Invitation>("listContainer", listModel, new ResourceModel("manager.event.invitee.noentry")) { // @Override protected void populateItem(final ListItem<Invitation> item) { Invitation invitation = item.getModelObject(); Link editLink = createEditLink("editLink", item); editLink.add(new Label("name", item.getModelObject().getName())); item.add(editLink); WebMarkupContainer invitationNotSent = new WebMarkupContainer("invitationNotSent"); invitationNotSent.setVisible(!invitation.isInvitationSent() && invitation.hasEmail()); invitationNotSent.add(new TooltipBehavior(new ResourceModel("manager.invitee.tooltip.invitiation.not.send"))); item.add(invitationNotSent); DropDownMenuPanel menuPanel = new DropDownMenuPanel(); item.add(menuPanel); // menuPanel.addLink(createEditLink("link", item), "button.edit"); menuPanel.addLink(new AjaxLink("link") { @Override public void onClick(AjaxRequestTarget target) { invitationManager.delete(item.getModelObject().getId()); AjaxEventSender.entityEvent(this, Invitation.class); } }, "button.delete"); } }; listView.add(new AjaxEventListener(Invitation.class)); add(listView); } private Link createEditLink(String id, final ListItem<Invitation> item) { return new Link(id) { @Override public void onClick() { setResponsePage(new PlayerPage(new UserModel(item.getModel().getObject().getUser()))); } }; } private IModel<List<Invitation>> getListModel(final IModel<Event> model) { return new LoadableDetachableModel<List<Invitation>>() { @Override protected List<Invitation> load() { return invitationManager.findAllByEventSortedByName(model.getObject()); } }; } }