package fr.openwide.core.basicapp.web.application.administration.component; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.basic.MultiLineLabel; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; import org.apache.wicket.spring.injection.annot.SpringBean; import org.wicketstuff.wiquery.core.events.MouseEvent; import fr.openwide.core.basicapp.core.business.authority.BasicApplicationAuthorityUtils; import fr.openwide.core.basicapp.core.business.user.model.UserGroup; import fr.openwide.core.basicapp.core.util.binding.Bindings; import fr.openwide.core.basicapp.web.application.administration.form.UserGroupPopup; import fr.openwide.core.basicapp.web.application.administration.model.RoleDataProvider; import fr.openwide.core.jpa.security.business.authority.model.Authority; import fr.openwide.core.wicket.markup.html.panel.GenericPanel; import fr.openwide.core.wicket.more.condition.Condition; import fr.openwide.core.wicket.more.markup.html.image.BooleanIcon; import fr.openwide.core.wicket.more.markup.html.link.BlankLink; import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.modal.behavior.AjaxModalOpenBehavior; import fr.openwide.core.wicket.more.markup.repeater.sequence.SequenceView; import fr.openwide.core.wicket.more.model.BindingModel; public class UserGroupDescriptionPanel extends GenericPanel<UserGroup> { private static final long serialVersionUID = 4372823586880908316L; @SpringBean private BasicApplicationAuthorityUtils authorityUtils; public UserGroupDescriptionPanel(String id, final IModel<UserGroup> userGroupModel) { super(id, userGroupModel); UserGroupPopup updatePopup = new UserGroupPopup("updatePopup", getModel()); add( new WebMarkupContainer("lockedWarningContainer") { private static final long serialVersionUID = 1L; @Override protected void onConfigure() { super.onConfigure(); setVisible(userGroupModel.getObject().isLocked()); } }, new MultiLineLabel("description", BindingModel.of(userGroupModel, Bindings.userGroup().description())), new SequenceView<Authority>("authorities", new RoleDataProvider()) { private static final long serialVersionUID = 1L; @Override protected void populateItem(final Item<Authority> item) { item.add( new Label("authorityName", item.getModel()), new BooleanIcon( "authorityCheck", Condition.contains( BindingModel.of(userGroupModel, Bindings.userGroup().authorities()), item.getModel() ) ) ); } }, updatePopup, new BlankLink("updateButton") .add(new AjaxModalOpenBehavior(updatePopup, MouseEvent.CLICK)) ); } }