package de.flower.rmt.ui.page.account;
import de.flower.common.ui.markup.html.list.EntityListView;
import de.flower.common.ui.panel.BasePanel;
import de.flower.rmt.model.db.entity.Player;
import de.flower.rmt.model.db.entity.Player_;
import de.flower.rmt.model.db.entity.User;
import de.flower.rmt.service.IPlayerManager;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
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 java.util.List;
/**
* @author flowerrrr
*/
public class TeamsPanel extends BasePanel<User> {
@SpringBean
private IPlayerManager playerManager;
public TeamsPanel(IModel<User> model) {
super(model);
final IModel<? extends List<? extends Player>> listModel = getListModel(model);
final WebMarkupContainer noTeam = new WebMarkupContainer("noTeam") {
@Override
public boolean isVisible() {
return listModel.getObject().isEmpty();
}
};
add(noTeam);
final WebMarkupContainer container = new WebMarkupContainer("container") {
@Override
public boolean isVisible() {
return !noTeam.isVisible();
}
};
add(container);
ListView<Player> list = new EntityListView<Player>("list", listModel) {
@Override
protected void populateItem(final ListItem<Player> item) {
Player player = item.getModelObject();
item.add(new Label("name", player.getTeam().getName()));
}
};
container.add(list);
}
private IModel<? extends List<? extends Player>> getListModel(final IModel<User> model) {
return new LoadableDetachableModel<List<? extends Player>>() {
@Override
protected List<? extends Player> load() {
return playerManager.sortByTeam(playerManager.findAllByUser(model.getObject(), Player_.team));
}
};
}
}