package fr.openwide.maven.artifact.notifier.web.application.administration.page;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import fr.openwide.core.wicket.more.link.descriptor.IPageLinkDescriptor;
import fr.openwide.core.wicket.more.link.descriptor.builder.LinkDescriptorBuilder;
import fr.openwide.core.wicket.more.markup.html.template.model.BreadCrumbElement;
import fr.openwide.core.wicket.more.model.GenericEntityModel;
import fr.openwide.maven.artifact.notifier.core.business.artifact.model.Artifact;
import fr.openwide.maven.artifact.notifier.core.business.artifact.service.IArtifactService;
import fr.openwide.maven.artifact.notifier.web.application.administration.component.ArtifactFollowersPanel;
import fr.openwide.maven.artifact.notifier.web.application.administration.template.AdministrationTemplate;
import fr.openwide.maven.artifact.notifier.web.application.artifact.component.ArtifactDescriptionPanel;
import fr.openwide.maven.artifact.notifier.web.application.artifact.component.ArtifactProjectPanel;
import fr.openwide.maven.artifact.notifier.web.application.artifact.component.DeprecatedArtifactPanel;
import fr.openwide.maven.artifact.notifier.web.application.navigation.link.parameter.mapping.ArtifactLinkParameterMappingEntry;
public class AdministrationArtifactDescriptionPage extends AdministrationTemplate {
private static final long serialVersionUID = -550100874222819991L;
@SpringBean
private IArtifactService artifactService;
private IModel<Artifact> artifactModel;
public static IPageLinkDescriptor linkDescriptor(IModel<Artifact> artifactModel) {
return new LinkDescriptorBuilder()
.page(AdministrationArtifactDescriptionPage.class)
.map(new ArtifactLinkParameterMappingEntry(artifactModel)).mandatory()
.build();
}
public AdministrationArtifactDescriptionPage(PageParameters parameters) {
super(parameters);
artifactModel = new GenericEntityModel<Long, Artifact>(null);
linkDescriptor(artifactModel).extractSafely(parameters, AdministrationArtifactPortfolioPage.linkDescriptor());
addBreadCrumbElement(new BreadCrumbElement(new ResourceModel("navigation.administration.artifact"),
AdministrationArtifactPortfolioPage.linkDescriptor()));
addBreadCrumbElement(new BreadCrumbElement(new StringResourceModel("artifact.description.pageTitle", artifactModel),
AdministrationArtifactDescriptionPage.linkDescriptor(artifactModel)));
add(new Label("pageTitle", new StringResourceModel("artifact.description.pageTitle", artifactModel)));
add(new DeprecatedArtifactPanel("deprecated", artifactModel));
add(new ArtifactDescriptionPanel("description", artifactModel));
add(new ArtifactProjectPanel("project", artifactModel));
add(new ArtifactFollowersPanel("followers", artifactModel));
}
@Override
protected Class<? extends WebPage> getSecondMenuPage() {
return AdministrationArtifactPortfolioPage.class;
}
@Override
protected void onDetach() {
super.onDetach();
if (artifactModel != null) {
artifactModel.detach();
}
}
}