package de.flower.rmt.ui.page.event.player;
import de.flower.common.ui.behavior.AbsolutePositionBehavior;
import de.flower.common.ui.panel.BasePanel;
import de.flower.common.util.Check;
import de.flower.rmt.model.db.entity.Invitation;
import de.flower.rmt.model.db.entity.Lineup;
import de.flower.rmt.model.db.entity.LineupItem;
import de.flower.rmt.model.db.entity.QLineupItem;
import de.flower.rmt.model.db.entity.event.Event;
import de.flower.rmt.service.ILineupManager;
import de.flower.rmt.ui.model.LineupModel;
import de.flower.rmt.ui.page.event.manager.lineup.dragndrop.EntityLabel;
import org.apache.wicket.markup.html.WebMarkupContainer;
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.LoadableDetachableModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* read-only version of LineupEditPanel.
*
* @author flowerrrr
*/
public class LineupPanel extends BasePanel {
private final static Logger log = LoggerFactory.getLogger(LineupPanel.class);
@SpringBean
private ILineupManager lineupManager;
public LineupPanel(String id, IModel<Event> model) {
super(id);
Check.notNull(model);
final IModel<Lineup> lineupModel = new LineupModel(model);
final WebMarkupContainer grid = new WebMarkupContainer("grid");
add(grid);
final WebMarkupContainer itemContainer = new WebMarkupContainer("itemContainer");
grid.add(itemContainer);
// render existing lineup items
final IModel<List<LineupItem>> listModel = getListModel(model);
final ListView<LineupItem> items = new ListView<LineupItem>("items", listModel) {
@Override
protected void populateItem(final ListItem<LineupItem> item) {
LineupItem lineupItem = item.getModelObject();
Invitation invitation = lineupItem.getInvitation();
EntityLabel entityLabel = new EntityLabel(invitation.getId(), invitation.getName(), false);
entityLabel.add(new AbsolutePositionBehavior(lineupItem.getTop(), lineupItem.getLeft()));
item.add(entityLabel);
}
@Override
public boolean isVisible() {
final Lineup lineup = lineupModel.getObject();
return lineup != null && lineup.isPublished();
}
};
itemContainer.add(items);
grid.add(new WebMarkupContainer("noLineup") {
@Override
public boolean isVisible() {
return !items.isVisible();
}
});
}
private IModel<List<LineupItem>> getListModel(final IModel<Event> model) {
return new LoadableDetachableModel<List<LineupItem>>() {
@Override
protected List<LineupItem> load() {
return lineupManager.findLineupItems(model.getObject(), QLineupItem.lineupItem.invitation);
}
};
}
}