Rev 1690 | Rev 1779 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.structure;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.List;import org.tela_botanica.client.ComposantClass;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.RegistreId;import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;import org.tela_botanica.client.composants.ChampNombre;import org.tela_botanica.client.composants.InfoLogger;import org.tela_botanica.client.composants.pagination.ProxyValeur;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Information;import org.tela_botanica.client.modeles.InterneValeur;import org.tela_botanica.client.modeles.InterneValeurListe;import org.tela_botanica.client.modeles.Valeur;import org.tela_botanica.client.modeles.ValeurListe;import org.tela_botanica.client.modeles.personne.Personne;import org.tela_botanica.client.modeles.structure.Structure;import org.tela_botanica.client.modeles.structure.StructureAPersonne;import org.tela_botanica.client.modeles.structure.StructureAPersonneListe;import org.tela_botanica.client.modeles.structure.StructureConservation;import org.tela_botanica.client.modeles.structure.StructureValorisation;import org.tela_botanica.client.synchronisation.Sequenceur;import org.tela_botanica.client.util.Debug;import org.tela_botanica.client.util.Pattern;import org.tela_botanica.client.util.UtilString;import org.tela_botanica.client.vues.Formulaire;import org.tela_botanica.client.vues.FormulaireOnglet;import com.extjs.gxt.ui.client.Registry;import com.extjs.gxt.ui.client.data.ModelData;import com.extjs.gxt.ui.client.data.ModelType;import com.extjs.gxt.ui.client.event.BaseEvent;import com.extjs.gxt.ui.client.event.ComponentEvent;import com.extjs.gxt.ui.client.event.Events;import com.extjs.gxt.ui.client.event.Listener;import com.extjs.gxt.ui.client.event.SelectionChangedEvent;import com.extjs.gxt.ui.client.event.SelectionChangedListener;import com.extjs.gxt.ui.client.store.ListStore;import com.extjs.gxt.ui.client.widget.LayoutContainer;import com.extjs.gxt.ui.client.widget.TabItem;import com.extjs.gxt.ui.client.widget.button.Button;import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;import com.extjs.gxt.ui.client.widget.form.ComboBox;import com.extjs.gxt.ui.client.widget.form.Field;import com.extjs.gxt.ui.client.widget.form.FieldSet;import com.extjs.gxt.ui.client.widget.form.HiddenField;import com.extjs.gxt.ui.client.widget.form.LabelField;import com.extjs.gxt.ui.client.widget.form.NumberField;import com.extjs.gxt.ui.client.widget.form.RadioGroup;import com.extjs.gxt.ui.client.widget.form.TextArea;import com.extjs.gxt.ui.client.widget.form.TextField;import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;import com.extjs.gxt.ui.client.widget.grid.CellEditor;import com.extjs.gxt.ui.client.widget.grid.EditorGrid;import com.extjs.gxt.ui.client.widget.layout.ColumnData;import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;import com.extjs.gxt.ui.client.widget.layout.FitLayout;import com.extjs.gxt.ui.client.widget.layout.FormData;import com.extjs.gxt.ui.client.widget.layout.FormLayout;import com.google.gwt.core.client.GWT;import com.google.gwt.i18n.client.DateTimeFormat;import com.google.gwt.i18n.client.NumberFormat;import com.google.gwt.user.client.Window;public class StructureFormIdentification extends FormulaireOnglet implements Rafraichissable {public TabItem personnelOnglet;public TabItem conservationOnglet;public TabItem valorisationOnglet;public HiddenField<String> idStructureChp;public Structure identification;public ListStore<Valeur> magazinLstpr;public ComboBox<Valeur> comboLstpr;public ListStore<Valeur> magazinLstpu;public ComboBox<Valeur> comboLstpu;public ComboBox<InterneValeur> comboAcronyme;public TextField<String> ihChp;public TextField<String> mnhnChp;public ComboBox<InterneValeur> comboTypeStructure;public TextField<String> nomStructureChp;public TextField<String> dateFondationChp;public TextArea descriptionChp;public TextArea conditionAccesChp;public TextArea conditionUsageChp;public TextArea adrChp;public TextArea adrComplementChp;public TextField<String> cpChp;public TextField<String> villeChp;public ListStore<Valeur> magazinRegion;public ComboBox<Valeur> comboRegion;public ListStore<Valeur> magazinPays;public ChampComboBoxRechercheTempsReelPaginable comboPays;public TextField<String> latitudeChp;public TextField<String> longitudeChp;public TextField<String> telChp;public TextField<String> faxChp;public TextField<String> emailChp;public TextField<String> urlChp;public StructureAPersonneListe personnel;public StructureAPersonneListe personnelAjoute;public StructureAPersonneListe personnelModifie;public StructureAPersonneListe personnelSupprime;public NumberField nbreTotalPersonneStructureChp;public EditorGrid<StructureAPersonne> grillePersonnel;public ListStore<StructureAPersonne> personnelGrilleMagazin;public StructureConservation conservation;public RadioGroup formationMarkRGrpChp;public RadioGroup interetFormationMarkRGrpChp;public RadioGroup collectionCommuneMarkRGrpChp;public RadioGroup accesControleMarkRGrpChp;public RadioGroup restaurationMarkRGrpChp;public RadioGroup traitementMarkRGrpChp;public RadioGroup collectionAcquisitionMarkRGrpChp;public RadioGroup echantillonAcquisitionMarkRGrpChp;public TextField<String> localStockageAutreChp;public TextField<String> meubleStockageAutreChp;public TextField<String> parametreStockageAutreChp;public TextField<String> collectionAutreAutreChp;public TextField<String> autreCollectionAutreChp;public TextField<String> opRestauAutreChp;public TextField<String> autreMaterielAutreChp;public TextField<String> poisonTraitementAutreChp;public TextField<String> traitementAutreChp;public TextField<String> insecteTraitementAutreChp;public TextField<String> actionAutreChp;public TextField<String> provenanceRechercheAutreChp;public TextField<String> typeRechercheAutreChp;public CheckBoxGroup localStockageTrukCacGrpChp;public LayoutContainer localStockageTrukCp;public CheckBoxGroup meubleStockageTrukCacGrpChp;public LayoutContainer meubleStockageTrukCp;public CheckBoxGroup parametreStockageTrukCacGrpChp;public LayoutContainer parametreStockageTrukCp;public LayoutContainer collectionAutreTrukCp;public CheckBoxGroup collectionAutreTrukCacGrpChp;public CheckBoxGroup opRestauTrukCacGrpChp;public LayoutContainer opRestauTrukCp;public CheckBoxGroup autreMaterielTrukCacGrpChp;public LayoutContainer autreMaterielTrukCp;public LayoutContainer traitementTrukCp;public CheckBoxGroup traitementTrukCacGrpChp;public LayoutContainer poisonTraitementTrukCp;public LayoutContainer insecteTraitementTrukCp;public CheckBoxGroup insecteTraitementTrukCacGrpChp;public CheckBoxGroup poisonTraitementTrukCacGrpChp;public LayoutContainer autreCollectionTrukCp;public CheckBoxGroup autreCollectionTrukCacGrpChp;public LayoutContainer provenanceRechercheTrukCp;public CheckBoxGroup provenanceRechercheTrukCacGrpChp;public CheckBoxGroup typeRechercheTrukCacGrpChp;public LayoutContainer typeRechercheTrukCp;public TextField<String> futureActionChp;public TextField<String> sansMotifAccesChp;public TextField<String> avecMotifAccesChp;public TextField<String> formationChp;public RadioGroup traitementAcquisitionMarkRGrpChp;public LabelField traitementAcquisitionMarkLabel;public RadioGroup materielConservationCeRGrpChp;public StructureValorisation valorisation;public RadioGroup actionMarkRGrpChp;public LayoutContainer actionTrukCp;public CheckBoxGroup actionTrukCacGrpChp;public RadioGroup futureActionMarkRGrpChp;public RadioGroup rechercheMarkRGrpChp;public RadioGroup sansMotifAccesMarkRGrpChp;public RadioGroup avecMotifAccesMarkRGrpChp;public TextField<String> publicationChp;public LayoutContainer materielConservationCp;public ListStore<Personne> personneExistanteMagazin;public ChampComboBoxRechercheTempsReelPaginable personneExistanteCombo;public Button supprimerPersonnelBtn;public CellEditor fonctionEditor;public List<Valeur> fonctionsListe;public Sequenceur sequenceur;public Structure structure;public Rafraichissable vueExterneARafraichirApresValidation;private String ID = "identification";Formulaire formulaireCourant;public StructureFormIdentification(Formulaire formulaireCourant) {initialiserOnglet(formulaireCourant);setLayout(new FitLayout());setId(ID);setText(Mediateur.i18nC.structureInfoGeneral());setStyleAttribute("padding", "0");this.formulaireCourant = formulaireCourant;//+-----------------------------------------------------------------------------------------------------------+//+-----------------------------------------------------------------------------------------------------------+// Champs cachésidStructureChp = new HiddenField<String>();//+-----------------------------------------------------------------------------------------------------------+// Fieldset IDENTITÉFieldSet fieldSetIdentite = new FieldSet();fieldSetIdentite.setHeadingHtml("Identité");fieldSetIdentite.setCollapsible(true);fieldSetIdentite.setLayout(Formulaire.creerFormLayout(120, LabelAlign.LEFT));fieldSetIdentite.setAutoHeight(true);nomStructureChp = new TextField<String>();nomStructureChp.setTabIndex(tabIndex++);nomStructureChp.setFieldLabel("Nom de la structure");nomStructureChp.setAllowBlank(false);nomStructureChp.getMessages().setBlankText("Ce champ est obligatoire.");nomStructureChp.addStyleName(ComposantClass.OBLIGATOIRE);nomStructureChp.addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire());fieldSetIdentite.add(nomStructureChp, new FormData(450, 0));// Création du sous-formulaire : AcronymeLayoutContainer ligne = new LayoutContainer();ligne.setLayout(new ColumnLayout());ligne.setSize(600, -1);LayoutContainer gauche = new LayoutContainer();gauche.setLayout(Formulaire.creerFormLayout(120, LabelAlign.LEFT));LayoutContainer droite = new LayoutContainer();droite.setLayout(Formulaire.creerFormLayout(10, LabelAlign.LEFT));ListStore<InterneValeur> acronymes = new ListStore<InterneValeur>();acronymes.add(InterneValeurListe.getTypeAcronyme());comboAcronyme = new ComboBox<InterneValeur>();comboAcronyme.setTabIndex(tabIndex++);comboAcronyme.setEmptyText("Sélectioner un type d'acronyme...");comboAcronyme.setFieldLabel("Type d'acronyme");comboAcronyme.setDisplayField("nom");comboAcronyme.setStore(acronymes);comboAcronyme.setEditable(false);comboAcronyme.setTypeAhead(true);comboAcronyme.setTriggerAction(TriggerAction.ALL);comboAcronyme.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {@Overridepublic void selectionChanged(SelectionChangedEvent<InterneValeur> se) {String acronymeAbr = se.getSelectedItem().getAbr();if (acronymeAbr.equals("IH")) {mnhnChp.hide();ihChp.show();} else if (acronymeAbr.equals("MNHN")) {ihChp.hide();mnhnChp.show();} else if (acronymeAbr.equals("")) {ihChp.hide();mnhnChp.hide();comboAcronyme.clearSelections();}}});gauche.add(comboAcronyme, new FormData("95%"));ihChp = new TextField<String>();ihChp.setTabIndex(tabIndex++);ihChp.setLabelSeparator("");ihChp.setToolTip("Index Herbariorum : herbier de plus de 5000 échantillons");ihChp.hide();droite.add(ihChp, new FormData("95%"));mnhnChp = new TextField<String>();mnhnChp.setTabIndex(tabIndex++);mnhnChp.setLabelSeparator("");mnhnChp.setToolTip("Acronyme MNHN : herbier de moins de 5000 échantillons");mnhnChp.hide();droite.add(mnhnChp, new FormData("95%"));ligne.add(gauche, new ColumnData(.5));ligne.add(droite, new ColumnData(.5));fieldSetIdentite.add(ligne);// Création du sous-formulaire : Type de StructureLayoutContainer ligneTs = new LayoutContainer();ligneTs.setLayout(new ColumnLayout());ligneTs.setSize(600, -1);LayoutContainer gaucheTs = new LayoutContainer();gaucheTs.setLayout(Formulaire.creerFormLayout(120, LabelAlign.LEFT));LayoutContainer droiteTs = new LayoutContainer();droiteTs.setLayout(Formulaire.creerFormLayout(10, LabelAlign.LEFT));ListStore<InterneValeur> typesStructure = new ListStore<InterneValeur>();typesStructure.add(InterneValeurListe.getTypeStructure());comboTypeStructure = new ComboBox<InterneValeur>();comboTypeStructure.setTabIndex(tabIndex++);comboTypeStructure.setEmptyText("Sélectioner un type de structure...");comboTypeStructure.setFieldLabel("Statut des structures");comboTypeStructure.setDisplayField("nom");comboTypeStructure.setStore(typesStructure);comboTypeStructure.setEditable(false);comboTypeStructure.setTypeAhead(true);comboTypeStructure.setTriggerAction(TriggerAction.ALL);comboTypeStructure.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {@Overridepublic void selectionChanged(SelectionChangedEvent<InterneValeur> se) {String typeAbr = se.getSelectedItem().getAbr();if (typeAbr.equals("stpu")) {comboLstpr.hide();comboLstpu.show();} else if (typeAbr.equals("stpr")) {comboLstpu.hide();comboLstpr.show();} else if (typeAbr.equals("")) {comboLstpr.hide();comboLstpu.hide();comboTypeStructure.clearSelections();}}});gaucheTs.add(comboTypeStructure, new FormData("95%"));magazinLstpu = new ListStore<Valeur>();comboLstpu = new ComboBox<Valeur>();comboLstpu.setTabIndex(tabIndex++);//comboLstpu.setFieldLabel("Statut des structures publiques");comboLstpu.setLabelSeparator("");comboLstpu.setDisplayField("nom");comboLstpu.setEditable(false);comboLstpu.setTriggerAction(TriggerAction.ALL);comboLstpu.setStore(magazinLstpu);comboLstpu.hide();droiteTs.add(comboLstpu, new FormData("95%"));mediateur.obtenirListeValeurEtRafraichir(this, "stpu", sequenceur);magazinLstpr = new ListStore<Valeur>();comboLstpr = new ComboBox<Valeur>();comboLstpr.setTabIndex(tabIndex++);//comboLstpr.setFieldLabel("Statut des structures privées");comboLstpr.setLabelSeparator("");comboLstpr.setDisplayField("nom");comboLstpr.setEditable(false);comboLstpr.setTriggerAction(TriggerAction.ALL);comboLstpr.setStore(magazinLstpr);comboLstpr.hide();droiteTs.add(comboLstpr, new FormData("95%"));mediateur.obtenirListeValeurEtRafraichir(this, "stpr", sequenceur);ligneTs.add(gaucheTs, new ColumnData(0.5));ligneTs.add(droiteTs, new ColumnData(0.5));fieldSetIdentite.add(ligneTs);dateFondationChp = new TextField();dateFondationChp.setTabIndex(tabIndex++);dateFondationChp.setFieldLabel("Date de fondation");fieldSetIdentite.add(dateFondationChp);nbreTotalPersonneStructureChp = new NumberField();nbreTotalPersonneStructureChp.setFieldLabel("Nombre de personnes travaillant dans l'institution");nbreTotalPersonneStructureChp.setFormat(NumberFormat.getFormat("#"));nbreTotalPersonneStructureChp.setToolTip(i18nC.champNumerique());nbreTotalPersonneStructureChp.setAllowDecimals(false);nbreTotalPersonneStructureChp.setAllowNegative(false);nbreTotalPersonneStructureChp.setEmptyText("");fieldSetIdentite.add(nbreTotalPersonneStructureChp);this.add(fieldSetIdentite);//+-----------------------------------------------------------------------------------------------------------+// Fieldset DESCRIPTIONFieldSet fieldSetDescription = new FieldSet();fieldSetDescription.setHeadingHtml("Description");fieldSetDescription.setCollapsible(true);fieldSetDescription.setLayout(Formulaire.creerFormLayout(120, LabelAlign.LEFT));descriptionChp = new TextArea();descriptionChp.setTabIndex(tabIndex++);descriptionChp.setFieldLabel("Description");fieldSetDescription.add(descriptionChp, new FormData(550, 0));conditionAccesChp = new TextArea();conditionAccesChp.setTabIndex(tabIndex++);conditionAccesChp.setFieldLabel("Conditions d'accès");fieldSetDescription.add(conditionAccesChp, new FormData(550, 0));conditionUsageChp = new TextArea();conditionUsageChp.setTabIndex(tabIndex++);conditionUsageChp.setFieldLabel("Conditions d'usage");fieldSetDescription.add(conditionUsageChp, new FormData(550, 0));this.add(fieldSetDescription);//+-----------------------------------------------------------------------------------------------------------+// Fieldset ADRESSELayoutContainer principalFdAdresse = new LayoutContainer();principalFdAdresse.setLayout(new ColumnLayout());principalFdAdresse.setSize(1050, -1);LayoutContainer gaucheFdAdresse = new LayoutContainer();gaucheFdAdresse.setLayout(Formulaire.creerFormLayout(null, LabelAlign.LEFT));LayoutContainer droiteFdAdresse = new LayoutContainer();droiteFdAdresse.setLayout(Formulaire.creerFormLayout(100, LabelAlign.LEFT));droiteFdAdresse.setWidth(700);FieldSet fieldSetAdresse = new FieldSet();fieldSetAdresse.setHeadingHtml("Adresse");fieldSetAdresse.setCollapsible(true);fieldSetAdresse.setLayout(Formulaire.creerFormLayout(null, LabelAlign.LEFT));adrChp = new TextArea();adrChp.setTabIndex(tabIndex++);adrChp.setFieldLabel("Adresse (Nom du batiment, rue...)");fieldSetAdresse.add(adrChp, new FormData(550, 0));adrComplementChp = new TextArea();adrComplementChp.setTabIndex(tabIndex++);adrComplementChp.setFieldLabel("Complément d'adresse (BP, étage...)");fieldSetAdresse.add(adrComplementChp, new FormData(550, 0));cpChp = new TextField<String>();cpChp.setTabIndex(tabIndex++);cpChp.setFieldLabel("Code postal");gaucheFdAdresse.add(cpChp, new FormData("95%"));villeChp = new TextField<String>();villeChp.setTabIndex(tabIndex++);villeChp.setFieldLabel("Ville");gaucheFdAdresse.add(villeChp, new FormData("95%"));ModelType modelTypesPays = new ModelType();modelTypesPays.setRoot("valeurs");modelTypesPays.setTotalName("nbElements");modelTypesPays.addField("cmlv_nom");modelTypesPays.addField("cmlv_id_valeur");modelTypesPays.addField("cmlv_abreviation");modelTypesPays.addField("cmlv_description");String displayNamePays = "cmlv_nom";String nomListeTypes = "pays";ProxyValeur<ModelData> proxyPays = new ProxyValeur<ModelData>(nomListeTypes, null);comboPays = new ChampComboBoxRechercheTempsReelPaginable(proxyPays, modelTypesPays, displayNamePays);comboPays.setWidth(100,500);comboPays.getCombo().setTabIndex(tabIndex++);comboPays.getCombo().setFieldLabel("Pays");comboPays.getCombo().setForceSelection(true);comboPays.getCombo().setTemplate(getTemplatePays());SelectionChangedListener<ModelData> selectionChange = new SelectionChangedListener<ModelData>() {public void selectionChanged(SelectionChangedEvent se) {// Rafraichir avec le pays sélectionnécomboRegion.clear();obtenirListeRegionParPays((new Valeur(se.getSelectedItem())).getAbreviation().toString());}};comboPays.getCombo().addSelectionChangedListener(selectionChange);droiteFdAdresse.add(comboPays, new FormData("95%"));magazinRegion = new ListStore<Valeur>();comboRegion = new ComboBox<Valeur>();comboRegion.setTabIndex(tabIndex++);comboRegion.setFieldLabel("Région");comboRegion.setEmptyText("Sélectionner une région...");comboRegion.setDisplayField("nom");comboRegion.setTypeAhead(true);comboRegion.setTriggerAction(TriggerAction.ALL);comboRegion.setStore(magazinRegion);droiteFdAdresse.add(comboRegion, new FormData("95%"));latitudeChp = new TextField<String>();latitudeChp.setRegex(Pattern.latitude);latitudeChp.setToolTip("Format : nombre décimal positif ou négatif de 0 à 90.");latitudeChp.getMessages().setRegexText("La valeur saisie n'est pas une latitude valide. Exemples de latitude : -45,302010 ou 45.252423 ou 25,16.");latitudeChp.setTabIndex(tabIndex++);latitudeChp.setFieldLabel("Latitude (Nord)");gaucheFdAdresse.add(latitudeChp, new FormData("95%"));longitudeChp = new TextField<String>();longitudeChp.setRegex(Pattern.longitude);longitudeChp.setToolTip("Format : nombre décimal positif ou négatif de 0 à 180.");longitudeChp.getMessages().setRegexText("La valeur saisie n'est pas une longitude valide. Exemples de longitude : -150,302010 ou 150.252423 ou 25,16.");longitudeChp.setTabIndex(tabIndex++);longitudeChp.setFieldLabel("Longitude (Est)");droiteFdAdresse.add(longitudeChp, new FormData("95%"));principalFdAdresse.add(gaucheFdAdresse, new ColumnData(.5));principalFdAdresse.add(droiteFdAdresse, new ColumnData(.5));fieldSetAdresse.add(principalFdAdresse);this.add(fieldSetAdresse);//+-----------------------------------------------------------------------------------------------------------+// Fieldset TÉLÉPHONE et EMAILLayoutContainer principalFdTelMail = new LayoutContainer();principalFdTelMail.setLayout(new ColumnLayout());principalFdTelMail.setSize(700, -1);LayoutContainer gaucheFdTelMail = new LayoutContainer();gaucheFdTelMail.setLayout(Formulaire.creerFormLayout(60, LabelAlign.LEFT));LayoutContainer droiteFdTelMail = new LayoutContainer();droiteFdTelMail.setLayout(Formulaire.creerFormLayout(60, LabelAlign.LEFT));FieldSet fieldSetTelMail = new FieldSet();fieldSetTelMail.setHeadingHtml("Communication");fieldSetTelMail.setCollapsible(true);fieldSetTelMail.setLayout(Formulaire.creerFormLayout(null, LabelAlign.LEFT));telChp = new TextField<String>();telChp.setTabIndex(tabIndex++);telChp.setFieldLabel("Téléphone fixe");gaucheFdTelMail.add(telChp, new FormData("95%"));faxChp = new TextField<String>();faxChp.setTabIndex(tabIndex++);faxChp.setFieldLabel("Fax");droiteFdTelMail.add(faxChp, new FormData("95%"));emailChp = new TextField<String>();emailChp.setTabIndex(tabIndex++);emailChp.setFieldLabel("Courriel");emailChp.setToolTip("Saisir le courriel de l'organisation, pas de courriel individuel. Ex. : accueil@organisation.org");gaucheFdTelMail.add(emailChp, new FormData("95%"));urlChp = new TextField<String>();urlChp.setTabIndex(tabIndex++);urlChp.setFieldLabel("Site web");droiteFdTelMail.add(urlChp, new FormData("95%"));principalFdTelMail.add(gaucheFdTelMail, new ColumnData(.5));principalFdTelMail.add(droiteFdTelMail, new ColumnData(.5));fieldSetTelMail.add(principalFdTelMail);this.add(fieldSetTelMail);}private native String getTemplatePays() /*-{return ['<tpl for=".">','<div class="x-combo-list-item">{cmlv_nom} ({cmlv_abreviation})</div>','</tpl>'].join("");}-*/;public void obtenirListeRegionParPays(String strPays) {mediateur.obtenirListeRegionsEtRafraichir(this, "region", strPays);}public void peuplerIdSurRetourAjout() {initialiserIdentification();idStructureChp.setValue(identification.getId());nomStructureChp.setValue(identification.getNom());}public void peupler() {if(identification == null) {initialiserIdentification();}if (formulaireCourant.mode.equals(Formulaire.MODE_AJOUTER)) {// Indique que l'ongleta pu être modifié pour la méthode collecter...this.setData("acces", true);// Initialisation de l'objet Structureidentification = new Structure();}if (formulaireCourant.mode.equals(Formulaire.MODE_MODIFIER) && identification != null && getData("acces").equals(false)) {idStructureChp.setValue(identification.getId());nomStructureChp.setValue(identification.getNom());if (!identification.getIdAlternatif().isEmpty()) {String[] acronyme = identification.getIdAlternatif().split("##");//#436 : Ne pas afficher "null"if (UtilString.isEmpty(acronyme[1]) || acronyme[1].equals("null")) {acronyme[1] = "";}if (acronyme[0].matches("^IH$")) {comboAcronyme.setValue(InterneValeurListe.getTypeAcronymeIH());ihChp.setValue(acronyme[1]);} else if (acronyme[0].matches("^MNHN$")) {comboAcronyme.setValue(InterneValeurListe.getTypeAcronymeMNHN());mnhnChp.setValue(acronyme[1]);}}if (!identification.getTypePrive().isEmpty()) {if (identification.getTypePrive().matches("^[0-9]+$")) {comboTypeStructure.setValue(InterneValeurListe.getTypePrivee());comboLstpr.setValue(comboLstpr.getStore().findModel("id_valeur", identification.getTypePrive()));}} else if (!identification.getTypePublic().isEmpty()) {if (identification.getTypePublic().matches("^[0-9]+$")) {comboTypeStructure.setValue(InterneValeurListe.getTypePublique());comboLstpu.setValue(comboLstpu.getStore().findModel("id_valeur", identification.getTypePublic()));}}String dateFondation = identification.getAnneeOuDateFondation();dateFondationChp.setValue(dateFondation);descriptionChp.setValue(identification.getDescription());conditionAccesChp.setValue(identification.getConditionAcces());conditionUsageChp.setValue(identification.getConditionUsage());adrChp.setValue(identification.getAdresse());adrComplementChp.setValue(identification.getAdresseComplement());cpChp.setValue(identification.getCodePostal());villeChp.setValue(identification.getVille());mettreAJourRegion();//(identification.getRegion());if (identification.getPays().matches("^[0-9]+$")) {comboPays.chargerValeurInitiale(identification.getPays(), "cmlv_id_valeur");} else {comboPays.getCombo().setRawValue(identification.getPays());}latitudeChp.setValue(identification.getLatitude());longitudeChp.setValue(identification.getLongitude());telChp.setValue(identification.getTelephoneFixe());faxChp.setValue(identification.getFax());emailChp.setValue(identification.getCourriel());urlChp.setValue(identification.getUrl("WEB"));nbreTotalPersonneStructureChp.setValue(identification.getNbrePersonne());// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter...this.setData("acces", true);}}private void initialiserIdentification() {identification = ((StructureForm)formulaireCourant).identification;}public Structure collecter() {peupler();Structure structureARetourner = null;if (this.getData("acces").equals(true)) {if(identification == null) {initialiserIdentification();}Structure structureCollectee = (Structure) identification.cloner(new Structure());structureCollectee.setId(idStructureChp.getValue());structureCollectee.setNom(nomStructureChp.getValue());// Récupération de l'acronyme (= identifiant alternatif)structureCollectee.setIdAlternatif(null);if (comboAcronyme.getValue() != null) {String typeAcronyme = comboAcronyme.getValue().getAbr();if (typeAcronyme == "IH") {structureCollectee.setIdAlternatif(typeAcronyme+"##"+ihChp.getValue());} else if (typeAcronyme == "MNHN") {structureCollectee.setIdAlternatif(typeAcronyme+"##"+mnhnChp.getValue());}}// Récupération statut de la structurestructureCollectee.setTypePublic(null);structureCollectee.setTypePrive(null);if (comboTypeStructure.getValue() != null) {String typeStructure = comboTypeStructure.getValue().getAbr();if (typeStructure == "stpu" && comboLstpu.getValue() != null) {structureCollectee.setTypePublic(comboLstpu.getValue().getId());} else if (typeStructure == "stpr" && comboLstpr.getValue() != null) {structureCollectee.setTypePrive(comboLstpr.getValue().getId());}}String valeurDateFondation = dateFondationChp.getValue();if (!UtilString.isEmpty(valeurDateFondation)) {if (valeurDateFondation.matches("\\d{2}/\\d{2}/\\d{4}")) {Date dateFondation = DateTimeFormat.getFormat("dd/MM/yyyy").parse(valeurDateFondation);structureCollectee.setDateFondation(dateFondation);} else if (valeurDateFondation.matches("\\d{4}")) {structureCollectee.setDateFondation(valeurDateFondation + "-00-00");}}structureCollectee.setDescription(descriptionChp.getValue());structureCollectee.setConditionAcces(conditionAccesChp.getValue());structureCollectee.setConditionUsage(conditionUsageChp.getValue());structureCollectee.setAdresse(adrChp.getValue());structureCollectee.setAdresseComplement(adrComplementChp.getValue());structureCollectee.setCodePostal(cpChp.getValue());structureCollectee.setVille(villeChp.getValue());String strRegion = "";Valeur valeurRegion = comboRegion.getValue();if (valeurRegion == null) {strRegion = "AUTRE##" + comboRegion.getRawValue();} else {strRegion = valeurRegion.getId();}structureCollectee.setRegion(strRegion);structureCollectee.setPays(null);if (comboPays.getCombo().getValue() != null) {structureCollectee.setPays(new Valeur(comboPays.getValeur()).getId());} else if (comboPays.getCombo().getRawValue() != "") {structureCollectee.setPays(comboPays.getCombo().getRawValue());}structureCollectee.setLatitude(latitudeChp.getValue());structureCollectee.setLongitude(longitudeChp.getValue());structureCollectee.setTelephoneFixe(telChp.getValue());structureCollectee.setFax(faxChp.getValue());structureCollectee.setCourriel(emailChp.getValue());structureCollectee.setUrl(Structure.URL_SITE, urlChp.getValue());structureCollectee.setNbrePersonne(nbreTotalPersonneStructureChp.getValue());structureARetourner = identification = structureCollectee;} else {}return structureARetourner;}@Overridepublic void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof ValeurListe) {ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;rafraichirValeurListe(listeValeurs);} else if (nouvellesDonnees instanceof Information) {Information info = (Information) nouvellesDonnees;rafraichirInformation(info);} else {Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));}}public void rafraichirInformation(Information info) {if (info.getType().equals("ajout_structure")) {if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {String structureId = (String) info.getDonnee(0);identification.setId(structureId);this.setData("acces", false);peupler();} else {InfoLogger.display("Ajout d'une Institution", info.toString());}} else if (info.getType().equals("selection_structure")) {InfoLogger.display("Modification d'une institution", info.toString());String titre = i18nC.titreModifFormStructurePanneau();if (info.getDonnee(0) != null) {try {identification = (Structure) info.getDonnee(0);setAcces(false);peupler();} catch(Exception e) {GWT.log("Problème de cast. "+info.getDonnee(0)+" ne peut être casté en Structure", e);}// Composition du titretitre += " - ID : "+identification.getId();}}}private void rafraichirValeurListe(ValeurListe listeValeurs) {List<Valeur> liste = listeValeurs.toList();// Test pour savoir si la liste contient des élémentsif (liste.size() > 0) {if (listeValeurs.getId().equals(config.getListeId("stpr"))) {magazinLstpr.removeAll();magazinLstpr.add(liste);comboLstpr.setStore(magazinLstpr);}if (listeValeurs.getId().equals(config.getListeId("stpu"))) {magazinLstpu.removeAll();magazinLstpu.add(liste);comboLstpu.setStore(magazinLstpu);}if (listeValeurs.getId().equals(config.getListeId("region"))) {magazinRegion.removeAll();magazinRegion.add(liste);comboRegion.setStore(magazinRegion);mettreAJourRegion();}}}private void mettreAJourRegion() {//Met à jour la combo box en sélectionnant la valeur enregistrée pour la personneif (identification.get("ce_truk_region") != null && comboRegion.getStore().getCount() > 0) {Valeur valeurRegion = comboRegion.getStore().findModel("id_valeur", identification.get("ce_truk_region"));if (valeurRegion!=null) {comboRegion.setValue(valeurRegion);} else if (identification.get("ce_truk_region").toString().startsWith("AUTRE##")) {comboRegion.setRawValue(identification.get("ce_truk_region").toString().replaceFirst("^AUTRE##", ""));}}}public Collection<? extends String> verifier() {ArrayList<String> messages = new ArrayList<String>();// Vérification des infos sur le nom de la structureif ( (this.getData("acces").equals(true) && nomStructureChp.getValue() == null) ||(this.getData("acces").equals(true) && nomStructureChp.getValue().equals("")) ||(this.getData("acces").equals(false) && identification.getNom().equals(""))) {messages.add("Veuillez indiquez un nom à l'institution.");}//Vérification de la date de fondationString valeurDateFondation = dateFondationChp.getValue();if (!UtilString.isEmpty(valeurDateFondation) && (!valeurDateFondation.matches("\\d{2}/\\d{2}/\\d{4}") &&!valeurDateFondation.matches("\\d{4}"))) {messages.add("La date de fondation n'est pas au format jj/MM/AAAA ou AAAA");}return messages;}}