package fr.openwide.core.basicapp.web.application.administration.component; import java.util.List; import org.apache.wicket.MarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; import fr.openwide.core.basicapp.core.business.user.model.UserGroup; import fr.openwide.core.basicapp.core.business.user.service.IUserGroupService; import fr.openwide.core.basicapp.core.util.binding.Bindings; import fr.openwide.core.basicapp.web.application.BasicApplicationSession; import fr.openwide.core.basicapp.web.application.administration.page.AdministrationUserGroupDescriptionPage; import fr.openwide.core.jpa.exception.SecurityServiceException; import fr.openwide.core.jpa.exception.ServiceException; import fr.openwide.core.wicket.more.link.model.PageModel; import fr.openwide.core.wicket.more.markup.html.list.PageablePortfolioPanel; import fr.openwide.core.wicket.more.model.BindingModel; import fr.openwide.core.wicket.more.model.ReadOnlyModel; public class UserGroupPortfolioPanel extends PageablePortfolioPanel<UserGroup> { private static final long serialVersionUID = -2237967697027843105L; @SpringBean private IUserGroupService userGroupService; public UserGroupPortfolioPanel(String id, IModel<List<UserGroup>> userGroupListModel, int itemsPerPage) { super(id, userGroupListModel, itemsPerPage, "administration.usergroup.count"); } @Override protected void addItemColumns(Item<UserGroup> item, IModel<? extends UserGroup> userGroupModel) { item.add( AdministrationUserGroupDescriptionPage.linkDescriptor(ReadOnlyModel.of(userGroupModel), PageModel.of(getPage())).link("nameLink") .setBody(BindingModel.of(userGroupModel, Bindings.userGroup().name())), new Label("description", BindingModel.of(userGroupModel, Bindings.userGroup().description())) ); } @Override protected boolean isActionAvailable() { return true; } @Override protected boolean isDeleteAvailable() { return BasicApplicationSession.get().hasRoleAdmin(); } @Override protected boolean isEditAvailable() { return false; } @Override protected MarkupContainer getActionLink(String id, final IModel<? extends UserGroup> userGroupModel) { return AdministrationUserGroupDescriptionPage.linkDescriptor(ReadOnlyModel.of(userGroupModel), PageModel.of(getPage())).link(id); } @Override protected IModel<String> getActionText(IModel<? extends UserGroup> userGroupModel) { return new ResourceModel("common.portfolio.action.viewDetails"); } @Override protected boolean hasWritePermissionOn(IModel<? extends UserGroup> userGroupModel) { return !userGroupModel.getObject().isLocked(); } @Override protected void doDeleteItem(IModel<? extends UserGroup> userGroupModel) throws ServiceException, SecurityServiceException { userGroupService.delete(userGroupModel.getObject()); } @Override protected IModel<String> getDeleteConfirmationTitleModel(IModel<? extends UserGroup> userGroupModel) { return new StringResourceModel("administration.usergroup.delete.confirmation.title") .setParameters(userGroupModel.getObject().getName()); } @Override protected IModel<String> getDeleteConfirmationTextModel(IModel<? extends UserGroup> userGroupModel) { return new StringResourceModel("administration.usergroup.delete.confirmation.text") .setParameters(userGroupModel.getObject().getName()); } }