package fr.openwide.core.showcase.web.application.portfolio.form; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxButton; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.RequiredTextField; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.link.AbstractLink; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import fr.openwide.core.showcase.core.business.user.model.User; import fr.openwide.core.showcase.core.business.user.service.IUserService; import fr.openwide.core.showcase.core.util.binding.Bindings; import fr.openwide.core.showcase.web.application.portfolio.page.UserDescriptionPage; import fr.openwide.core.wicket.more.markup.html.feedback.FeedbackUtils; import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.modal.component.AbstractAjaxModalPopupPanel; import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.modal.component.DelegatedMarkupPanel; import fr.openwide.core.wicket.more.model.BindingModel; public class EditUserPopupPanel extends AbstractAjaxModalPopupPanel<User> { private static final long serialVersionUID = 3066059572097078436L; private static final Logger LOGGER = LoggerFactory.getLogger(EditUserPopupPanel.class); @SpringBean private IUserService userService; private Form<User> userEditForm; public EditUserPopupPanel(String id, IModel<User> userModel) { super(id, userModel); } @Override protected Component createHeader(String wicketId) { return new Label(wicketId, new ResourceModel("user.form.editTitle")); } @Override protected Component createBody(String wicketId) { DelegatedMarkupPanel body = new DelegatedMarkupPanel(wicketId, EditUserPopupPanel.class); userEditForm = new Form<User>("userEditForm", getModel()); body.add(userEditForm); TextField<String> userNameField = new RequiredTextField<String>("userName", BindingModel.of(getModel(), Bindings.user().userName())); userNameField.setLabel(new ResourceModel("user.username")); userEditForm.add(userNameField); TextField<String> firstNameField = new RequiredTextField<String>("firstName", BindingModel.of(getModel(), Bindings.user().firstName())); firstNameField.setLabel(new ResourceModel("user.firstname")); userEditForm.add(firstNameField); TextField<String> lastNameField = new RequiredTextField<String>("lastName", BindingModel.of(getModel(), Bindings.user().lastName())); lastNameField.setLabel(new ResourceModel("user.lastname")); userEditForm.add(lastNameField); TextField<String> emailField = new RequiredTextField<String>("email", BindingModel.of(getModel(), Bindings.user().email())); emailField.setLabel(new ResourceModel("user.email")); userEditForm.add(emailField); CheckBox activeCheckBox = new CheckBox("active", BindingModel.of(getModel(), Bindings.user().active())); activeCheckBox.setLabel(new ResourceModel("user.active")); userEditForm.add(activeCheckBox); TextField<String> phoneNumberField = new RequiredTextField<String>("phoneNumber", BindingModel.of(getModel(), Bindings.user().phoneNumber())); phoneNumberField.setLabel(new ResourceModel("user.phone")); userEditForm.add(phoneNumberField); TextField<String> gsmNumberField = new TextField<String>("gsmNumber", BindingModel.of(getModel(), Bindings.user().gsmNumber())); gsmNumberField.setLabel(new ResourceModel("user.phone")); userEditForm.add(gsmNumberField); TextField<String> faxNumberField = new TextField<String>("faxNumber", BindingModel.of(getModel(), Bindings.user().faxNumber())); faxNumberField.setLabel(new ResourceModel("user.phone")); userEditForm.add(faxNumberField); return body; } @Override protected Component createFooter(String wicketId) { DelegatedMarkupPanel footer = new DelegatedMarkupPanel(wicketId, EditUserPopupPanel.class); // Bouton valider AjaxButton valider = new AjaxButton("save", userEditForm) { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { User user = EditUserPopupPanel.this.getModelObject(); try { userService.update(user); getSession().success(getString("common.success")); UserDescriptionPage.linkDescriptor(EditUserPopupPanel.this.getModel()).setResponsePage(); } catch (Exception e) { LOGGER.error("Error during user update", e); getSession().error(getString("common.error.unexpected")); } } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { FeedbackUtils.refreshFeedback(target, getPage()); } }; footer.add(valider); // Bouton annuler AbstractLink annuler = new AbstractLink("cancel"){ private static final long serialVersionUID = 1L; }; addCancelBehavior(annuler); footer.add(annuler); return footer; } @Override public IModel<String> getCssClassNamesModel() { return Model.of("user-form"); } }