package hu.sch.web.kp.svie; import hu.sch.domain.enums.SvieMembershipType; import hu.sch.domain.user.User; import hu.sch.domain.user.UserAttributeName; import hu.sch.services.SvieManagerLocal; import hu.sch.web.wicket.components.ValidationSimpleFormComponentLabel; import hu.sch.web.wicket.behaviors.ValidationStyleBehavior; import hu.sch.web.wicket.components.customlinks.AttributeAjaxFallbackLink; import hu.sch.web.kp.KorokPage; import hu.sch.util.PatternHolder; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.Radio; import org.apache.wicket.markup.html.form.RadioGroup; import org.apache.wicket.markup.html.form.RequiredTextField; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.validation.validator.PatternValidator; /** * TODO: testing! * * @author aldaris */ public final class SvieRegistration extends KorokPage { @Inject SvieManagerLocal svieManager; private User user; private SvieMembershipType choosed; /** * Ezzel a konstruktorral egyszerre gyorsítjuk a kódot és megoldjuk, hogy az * oldal ne legyen könyvjelzőzhető * @param _user A felhasználó, aki szeretne SVIE-be regisztrálni */ public SvieRegistration(final User _user) { createNavbarWithSupportId(34); this.user = _user; setHeaderLabelText("SVIE Regisztráció"); Form<User> form = new Form<User>("registrationForm", new CompoundPropertyModel<>(user)) { @Override protected void onSubmit() { svieManager.applyToSvie(user, choosed); continueToOriginalDestination(); setResponsePage(getApplication().getHomePage()); } }; form.setModel(new CompoundPropertyModel<User>(user)); RequiredTextField<String> mothersNameTF = new RequiredTextField<String>("mothersName"); mothersNameTF.add(new PatternValidator(PatternHolder.NAME_PATTERN)); mothersNameTF.add(new ValidationStyleBehavior()); mothersNameTF.setLabel(new Model<String>("Anyja neve *")); form.add(mothersNameTF); form.add(new ValidationSimpleFormComponentLabel("mothersNameLabel", mothersNameTF)); RequiredTextField<String> estGradTF = new RequiredTextField<String>("estimatedGraduationYear"); estGradTF.add(new PatternValidator(PatternHolder.GRADUATION_YEAR_PATTERN)); estGradTF.add(new ValidationStyleBehavior()); estGradTF.setLabel(new Model<String>("Egyetem várható befejezési ideje *")); form.add(estGradTF); form.add(new ValidationSimpleFormComponentLabel("estGradLabel", estGradTF)); RequiredTextField<String> homePostalAddressTF = new RequiredTextField<String>("homeAddress"); homePostalAddressTF.add(new ValidationStyleBehavior()); homePostalAddressTF.setLabel(new Model<String>("Cím *")); form.add(homePostalAddressTF); form.add(new ValidationSimpleFormComponentLabel("homePostalAddressLabel", homePostalAddressTF)); AttributeAjaxFallbackLink attrLink = new AttributeAjaxFallbackLink("homePostalAddressAttributeLink", "homePostalAddressAttributeImg", UserAttributeName.HOME_ADDRESS, user); attrLink.setUser(user); form.add(attrLink); final RadioGroup<SvieMembershipType> radioGroup = new RadioGroup<SvieMembershipType>("choices", new PropertyModel<SvieMembershipType>(this, "choosed")); List<SvieMembershipType> msTypes = new ArrayList<SvieMembershipType>(); msTypes.add(SvieMembershipType.PARTOLOTAG); msTypes.add(SvieMembershipType.RENDESTAG); ListView lv = new ListView("choiceList", msTypes) { @Override protected void populateItem(ListItem item) { item.add(new Radio("radio", item.getModel())); item.add(new Label("name", item.getModelObject().toString())); } }; radioGroup.add(lv); radioGroup.setRequired(true); form.add(radioGroup); add(form); } }