Subversion Repositories eFlore/Applications.coel

Rev

Rev 1779 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues.structure;

import java.util.ArrayList;
import java.util.List;

import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.structure.StructureConservation;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.vues.Formulaire;
import org.tela_botanica.client.vues.FormulaireOnglet;

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.widget.Component;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.form.Radio;
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.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;

public class StructureFormConservation extends FormulaireOnglet implements Rafraichissable {

        private StructureConservation conservation = null;
        private CheckBoxGroup localStockageTrukCacGrpChp = null;
        private LayoutContainer localStockageTrukCp = null;
        private CheckBoxGroup meubleStockageTrukCacGrpChp = null;
        private LayoutContainer meubleStockageTrukCp = null;
        private CheckBoxGroup parametreStockageTrukCacGrpChp = null;
        private LayoutContainer parametreStockageTrukCp = null;
        private LayoutContainer collectionAutreTrukCp = null;
        private CheckBoxGroup collectionAutreTrukCacGrpChp = null;
        private CheckBoxGroup opRestauTrukCacGrpChp = null;
        private LayoutContainer opRestauTrukCp = null;
        private CheckBoxGroup autreMaterielTrukCacGrpChp = null;
        private LayoutContainer autreMaterielTrukCp = null;
        private RadioGroup formationMarkRGrpChp = null;
        private RadioGroup interetFormationMarkRGrpChp = null;
        private RadioGroup collectionCommuneMarkRGrpChp = null;
        private RadioGroup accesControleMarkRGrpChp = null;
        private RadioGroup restaurationMarkRGrpChp = null;
        private RadioGroup traitementMarkRGrpChp = null;
        private RadioGroup collectionAcquisitionMarkRGrpChp = null;
        private RadioGroup echantillonAcquisitionMarkRGrpChp = null;
        private LayoutContainer traitementTrukCp = null;
        private CheckBoxGroup traitementTrukCacGrpChp = null;
        private LayoutContainer poisonTraitementTrukCp = null;
        private LayoutContainer insecteTraitementTrukCp = null;
        private CheckBoxGroup insecteTraitementTrukCacGrpChp = null;
        private CheckBoxGroup poisonTraitementTrukCacGrpChp = null;
        private TextField<String> formationChp = null;
        private RadioGroup materielConservationCeRGrpChp = null;
        private LayoutContainer materielConservationCp = null;
        private RadioGroup traitementAcquisitionMarkRGrpChp = null;
        private LabelField traitementAcquisitionMarkLabel = null;
        private TextField<String> localStockageAutreChp = null;
        private TextField<String> meubleStockageAutreChp = null;
        private TextField<String> parametreStockageAutreChp = null;
        private TextField<String> collectionAutreAutreChp = null;
        private TextField<String> opRestauAutreChp = null;
        private TextField<String> autreMaterielAutreChp = null;
        private TextField<String> traitementAutreChp = null;
        private TextField<String> poisonTraitementAutreChp = null;
        private TextField<String> insecteTraitementAutreChp = null;
        
        private String ID = "conservation";
        private Formulaire formulaireCourant = null;
        private Mediateur mediateur = null;
        private Sequenceur sequenceur = null;
        
        public StructureFormConservation(Mediateur mediateur, Formulaire formulaireCourant, Sequenceur sequenceur) {
                
                initialiserOnglet(formulaireCourant);
                
                this.mediateur = mediateur;
                this.formulaireCourant = formulaireCourant;
                this.sequenceur = sequenceur;
                
                setId(ID);
                setText(Mediateur.i18nC.structureInfoConservation());
                FormulaireOnglet.parametrer(this);
                
                this.setLayout(Formulaire.creerFormLayout(650, LabelAlign.TOP));
                Listener<ComponentEvent> ecouteurSelection = new Listener<ComponentEvent>() {  
                        public void handleEvent(ComponentEvent be) {  
                                peupler();
                                layout();
                        }  
                };
                this.addListener(Events.Select, ecouteurSelection);
                
                formationMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("formation_mark", "ouiNon");
                formationMarkRGrpChp.setFieldLabel("Le personnel s'occupant des collections a-t-il suivi des formations en conservation ?");
                this.add(formationMarkRGrpChp);
                
                formationChp = new TextArea();
                formationChp.hide();
                formationChp.addListener(Events.Hide, new Listener<BaseEvent>() {

                        public void handleEvent(BaseEvent be) {
                                ((TextArea) be.getSource()).setValue("");
                        }
                        
                });
                formationChp.setFieldLabel("Si oui, lesquelles ?");
                this.add(formationChp);
                
                interetFormationMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("interet_formation_mark", "ouiNon");
                interetFormationMarkRGrpChp.setFieldLabel("Seriez vous intéressé par une formation à la conservation et à la restauration d'herbier ?");
                interetFormationMarkRGrpChp.setHeight(35);
                this.add(interetFormationMarkRGrpChp);
                
                localStockageTrukCacGrpChp = new CheckBoxGroup();
                localStockageTrukCacGrpChp.setFieldLabel("Avez vous des locaux spécifiques de stockage des collections botaniques ?");
                localStockageTrukCp = Formulaire.creerChoixMultipleCp();
                this.add(localStockageTrukCp);
                mediateur.obtenirListeValeurEtRafraichir(this, "localStockage", sequenceur);
                
                meubleStockageTrukCp = Formulaire.creerChoixMultipleCp();
                meubleStockageTrukCacGrpChp = new CheckBoxGroup();
                meubleStockageTrukCacGrpChp.setFieldLabel("Avez vous des meubles spécifiques au stockage des collections botaniques ?");
                this.add(meubleStockageTrukCp);
                mediateur.obtenirListeValeurEtRafraichir(this, "meubleStockage", sequenceur);
                
                parametreStockageTrukCp = Formulaire.creerChoixMultipleCp();
                parametreStockageTrukCacGrpChp = new CheckBoxGroup();
                parametreStockageTrukCacGrpChp.setFieldLabel("Quels paramètres maîtrisez vous ?");
                this.add(parametreStockageTrukCp);
                mediateur.obtenirListeValeurEtRafraichir(this, "parametreStockage", sequenceur);
                
                collectionCommuneMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("collection_commune_mark", "ouiNon");
                collectionCommuneMarkRGrpChp.setFieldLabel("Les collections botaniques sont-elles conservées avec d'autres collections  dans les mêmes locaux (problème de conservation en commun) ?");
                this.add(collectionCommuneMarkRGrpChp);
                
                collectionAutreTrukCp = Formulaire.creerChoixMultipleCp();
                collectionAutreTrukCacGrpChp = new CheckBoxGroup();
                collectionAutreTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
                collectionAutreTrukCp.hide();
                this.add(collectionAutreTrukCp);
                mediateur.obtenirListeValeurEtRafraichir(this, "autreCollection", sequenceur);
                
                accesControleMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("mark_acces_controle", "ouiNon");
                accesControleMarkRGrpChp.setFieldLabel("L'accès à vos collections botanique est-il contrôlé (ex. : manipulation réservées à des personnes compétentes) ?");
                this.add(accesControleMarkRGrpChp);
                
                restaurationMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("restauration_mark", "ouiNon");
                restaurationMarkRGrpChp.setFieldLabel("Effectuez vous des opérations de restauration ou de remise en état de vos collections botaniques ?");
                this.add(restaurationMarkRGrpChp);
                
                opRestauTrukCp = Formulaire.creerChoixMultipleCp();
                opRestauTrukCacGrpChp = new CheckBoxGroup();
                opRestauTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
                opRestauTrukCp.hide();
                this.add(opRestauTrukCp);
                mediateur.obtenirListeValeurEtRafraichir(this, "opRestau", sequenceur);
                
                // Création d'un ContentPanel vide et du groupe de bouton radio
                // Le groupe de bouton radio recevra les boutons au moment de la réception des données (rafraichir()) et ser à ce moment là ajouter au ContenetPanel
                materielConservationCp = Formulaire.creerChoixMultipleCp();
                this.add(materielConservationCp);
                materielConservationCeRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("materiel_conservation_ce", "onep");
                materielConservationCeRGrpChp.setFieldLabel("Utilisez vous du matériel de conservation ?");
                materielConservationCeRGrpChp.setToolTip(new ToolTipConfig("Matériel de conservation", "matériel spécialisé pour la conservation des archives ou du patrimoine fragile. Ce matériel possède des propriétés mécaniques et chimiques qui font qu'il résiste dans le temps et que sa dégradation n'entraîne pas de dommages sur le matériel qu'il aide à conserver. Exemples : papier neutre, papier gommé, etc..."));
                mediateur.obtenirListeValeurEtRafraichir(this, "onep", sequenceur);
                
                autreMaterielTrukCp = Formulaire.creerChoixMultipleCp();
                autreMaterielTrukCacGrpChp = new CheckBoxGroup();
                autreMaterielTrukCacGrpChp.setFieldLabel("Si non, qu'utilisez vous comme matériel ?");
                autreMaterielTrukCp.hide();
                this.add(autreMaterielTrukCp);
                mediateur.obtenirListeValeurEtRafraichir(this, "autreMateriel", sequenceur);
                
                traitementMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("traitement_mark", "ouiNon");
                traitementMarkRGrpChp.setFieldLabel("Réalisez vous actuellement des traitements globaux contre les insectes ?");
                this.add(traitementMarkRGrpChp);
                
                traitementTrukCp = Formulaire.creerChoixMultipleCp();
                traitementTrukCp.hide();
                traitementTrukCacGrpChp = new CheckBoxGroup();
                traitementTrukCacGrpChp.setFieldLabel("Si oui, lesquels ?");
                this.add(traitementTrukCp);
                mediateur.obtenirListeValeurEtRafraichir(this, "insecteTraitement", sequenceur);
                
                collectionAcquisitionMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("collection_acquisition_mark", "ouiNon");
                collectionAcquisitionMarkRGrpChp.setFieldLabel("Actuellement, vos collections botaniques s'accroissent-elles de nouvelles acquisitions ?");
                this.add(collectionAcquisitionMarkRGrpChp);
                
                echantillonAcquisitionMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("echantillon_acquisition_mark", "ouiNon");
                echantillonAcquisitionMarkRGrpChp.setFieldLabel("Actuellement, mettez vous en herbier de nouveaux échantillons ?");
                this.add(echantillonAcquisitionMarkRGrpChp);

                traitementAcquisitionMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("traitement_acquisition_mark", "ouiNon");
                traitementAcquisitionMarkRGrpChp.hide();
                traitementAcquisitionMarkRGrpChp.setFieldLabel("Si oui, faites-vous un traitement contre les insectes avant l'intégration dans vos collections ?");
                this.add(traitementAcquisitionMarkRGrpChp);
                
                traitementAcquisitionMarkLabel = new LabelField();
                traitementAcquisitionMarkLabel.hide();
                traitementAcquisitionMarkLabel.setFieldLabel("Si oui, lesquels ?");
                this.add(traitementAcquisitionMarkLabel);
                
                poisonTraitementTrukCp = Formulaire.creerChoixMultipleCp();
                poisonTraitementTrukCp.hide();
                poisonTraitementTrukCacGrpChp = new CheckBoxGroup();
                poisonTraitementTrukCacGrpChp.setFieldLabel("Empoisonnement");
                poisonTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
                poisonTraitementTrukCacGrpChp.setLabelSeparator("");
                this.add(poisonTraitementTrukCp);
                mediateur.obtenirListeValeurEtRafraichir(this, "poisonTraitement", sequenceur);
                
                insecteTraitementTrukCp = Formulaire.creerChoixMultipleCp();
                insecteTraitementTrukCp.hide();
                insecteTraitementTrukCacGrpChp = new CheckBoxGroup();
                insecteTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
                insecteTraitementTrukCacGrpChp.setLabelSeparator("");
                insecteTraitementTrukCacGrpChp.setFieldLabel("Désinsectisation");
                this.add(insecteTraitementTrukCp);
                mediateur.obtenirListeValeurEtRafraichir(this, "insecteTraitement", sequenceur);
                
                this.add(new Html("<br />"));
        }
        
        @Override
        public 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);
                }
        }
        
        public void rafraichirInformation(Information info) {
                if (info.getDonnee(1) != null) {
                        conservation = (StructureConservation) info.getDonnee(1);
                        peupler();
                }
        }
        
        public void rafraichirValeurListe(ValeurListe listeValeurs) {
                List<Valeur> liste = listeValeurs.toList();
                if (listeValeurs.getId().equals(config.getListeId("localStockage"))) {
                        localStockageAutreChp = new TextField<String>();
                        Formulaire.creerChoixMultipleCac(localStockageTrukCp, localStockageTrukCacGrpChp, listeValeurs, localStockageAutreChp);
                }
                if (listeValeurs.getId().equals(config.getListeId("meubleStockage"))) {
                        meubleStockageAutreChp = new TextField<String>();
                        Formulaire.creerChoixMultipleCac(meubleStockageTrukCp, meubleStockageTrukCacGrpChp, listeValeurs, meubleStockageAutreChp);
                }
                if (listeValeurs.getId().equals(config.getListeId("parametreStockage"))) {
                        parametreStockageAutreChp = new TextField<String>();
                        Formulaire.creerChoixMultipleCac(parametreStockageTrukCp, parametreStockageTrukCacGrpChp, listeValeurs, parametreStockageAutreChp);
                }
                if (listeValeurs.getId().equals(config.getListeId("autreCollection"))) {
                        if (collectionAutreTrukCp != null && collectionAutreTrukCp.getItemByItemId("collectionAutreTrukCacGrpChp") == null) {
                                collectionAutreTrukCacGrpChp.setId("collectionAutreTrukCacGrpChp");
                                collectionAutreAutreChp = new TextField<String>();
                                Formulaire.creerChoixMultipleCac(collectionAutreTrukCp, collectionAutreTrukCacGrpChp, listeValeurs, collectionAutreAutreChp);
                        }
                }
                if (listeValeurs.getId().equals(config.getListeId("opRestau"))) {
                        opRestauAutreChp = new TextField<String>();
                        Formulaire.creerChoixMultipleCac(opRestauTrukCp, opRestauTrukCacGrpChp, listeValeurs, opRestauAutreChp);
                }
                if (listeValeurs.getId().equals(config.getListeId("onep"))) {
                        formulaireCourant.creerChoixUniqueBoutonRadio(materielConservationCeRGrpChp, Formulaire.trierListeOuiNonEnPartie(listeValeurs));
                        materielConservationCp.add(materielConservationCeRGrpChp);
                        materielConservationCp.layout();
                }
                if (listeValeurs.getId().equals(config.getListeId("autreMateriel"))) {
                        autreMaterielAutreChp = new TextField<String>();
                        Formulaire.creerChoixMultipleCac(autreMaterielTrukCp, autreMaterielTrukCacGrpChp, listeValeurs, autreMaterielAutreChp);
                }
                if (listeValeurs.getId().equals(config.getListeId("poisonTraitement"))) {
                        poisonTraitementAutreChp = new TextField<String>();
                        Formulaire.creerChoixMultipleCac(poisonTraitementTrukCp, poisonTraitementTrukCacGrpChp, listeValeurs, poisonTraitementAutreChp);
                }
                if (listeValeurs.getId().equals(config.getListeId("insecteTraitement"))) {
                        if (traitementTrukCp != null && traitementTrukCp.getItemByItemId("traitementTrukCacGrpChp") == null) {
                                traitementTrukCacGrpChp.setId("traitementTrukCacGrpChp");
                                traitementAutreChp = new TextField<String>();
                                Formulaire.creerChoixMultipleCac(traitementTrukCp, traitementTrukCacGrpChp, listeValeurs, traitementAutreChp);
                        }
                        if (insecteTraitementTrukCp != null && insecteTraitementTrukCp.getItemByItemId("insecteTraitementTrukCacGrpChp") == null) {
                                insecteTraitementTrukCacGrpChp.setId("insecteTraitementTrukCacGrpChp");
                                insecteTraitementAutreChp = new TextField<String>();
                                Formulaire.creerChoixMultipleCac(insecteTraitementTrukCp, insecteTraitementTrukCacGrpChp, listeValeurs, insecteTraitementAutreChp);
                        }
                }
        }
        
        private void initialiserConservation() {
                conservation = ((StructureForm)formulaireCourant).conservation;
        }
        
        public StructureConservation collecter() {
                
                if(conservation == null) {
                        initialiserConservation();
                }
                
                StructureConservation conservationARetourner = null;
                if (this.getData("acces").equals(true)) {
                        // Création de l'objet
                        StructureConservation conservationCollectee = (StructureConservation) conservation.cloner(new StructureConservation());
                        
                        // FORMATION
                        conservationCollectee.setFormation(formationMarkRGrpChp.getValue() == null ?
                                                           null :
                                                           formationMarkRGrpChp.getValue().getValueAttribute());

                        // FORMATION INFO
                        conservationCollectee.setFormationInfo(formationChp.getValue());
                        // FORMATION INTERET
                        conservationCollectee.setFormationInteret(interetFormationMarkRGrpChp.getValue() == null ?
                                                                  null :
                                                                  interetFormationMarkRGrpChp.getValue().getValueAttribute());
                        
                        // STOCKAGE LOCAL
                        conservationCollectee.setStockageLocal(creerChaineDenormalisee(localStockageTrukCacGrpChp.getValues()));
                        conservationCollectee.setStockageLocal("AUTRE", localStockageAutreChp.getValue());
        
                        // STOCKAGE MEUBLE
                        conservationCollectee.setStockageMeuble(creerChaineDenormalisee(meubleStockageTrukCacGrpChp.getValues()));
                        conservationCollectee.setStockageMeuble("AUTRE", meubleStockageAutreChp.getValue());
                        
                        // STOCKAGE PAREMETRE
                        conservationCollectee.setStockageParametre(creerChaineDenormalisee(parametreStockageTrukCacGrpChp.getValues()));
                        conservationCollectee.setStockageParametre("AUTRE", parametreStockageAutreChp.getValue());
                        
                        // COLLECTION COMMUNE
                        if (collectionCommuneMarkRGrpChp.getValue() != null) {
                                conservationCollectee.setCollectionCommune(collectionCommuneMarkRGrpChp.getValue().getValueAttribute());
                        }
                        // COLLECTION AUTRE
                        conservationCollectee.setCollectionAutre(creerChaineDenormalisee(collectionAutreTrukCacGrpChp.getValues()));
                        conservationCollectee.setCollectionAutre("AUTRE", collectionAutreAutreChp.getValue());
                        
                        // ACCÈS CONTROLÉ
                        if (accesControleMarkRGrpChp.getValue() != null) {
                                conservationCollectee.setAccesControle(accesControleMarkRGrpChp.getValue().getValueAttribute());
                        }
                        
                        // RESTAURATION
                        if (restaurationMarkRGrpChp.getValue() != null) {
                                conservationCollectee.setRestauration(restaurationMarkRGrpChp.getValue().getValueAttribute());
                        }
                        // RESTAURATION OPÉRATION
                        conservationCollectee.setRestaurationOperation(creerChaineDenormalisee(opRestauTrukCacGrpChp.getValues()));
                        conservationCollectee.setRestaurationOperation("AUTRE", opRestauAutreChp.getValue());
                        
                        // MATERIEL CONSERVATION
                        if (materielConservationCeRGrpChp.getValue() != null) {
                                conservationCollectee.setMaterielConservation(materielConservationCeRGrpChp.getValue().getValueAttribute());

                                // MATERIEL AUTRE
                                conservationCollectee.setMaterielAutre(creerChaineDenormalisee(autreMaterielTrukCacGrpChp.getValues()));
                                conservationCollectee.setMaterielAutre("AUTRE", autreMaterielAutreChp.getValue());
                        }
                        
                        // TRAITEMENT
                        if (traitementMarkRGrpChp.getValue() != null) {
                                conservationCollectee.setTraitement(traitementMarkRGrpChp.getValue().getValueAttribute());
                        }
                        // TRAIEMENTS
                        conservationCollectee.setTraitements(creerChaineDenormalisee(traitementTrukCacGrpChp.getValues()));
                        conservationCollectee.setTraitements("AUTRE", traitementAutreChp.getValue());
                        
                        
                        // ACQUISITION COLLECTION
                        if (collectionAcquisitionMarkRGrpChp.getValue() != null) {
                                conservationCollectee.setAcquisitionCollection(collectionAcquisitionMarkRGrpChp.getValue().getValueAttribute());
                        }
                        
                        // ACQUISITION ECHANTILLON
                        if (echantillonAcquisitionMarkRGrpChp.getValue() != null) {
                                conservationCollectee.setAcquisitionEchantillon(echantillonAcquisitionMarkRGrpChp.getValue().getValueAttribute());
                        }
                        // ACQUISITION TRAITEMENT
                        if (traitementAcquisitionMarkRGrpChp.getValue() != null) {
                                conservationCollectee.setAcquisitionTraitement(traitementAcquisitionMarkRGrpChp.getValue().getValueAttribute());
                        }
                        // ACQUISITION TRAITEMENT POISON
                        conservationCollectee.setAcquisitionTraitementPoison(creerChaineDenormalisee(poisonTraitementTrukCacGrpChp.getValues()));
                        conservationCollectee.setAcquisitionTraitementPoison("AUTRE", poisonTraitementAutreChp.getValue());
                        // ACQUISITION TRAITEMENT INSECTE
                        conservationCollectee.setAcquisitionTraitementInsecte(creerChaineDenormalisee(insecteTraitementTrukCacGrpChp.getValues()));
                        conservationCollectee.setAcquisitionTraitementInsecte("AUTRE", insecteTraitementAutreChp.getValue());
                        
                        // Retour de l'objet
                        if (!conservationCollectee.comparer(conservation)) {
                                GWT.log("Collecte différent de Retour", null);
                                conservationARetourner = conservation = conservationCollectee;
                        }
                }
                return conservationARetourner;
        }
        
        private String creerChaineDenormalisee(List<CheckBox> liste) {
                return ((StructureForm)formulaireCourant).creerChaineDenormalisee(liste);
        }
        
        private void peuplerCasesACocher(String donnees, CheckBoxGroup groupeCac, TextField<String> champAutre) {
                ((StructureForm)formulaireCourant).peuplerCasesACocher(donnees, groupeCac, champAutre);
        }
        
        private void peuplerBoutonsRadio(String valeur, RadioGroup groupeBr) {
                ((StructureForm)formulaireCourant).peuplerBoutonsRadio(valeur, groupeBr);
        }
        
        public void afficherChampSupplementaires(Radio radioBtn) {
                //GWT.log("Nom btn : "+radioBtn.getName()+" - Nom group : "+radioBtn.getGroup().getName(), null);
                // Valeur du bouton radio déclenchant l'affichage des composants cachés
                String valeurPourAfficher = "oui";
                
                // Construction de la liste des composants à afficher/cacher
                String radioGroupeNom = radioBtn.getGroup().getName();
                ArrayList<Object> composants = new ArrayList<Object>(); 
                if (radioGroupeNom.equals("formation_mark_grp")) {
                        composants.add(formationChp);
                } else if (radioGroupeNom.equals("collection_commune_mark_grp")) {
                        composants.add(collectionAutreTrukCp);
                } else if (radioGroupeNom.equals("restauration_mark_grp")) {
                        composants.add(opRestauTrukCp);
                } else if (radioGroupeNom.equals("traitement_mark_grp")) {
                        composants.add(traitementTrukCp);
                } else if (radioGroupeNom.equals("echantillon_acquisition_mark_grp")) {
                        composants.add(traitementAcquisitionMarkRGrpChp);
                } else if (radioGroupeNom.equals("traitement_acquisition_mark_grp")) {
                        composants.add(traitementAcquisitionMarkLabel);
                        composants.add(poisonTraitementTrukCp);
                        composants.add(insecteTraitementTrukCp);
                } else if (radioGroupeNom.equals("materiel_conservation_ce_grp")) {
                        composants.add(autreMaterielTrukCp);
                        valeurPourAfficher = "non";
                }
                
                // Nous affichons/cachons les composant de la liste
                final int nbreComposants = composants.size();
                //GWT.log("Id : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax, null);
                //Window.alert("Radio grp nom : "+radioGroupeNom+" - Id btn : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax);
                for (int i = 0; i < nbreComposants; i++) {
                        // En fonction du type de bouton cliquer, on affiche ou cache les champs
                        String type = radioBtn.getBoxLabel().toLowerCase();
                        //GWT.log(type, null);
                        if (radioBtn.getValue() == true) {
                                if (type.equals(valeurPourAfficher)) {
                                        ((Component) composants.get(i)).show();
                                } else {
                                        ((Component) composants.get(i)).hide();
                                }
                        }
                        // Si on a à faire à un ContentPanel, on l'actualise pour déclencher l'affichage
                        if (composants.get(i) instanceof ContentPanel) {
                                ((ContentPanel) composants.get(i)).layout();
                        }
                }
        }
        
        public void peupler() {
                if(conservation == null) {
                        initialiserConservation();
                }
                if (formulaireCourant.mode.equals(Formulaire.MODE_AJOUTER)) {
                        // Indique que l'onglet a pu être modifié pour la méthode collecter...
                        this.setData("acces", true);
                        // Initialisation de l'objet Structure
                        conservation = new StructureConservation();
                }
                if (formulaireCourant.mode.equals(Formulaire.MODE_MODIFIER) && conservation != null) {
                        // FORMATION
                        // Bouton oui, à toujours l'index 0, mais dans le modèle, value == 0
                        // donc ^ 1, car 0 ^ 1 = 1 et 1 ^ 1 = 0
                        if(conservation.getFormation() != null) {
                                ((Radio) formationMarkRGrpChp.get(conservation.getFormation() ^ 1)).setValue(true);
                        }

                        // FORMATION INFO
                        formationChp.setValue(conservation.getFormationInfo());
                        // FORMATION INTERET
                        if(conservation.getFormationInteret() != null) {
                                ((Radio) interetFormationMarkRGrpChp.get(conservation.getFormationInteret() ^ 1)).setValue(true);
                        }
        
                        // STOCKAGE LOCAL               
                        peuplerCasesACocher(conservation.getStockageLocal(), localStockageTrukCacGrpChp,localStockageAutreChp);
        
                        // STOCKAGE MEUBLE
                        peuplerCasesACocher(conservation.getStockageMeuble(), meubleStockageTrukCacGrpChp, meubleStockageAutreChp);
        
                        // STOCKAGE PAREMETRE
                        peuplerCasesACocher(conservation.getStockageParametre(), parametreStockageTrukCacGrpChp, parametreStockageAutreChp);
                        
                        // COLLECTION COMMUNE
                        if(conservation.getCollectionCommune() != null) {
                                ((Radio) collectionCommuneMarkRGrpChp.get(conservation.getCollectionCommune() ^ 1)).setValue(true);
                        }
                        // COLLECTION AUTRE
                        peuplerCasesACocher(conservation.getCollectionAutre(), collectionAutreTrukCacGrpChp, collectionAutreAutreChp);
                        
                        // ACCÈS CONTROLÉ
                        if(conservation.getAccesControle() != null) {
                                ((Radio) accesControleMarkRGrpChp.get(conservation.getAccesControle() ^ 1)).setValue(true);
                        }
                        
                        // RESTAURATION
                        if(conservation.getRestauration() != null) {
                                ((Radio) restaurationMarkRGrpChp.get(conservation.getRestauration() ^ 1)).setValue(true);
                        }
                        // RESTAURATION OPÉRATION
                        peuplerCasesACocher(conservation.getRestaurationOperation(), opRestauTrukCacGrpChp, opRestauAutreChp);
                        
                        // MATERIEL CONSERVATION
                        peuplerBoutonsRadio(conservation.getMaterielConservation(), materielConservationCeRGrpChp);
                        
                        // MATERIEL AUTRE
                        peuplerCasesACocher(conservation.getMaterielAutre(), autreMaterielTrukCacGrpChp, autreMaterielAutreChp);
                        
                        // TRAITEMENT
                        if(conservation.getTraitement() != null) {
                                ((Radio) traitementMarkRGrpChp.get(conservation.getTraitement() ^ 1)).setValue(true);
                        }
                        // TRAITEMENTS
                        peuplerCasesACocher(conservation.getTraitements(), traitementTrukCacGrpChp, traitementAutreChp);
                        
                        // ACQUISITION COLLECTION
                        if(conservation.getAcquisitionCollection() != null) {
                                ((Radio) collectionAcquisitionMarkRGrpChp.get(conservation.getAcquisitionCollection() ^ 1)).setValue(true);
                        }
                        
                        // ACQUISITION ECHANTILLON
                        if(conservation.getAcquisitionEchantillon() != null) {
                                ((Radio) echantillonAcquisitionMarkRGrpChp.get(conservation.getAcquisitionEchantillon() ^ 1)).setValue(true);
                        }
                        
                        // ACQUISITION TRAITEMENT
                        ((Radio) traitementAcquisitionMarkRGrpChp.get((conservation.getAcquisitionTraitement().equals("1") ? 0 : 1))).setValue(true);                   
                        // ACQUISITION TRAITEMENT POISON
                        peuplerCasesACocher(conservation.getAcquisitionTraitementPoison(), poisonTraitementTrukCacGrpChp, poisonTraitementAutreChp);
                        // ACQUISITION TRAITEMENT INSECTE
                        peuplerCasesACocher(conservation.getAcquisitionTraitementInsecte(), insecteTraitementTrukCacGrpChp, insecteTraitementAutreChp);
                        
                        // Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter...
                        this.setData("acces", true);
                }
        }
}