package org.brixcms.plugin.usermgmt.user.admin; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.RefreshingView; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.spring.injection.annot.SpringBean; import org.brixcms.plugin.jpa.web.admin.EntityModel; import org.brixcms.plugin.usermgmt.role.Role; import org.brixcms.plugin.usermgmt.user.User; import org.brixcms.plugin.usermgmt.user.UserPlugin; import org.brixcms.plugin.usermgmt.user.UserRepository; import org.brixcms.web.generic.BrixGenericPanel; /** * @author dan.simko@gmail.com */ @SuppressWarnings("serial") class UserRolesTab extends BrixGenericPanel<User> { @SpringBean private UserRepository userRepository; public UserRolesTab(String id, IModel<User> model) { super(id, new CompoundPropertyModel<>(model)); add(new RefreshingView<Role>("roles") { @Override protected Iterator<IModel<Role>> getItemModels() { List<IModel<Role>> models = new ArrayList<>(); for (Role role : userRepository.getRoles(getModelObject())) { models.add(new EntityModel<Role, Long>(role)); } return models.iterator(); } @Override protected void populateItem(Item<Role> item) { item.add(new Label("name", new PropertyModel<>(item.getModel(), "name"))); } }); add(new Link<Void>("edit") { @Override public void onClick() { UserRolesEditTab edit = new UserRolesEditTab(UserRolesTab.this.getId(), UserRolesTab.this.getModel()) { @Override void goBack() { replaceWith(UserRolesTab.this); } }; UserRolesTab.this.replaceWith(edit); } @Override public boolean isVisible() { User entity = UserRolesTab.this.getModelObject(); return UserPlugin.get().canEditUserRoles(entity); } }); } }