package de.flower.rmt.ui.page.user.manager; import de.flower.common.ui.ajax.event.AjaxEventSender; import de.flower.common.ui.panel.BasePanel; import de.flower.rmt.model.db.entity.User; import de.flower.rmt.security.ISecurityService; import de.flower.rmt.service.IRoleManager; import de.flower.rmt.service.IUserManager; import de.flower.rmt.ui.markup.html.form.EntityForm; import de.flower.rmt.ui.markup.html.form.field.AbstractFormFieldPanel; import de.flower.rmt.ui.markup.html.form.field.CheckBoxPanel; import de.flower.rmt.ui.markup.html.form.field.TextFieldPanel; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.spring.injection.annot.SpringBean; import org.wicketstuff.jsr303.validator.FormComponentBeanValidator; /** * @author flowerrrr */ public class PlayerGeneralPanel extends BasePanel<User> { @SpringBean private IUserManager userManager; @SpringBean private IRoleManager roleManager; @SpringBean private ISecurityService securityService; private IModel<Boolean> managerModel; public PlayerGeneralPanel(String id, IModel<User> model) { super(id, model); managerModel = getManagerModel(model); EntityForm<User> form = new EntityForm<User>("form", model) { @Override protected void onSubmit(AjaxRequestTarget target, Form<User> form) { User user = form.getModelObject(); userManager.save(user, managerModel.getObject()); AjaxEventSender.entityEvent(this, User.class); } }; add(form); TextFieldPanel fullname = new TextFieldPanel("fullname"); form.add(fullname); fullname.addValidator(new FormComponentBeanValidator(User.Validation.INameUnique.class)); TextFieldPanel email = new TextFieldPanel("email"); form.add(email); email.addValidator(new FormComponentBeanValidator(User.Validation.IEmailUnique.class)); TextFieldPanel secondEmail = new TextFieldPanel("secondEmail"); form.add(secondEmail); TextFieldPanel phoneNumber = new TextFieldPanel("phoneNumber"); form.add(phoneNumber); CheckBoxPanel manager = new CheckBoxPanel("manager", new CheckBox(AbstractFormFieldPanel.ID, managerModel)); manager.setVisible(!securityService.isCurrentUser(model.getObject())); form.add(manager); } private Model<Boolean> getManagerModel(final IModel<User> model) { User user = model.getObject(); if (user.isNew()) { return Model.of(false); } else { return Model.of(roleManager.isManager(user.getId())); } } }