package fr.openwide.maven.artifact.notifier.web.application.project.component;
import java.util.List;
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 fr.openwide.core.wicket.markup.html.basic.CoreLabel;
import fr.openwide.core.wicket.markup.html.basic.CountLabel;
import fr.openwide.core.wicket.markup.html.basic.HideableExternalLink;
import fr.openwide.core.wicket.markup.html.panel.GenericPanel;
import fr.openwide.core.wicket.more.model.BindingModel;
import fr.openwide.maven.artifact.notifier.core.business.project.model.ItemAdditionalInformation;
import fr.openwide.maven.artifact.notifier.core.business.project.model.ProjectLicense;
import fr.openwide.maven.artifact.notifier.core.util.binding.Binding;
public class ItemAdditionalInformationPanel extends GenericPanel<ItemAdditionalInformation> {
private static final long serialVersionUID = -1722482141482578013L;
public ItemAdditionalInformationPanel(String id, IModel<? extends ItemAdditionalInformation> model) {
super(id, model);
// Website link
add(new HideableExternalLink("websiteLink", BindingModel.of(model, Binding.itemAdditionalInformation().websiteUrl().url())));
// Issue tracker link
add(new HideableExternalLink("issueTrackerLink", BindingModel.of(model, Binding.itemAdditionalInformation().issueTrackerUrl().url())));
// Scm link
add(new HideableExternalLink("scmLink", BindingModel.of(model, Binding.itemAdditionalInformation().scmUrl().url())));
// Changelog link
add(new HideableExternalLink("changelogLink", BindingModel.of(model, Binding.itemAdditionalInformation().changelogUrl().url())));
// Licenses
final IModel<List<ProjectLicense>> licensesModel = BindingModel.of(model, Binding.itemAdditionalInformation().licenses());
add(new CountLabel("licensesHeader", "project.description.links.licenses", new LoadableDetachableModel<Number>() {
private static final long serialVersionUID = 1L;
@Override
protected Number load() {
List<ProjectLicense> licenses = licensesModel.getObject();
if (licenses != null) {
return licenses.size();
}
return 0;
}
}));
add(new ListView<ProjectLicense>("licenses", licensesModel) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<ProjectLicense> item) {
item.add(new CoreLabel("licenseShortLabel", BindingModel.of(item.getModel(), Binding.projectLicense().shortLabel()))
.hideIfEmpty());
item.add(new Label("licenseLabel", BindingModel.of(item.getModel(), Binding.projectLicense().label())));
item.add(new HideableExternalLink("licenseLink", BindingModel.of(item.getModel(), Binding.projectLicense().licenseUrl())));
}
@Override
protected void onConfigure() {
super.onConfigure();
List<ProjectLicense> licenses = licensesModel.getObject();
setVisible(licenses != null && !licenses.isEmpty());
}
});
}
}