package fr.openwide.maven.artifact.notifier.web.application.artifact.component;
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.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.ResourceModel;
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.artifact.model.Artifact;
import fr.openwide.maven.artifact.notifier.core.business.artifact.model.ArtifactDeprecationStatus;
import fr.openwide.maven.artifact.notifier.core.util.binding.Binding;
import fr.openwide.maven.artifact.notifier.web.application.artifact.page.ArtifactDescriptionPage;
public class DeprecatedArtifactPanel extends GenericPanel<Artifact> {
private static final long serialVersionUID = -3067355181564265555L;
public DeprecatedArtifactPanel(String id, IModel<? extends Artifact> model) {
super(id, model);
final IModel<Artifact> relatedArtifactModel = BindingModel.of(getModel(), Binding.artifact().relatedArtifact());
WebMarkupContainer container = new WebMarkupContainer("deprecatedContainer") {
private static final long serialVersionUID = 1L;
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(ArtifactDeprecationStatus.DEPRECATED.equals(getModelObject().getDeprecationStatus()));
}
};
container.add(new Label("deprecated", new ResourceModel("artifact.description.deprecated")));
WebMarkupContainer relatedArtifactContainer = new WebMarkupContainer("relatedArtifactContainer") {
private static final long serialVersionUID = 1L;
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(relatedArtifactModel.getObject() != null);
}
};
container.add(relatedArtifactContainer);
Link<Void> relatedArtifactLink = ArtifactDescriptionPage.linkDescriptor(relatedArtifactModel).link("relatedArtifactLink");
relatedArtifactLink.add(new Label("relatedArtifact", new LoadableDetachableModel<String>() {
private static final long serialVersionUID = 1L;
@Override
protected String load() {
Artifact relatedArtifact = relatedArtifactModel.getObject();
if (relatedArtifact != null) {
return relatedArtifact.getArtifactKey().getKey();
}
return null;
}
}));
relatedArtifactContainer.add(relatedArtifactLink);
add(container);
}
}