package it.agilis.mens.azzeroCO2.client.forms.amministrazione; import com.extjs.gxt.ui.client.Style; import com.extjs.gxt.ui.client.binding.FormBinding; import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.ComponentEvent; import com.extjs.gxt.ui.client.event.KeyListener; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.mvc.Dispatcher; import com.extjs.gxt.ui.client.util.Margins; import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.form.FormPanel; import com.extjs.gxt.ui.client.widget.form.TextField; import com.extjs.gxt.ui.client.widget.layout.BorderLayout; import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; import com.google.gwt.user.client.Element; import it.agilis.mens.azzeroCO2.client.mvc.events.RegisterEvents; import it.agilis.mens.azzeroCO2.shared.model.registrazione.UserInfoModel; /** * Created by IntelliJ IDEA. * User: serenadimaida * Date: 26/08/11 * Time: 22:25 * To change this template use File | Settings | File Templates. */ public class UserInfo extends LayoutContainer { private FormBinding binding; private FormPanel centre; private UserInfoModel userInfoModel = new UserInfoModel(); protected TextField<String> userName; protected TextField<String> password; protected TextField<String> repassword; protected TextField<String> nome; protected TextField<String> cognome; protected TextField<String> ragioneSociale; protected TextField<String> indirizzo; protected TextField<String> citta; protected TextField<String> provincia; protected TextField<String> cap; protected TextField<String> telefono; protected TextField<String> fax; protected TextField<String> cellulare; protected TextField<String> email; protected TextField<String> reemail; protected TextField<String> partitaIvaCF; public UserInfo() { centre = createForm(); binding = new FormBinding(centre, true); binding.bind(userInfoModel); } @Override protected void onRender(Element parent, int index) { super.onRender(parent, index); BorderLayout layout = new BorderLayout(); setLayout(layout); // centre.setHeading("CouponModel"); centre.setHeaderVisible(false); centre.setScrollMode(Style.Scroll.AUTO); centre.setHeight(700); centre.setFrame(true); BorderLayoutData centerData = new BorderLayoutData(Style.LayoutRegion.CENTER); centerData.setMargins(new Margins(0)); add(centre, centerData); } private FormPanel createForm() { FormPanel formPanel = new FormPanel(); formPanel.setWidth(1); formPanel.setHeaderVisible(false); formPanel.setScrollMode(Style.Scroll.AUTO); formPanel.setButtonAlign(Style.HorizontalAlignment.LEFT); KeyListener keyListener = new KeyListener() { public void componentKeyUp(ComponentEvent event) { validate(); } }; userName = new TextField<String>(); userName.setFieldLabel("Username"); userName.setName("userName"); userName.setEnabled(false); userName.setMinLength(6); userName.getMessages().setMinLengthText("la username deve essere di almeno 6 caratteri"); userName.addKeyListener(keyListener); userName.setLabelStyle("white-space:nowrap"); userName.setStyleAttribute("padding-left", "80px"); //userName.setLabelStyle("width:150"); formPanel.add(userName); password = new TextField<String>(); password.setMinLength(6); password.getMessages().setMinLengthText("la password deve essere di almeno 6 caratteri"); password.setPassword(true); password.setFieldLabel("Password"); password.setName("password"); password.addKeyListener(keyListener); password.setLabelStyle("white-space:nowrap"); password.setStyleAttribute("padding-left", "80px"); //password.setLabelStyle("width:150"); formPanel.add(password); repassword = new TextField<String>(); repassword.setMinLength(6); repassword.getMessages().setMinLengthText("Ripeti la password"); repassword.setPassword(true); repassword.setFieldLabel("Ripeti password"); repassword.setName("repassword"); repassword.addKeyListener(keyListener); repassword.setLabelStyle("white-space:nowrap"); repassword.setStyleAttribute("padding-left", "80px"); //repassword.setLabelStyle("width:150"); formPanel.add(repassword); nome = new TextField<String>(); nome.setMinLength(2); nome.getMessages().setMinLengthText("Nome troppo breve"); nome.setFieldLabel("Nome"); nome.setName("nome"); nome.addKeyListener(keyListener); nome.setLabelStyle("white-space:nowrap"); nome.setStyleAttribute("padding-left", "80px"); //nome.setLabelStyle("width:150"); formPanel.add(nome); cognome = new TextField<String>(); cognome.setMinLength(2); cognome.getMessages().setMinLengthText("Cognome troppo breve"); cognome.setFieldLabel("Cognome"); cognome.setName("cognome"); cognome.addKeyListener(keyListener); cognome.setLabelStyle("white-space:nowrap"); cognome.setStyleAttribute("padding-left", "80px"); //cognome.setLabelStyle("width:150"); formPanel.add(cognome); ragioneSociale = new TextField<String>(); ragioneSociale.setMinLength(2); ragioneSociale.getMessages().setMinLengthText("Ragione sociale troppo breve"); ragioneSociale.setFieldLabel("Rag. sociale"); ragioneSociale.setName("ragioneSociale"); ragioneSociale.addKeyListener(keyListener); ragioneSociale.setLabelStyle("white-space:nowrap"); ragioneSociale.setStyleAttribute("padding-left", "80px"); //ragioneSociale.setLabelStyle("width:150"); formPanel.add(ragioneSociale); indirizzo = new TextField<String>(); indirizzo.setMinLength(2); indirizzo.getMessages().setMinLengthText("Indirizzo troppo breve"); indirizzo.setFieldLabel("Indirizzo"); indirizzo.setName("indirizzo"); indirizzo.addKeyListener(keyListener); indirizzo.setLabelStyle("white-space:nowrap"); indirizzo.setStyleAttribute("padding-left", "80px"); //indirizzo.setLabelStyle("width:150"); formPanel.add(indirizzo); citta = new TextField<String>(); citta.setMinLength(2); citta.getMessages().setMinLengthText("Nome città troppo breve"); citta.setFieldLabel("Città"); citta.setName("citta"); citta.addKeyListener(keyListener); citta.setLabelStyle("white-space:nowrap"); citta.setStyleAttribute("padding-left", "80px"); //citta.setLabelStyle("width:150"); formPanel.add(citta); provincia = new TextField<String>(); provincia.setMinLength(2); provincia.setMaxLength(2); provincia.getMessages().setMaxLengthText("Inserisci la sigla della provincia"); provincia.setFieldLabel("Provincia"); provincia.setName("provincia"); provincia.addKeyListener(keyListener); provincia.setLabelStyle("white-space:nowrap"); provincia.setStyleAttribute("padding-left", "80px"); //provincia.setLabelStyle("width:150"); formPanel.add(provincia); cap = new TextField<String>(); cap.setMinLength(5); cap.setMaxLength(5); cap.getMessages().setMinLengthText("Il CAP deve essere di 5 cifre"); cap.setRegex("[0-9]+"); cap.getMessages().setRegexText("Inserisci 5 cifre"); cap.setFieldLabel("CAP"); cap.setName("cap"); cap.addKeyListener(keyListener); cap.setLabelStyle("white-space:nowrap"); cap.setStyleAttribute("padding-left", "80px"); //cap.setLabelStyle("width:150"); formPanel.add(cap); partitaIvaCF = new TextField<String>(); partitaIvaCF.setMinLength(11); partitaIvaCF.setMaxLength(17); partitaIvaCF.setName("pivaCF"); partitaIvaCF.getMessages().setMinLengthText("La partita iva deve essere lunga 11 cifre e il codice fiscale 17 caratteri"); partitaIvaCF.setFieldLabel("P.Iva/CF"); partitaIvaCF.addKeyListener(keyListener); partitaIvaCF.setLabelStyle("white-space:nowrap"); partitaIvaCF.setStyleAttribute("padding-left", "80px"); //partitaIvaCF.setLabelStyle("width:150"); formPanel.add(partitaIvaCF); telefono = new TextField<String>(); telefono.setMinLength(2); telefono.getMessages().setMinLengthText("Numero troppo corto"); telefono.setFieldLabel("Telefono"); telefono.setName("telefono"); telefono.addKeyListener(keyListener); telefono.setRegex("[0-9]+"); telefono.getMessages().setRegexText("Solo valori numerici"); telefono.setLabelStyle("white-space:nowrap"); telefono.setStyleAttribute("padding-left", "80px"); //telefono.setLabelStyle("width:150"); formPanel.add(telefono); fax = new TextField<String>(); fax.setMinLength(2); fax.getMessages().setMinLengthText("Numero fax troppo corto"); fax.setFieldLabel("Fax"); fax.setName("fax"); fax.addKeyListener(keyListener); fax.setRegex("^[0-9]+"); fax.getMessages().setRegexText("Solo valori numerici"); fax.setLabelStyle("white-space:nowrap"); fax.setStyleAttribute("padding-left", "80px"); //fax.setLabelStyle("width:150"); formPanel.add(fax); cellulare = new TextField<String>(); cellulare.setMinLength(2); cellulare.getMessages().setMinLengthText("Numero cellulare troppo breve"); cellulare.setFieldLabel("Cellulare"); cellulare.setName("cellulare"); cellulare.addKeyListener(keyListener); cellulare.setRegex("^[0-9]+"); cellulare.getMessages().setRegexText("Solo valori numerici"); cellulare.setLabelStyle("white-space:nowrap"); cellulare.setStyleAttribute("padding-left", "80px"); //cellulare.setLabelStyle("width:150"); formPanel.add(cellulare); email = new TextField<String>(); email.setMinLength(2); email.setFieldLabel("Email"); email.setName("email"); email.addKeyListener(keyListener); email.setRegex("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$"); email.getMessages().setRegexText("Email errata"); email.setLabelStyle("white-space:nowrap"); email.setStyleAttribute("padding-left", "80px"); //email.setLabelStyle("width:150"); formPanel.add(email); reemail = new TextField<String>(); reemail.setMinLength(2); reemail.setFieldLabel("Ripeti email"); reemail.setName("reemail"); reemail.addKeyListener(keyListener); reemail.setRegex("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$"); reemail.getMessages().setRegexText("Ripeti emil"); reemail.setLabelStyle("white-space:nowrap"); reemail.setStyleAttribute("padding-left", "80px"); //reemail.setLabelStyle("width:150"); formPanel.add(reemail); Button conferma = new Button("Conferma"); conferma.addSelectionListener(new SelectionListener<ButtonEvent>() { public void componentSelected(ButtonEvent ce) { if (binding != null) { Dispatcher.forwardEvent(RegisterEvents.SaveUserInfo, binding.getModel()); } } }); formPanel.add(conferma); return formPanel; } protected boolean hasValue(TextField<String> field) { return field.getValue() != null && field.getValue().length() > 0; } protected void validate() { Button saveButton = new Button("Modifica profilo"); saveButton.setEnabled( hasValue(userName) && hasValue(password) && hasValue(partitaIvaCF) && hasValue(reemail) && hasValue(repassword) && hasValue(citta) && hasValue(email) && hasValue(cap) && hasValue(indirizzo) && hasValue(provincia) && ((hasValue(nome) && hasValue(cognome)) || hasValue(ragioneSociale)) && email.getValue().equals(reemail.getValue()) && password.getValue().equals(repassword.getValue()) ); } public void setUserInStore(UserInfoModel userInfoModel) { binding.bind(userInfoModel); } public void clear() { binding.bind(userInfoModel); } }