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.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.link.descriptor.parameter.CommonParameters;
import fr.openwide.core.wicket.more.markup.html.template.model.BreadCrumbElement;
import fr.openwide.core.wicket.more.model.BindingModel;
import fr.openwide.core.wicket.more.model.GenericEntityModel;
import fr.openwide.maven.artifact.notifier.core.business.user.model.User;
import fr.openwide.maven.artifact.notifier.core.business.user.service.IUserService;
import fr.openwide.maven.artifact.notifier.core.util.binding.Binding;
import fr.openwide.maven.artifact.notifier.web.application.administration.component.UserArtifactsPanel;
import fr.openwide.maven.artifact.notifier.web.application.administration.component.UserMembershipsPanel;
import fr.openwide.maven.artifact.notifier.web.application.administration.component.UserProfilPanel;
import fr.openwide.maven.artifact.notifier.web.application.administration.template.AdministrationTemplate;
public class AdministrationUserDescriptionPage extends AdministrationTemplate {
private static final long serialVersionUID = -550100874222819991L;
@SpringBean
private IUserService userService;
private IModel<User> userModel;
public static IPageLinkDescriptor linkDescriptor(IModel<User> userModel) {
return new LinkDescriptorBuilder()
.page(AdministrationUserDescriptionPage.class)
.map(CommonParameters.ID, userModel, User.class).mandatory()
.build();
}
public AdministrationUserDescriptionPage(PageParameters parameters) {
super(parameters);
userModel = new GenericEntityModel<Long, User>(null);
linkDescriptor(userModel).extractSafely(parameters, AdministrationUserPortfolioPage.linkDescriptor());
addBreadCrumbElement(new BreadCrumbElement(new ResourceModel("navigation.administration.user"),
AdministrationUserPortfolioPage.linkDescriptor()));
addBreadCrumbElement(new BreadCrumbElement(BindingModel.of(userModel, Binding.user().displayName()),
AdministrationUserDescriptionPage.linkDescriptor(userModel)));
add(new Label("pageTitle", BindingModel.of(userModel, Binding.user().displayName())));
add(new UserProfilPanel("profile", userModel));
add(new UserMembershipsPanel("groups", userModel));
add(new UserArtifactsPanel("artifacts", userModel));
}
@Override
protected Class<? extends WebPage> getSecondMenuPage() {
return AdministrationUserPortfolioPage.class;
}
@Override
protected void onDetach() {
super.onDetach();
if (userModel != null) {
userModel.detach();
}
}
}