Subversion Repositories eFlore/Applications.coel

Rev

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

package org.tela_botanica.client.vues.structure;

import java.util.Iterator;

import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.configuration.Configuration;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.collection.CollectionAStructure;
import org.tela_botanica.client.modeles.collection.CollectionAStructureListe;
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.vues.DetailVue;

import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.util.Format;
import com.extjs.gxt.ui.client.util.Params;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.layout.AnchorLayout;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.google.gwt.core.client.GWT;

public class StructureDetailVue extends DetailVue implements Rafraichissable {

        private String enteteTpl = null;
        private String identificationTpl = null;
        private String personnelTpl = null;
        private String tableauPersonnelTpl = null;
        private String lignePersonnelTpl = null;
        private String conservationTpl = null;
        private String traitementConservationTpl = null;
        private String valorisationTpl = null;
        private String typeTraitementConservationTpl = null;
        private String rechercheValorisationTpl = null;
        private String collectionTpl = null;
        private String ligneCollectionTpl = null;
        private String tableauCollectionTpl = null;
        
        private Structure structure = null;
        private boolean structureChargementOk = false;
        private StructureAPersonneListe personnel = null;
        private boolean personnelChargementOk = false;
        private StructureValorisation valorisation = null;
        private StructureConservation conservation = null;
        private CollectionAStructureListe collection = null;
        private boolean collectionChargementOk = false;
        
        private ContentPanel panneauPrincipal = null;
        private Html entete = null;
        private TabPanel onglets = null;
        private TabItem identificationOnglet = null;
        private TabItem personnelOnglet = null;
        private TabItem collectionOnglet = null;
        private TabItem conservationOnglet = null;
        private TabItem valorisationOnglet = null;
        
        private Sequenceur sequenceur;
        
        public StructureDetailVue(Mediateur mediateurCourant, Sequenceur sequenceur) {
                super(mediateurCourant);
                this.sequenceur = sequenceur;
                
                initialiserTousLesTpl();
                chargerOntologie();
                
                panneauPrincipal = new ContentPanel();
                panneauPrincipal.setLayout(new FitLayout());
                panneauPrincipal.setHeaderVisible(false);
                panneauPrincipal.setBodyBorder(false);
                        
            entete = new Html();
            entete.setId(ComposantId.ZONE_DETAIL_ENTETE);
            panneauPrincipal.setTopComponent(entete);
                
                onglets = new TabPanel();
                onglets.setId(ComposantId.ZONE_DETAIL_CORPS);
                onglets.setBodyBorder(false);
                
                identificationOnglet = new TabItem(i18nC.structureInfoGeneral());
                identificationOnglet.setLayout(new AnchorLayout());
                identificationOnglet.setScrollMode(Scroll.AUTO);
                onglets.add(identificationOnglet);
                
                personnelOnglet = new TabItem(i18nC.structureInfoPersonnel());
                personnelOnglet.setLayout(new AnchorLayout());
                personnelOnglet.setScrollMode(Scroll.AUTO);
                onglets.add(personnelOnglet);
                
                collectionOnglet = new TabItem(i18nC.structureInfoCollection());
                collectionOnglet.setLayout(new AnchorLayout());
                collectionOnglet.setScrollMode(Scroll.AUTO);
                onglets.add(collectionOnglet); 
                
                conservationOnglet = new TabItem(i18nC.structureInfoConservation());
                conservationOnglet.setLayout(new AnchorLayout());
                conservationOnglet.setScrollMode(Scroll.AUTO);
                onglets.add(conservationOnglet);
                
                valorisationOnglet = new TabItem(i18nC.structureInfoValorisation());
                valorisationOnglet.setLayout(new AnchorLayout());
                valorisationOnglet.setScrollMode(Scroll.AUTO);
                onglets.add(valorisationOnglet);
                
                panneauPrincipal.add(onglets);
                add(panneauPrincipal);
        }

        private void chargerOntologie() {
                String[] listesCodes = {"stpr", "stpu", "pays", "statut", "fonction",  "localStockage", "meubleStockage", 
                        "parametreStockage", "autreCollection", "onep", "opRestau", "autreMateriel", "poisonTraitement", 
                        "insecteTraitement", "actionValorisation", "continentEtFr", "typeRecherche"};
                lancerChargementListesValeurs(listesCodes, this.sequenceur);
                sequenceur.enfilerRafraichissement(this, new Information("ontologie_chargee"));
                
        }

        private void afficherDetailInstitution() {
                if (structure != null) {
                        personnel = structure.getPersonnel();
                        valorisation = structure.getValorisation();
                        conservation = structure.getConservation();
                        
                        afficherEntete();
                        afficherIdentification();
                        if (personnel != null) {
                                afficherPersonnel();
                        }
                        if (conservation != null) {
                                afficherConservation();
                        }
                        if (valorisation != null) {
                                afficherValorisation();
                        }
                        if (collection != null) {
                                afficherCollection();
                        }
                }
                layout();
        }
        
        private void afficherEntete() {
                Params enteteParams = new Params();
                enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE);
                enteteParams.set("css_meta", ComposantClass.META);
                
                enteteParams.set("i18n_id", i18nC.id());
                
                enteteParams.set("nom", structure.getNom());
                enteteParams.set("ville", structure.getVille());
                enteteParams.set("id", structure.getId());
                enteteParams.set("guid", structure.getGuid());
                
                String eHtml = Format.substitute(enteteTpl, enteteParams);
                entete.getElement().setInnerHTML(eHtml);
        }
        
        private void afficherIdentification() {
                Params identificationParams = new Params();
                identificationParams.set("i18n_titre_administratif", i18nC.titreAdministratif());
                identificationParams.set("i18n_acronyme", i18nC.acronyme());
                identificationParams.set("i18n_statut", i18nC.statut());
                identificationParams.set("i18n_date_fondation", i18nC.dateFondation());
                identificationParams.set("i18n_nbre_personnel", i18nC.nbrePersonnel());
                
                identificationParams.set("i18n_titre_description", i18nC.description());
                identificationParams.set("i18n_description", i18nC.description());
                identificationParams.set("i18n_acces", i18nC.acces());
                identificationParams.set("i18n_usage", i18nC.usage());
                
                identificationParams.set("i18n_titre_adresse", i18nC.adresse());
                identificationParams.set("i18n_adresse", i18nC.adresse());
                identificationParams.set("i18n_cp", i18nC.codePostal());
                identificationParams.set("i18n_ville", i18nC.ville());
                identificationParams.set("i18n_pays", i18nC.pays());
                identificationParams.set("i18n_latitude", i18nC.latitude());
                identificationParams.set("i18n_longitude", i18nC.longitude());
                
                identificationParams.set("i18n_titre_communication", i18nC.titreCommunication());
                identificationParams.set("i18n_tel", i18nC.telephone());
                identificationParams.set("i18n_fax", i18nC.FAX());
                identificationParams.set("i18n_courriel", i18nC.courriel());
                identificationParams.set("i18n_web", i18nC.siteWeb());

                String acronyme = construireTxtTruck(structure.getIdAlternatif());
                String typePrive = construireTxtListeOntologie(structure.getTypePrive());
                String typePublic = construireTxtListeOntologie(structure.getTypePublic());
                String pays =   construireTxtListeOntologie(structure.getPays());
                String web = construireTxtTruck(structure.getUrl(), false);
                String latitude = structure.getLatitude();
                String longitude = structure.getLongitude();
                String latitudeLongitude = (!longitude.equals("") && !latitude.equals("")) ? latitude+" / "+longitude : "";
                
                identificationParams.set("acronyme", acronyme);
                identificationParams.set("statut", typePrive+typePublic);
                
                String dateFondation = structure.getAnneOuDateFondationFormatLong();
                dateFondation = dateFondation.equals("0000") ? "" : dateFondation;
                identificationParams.set("date_fondation", dateFondation);
                identificationParams.set("nbre_personnel", structure.getNbrePersonne() != null ? structure.getNbrePersonne() : "");
                
                identificationParams.set("description", structure.getDescription());
                identificationParams.set("acces", structure.getConditionAcces());
                identificationParams.set("usage", structure.getConditionUsage());
                
                identificationParams.set("adresse", structure.getAdresse());
                identificationParams.set("cp", structure.getCodePostal());
                identificationParams.set("ville", structure.getVille());
                
                identificationParams.set("pays", pays);
                identificationParams.set("latitude_longitude", latitudeLongitude);
                
                identificationParams.set("tel", structure.getTelephoneFixe());
                identificationParams.set("fax", structure.getFax());
                
                identificationParams.set("courriel", structure.getCourriel());
                identificationParams.set("web", web);
                
                afficherOnglet(identificationTpl, identificationParams, identificationOnglet);
        }
        
        private void afficherPersonnel() {
                String tableauPersonnelHtml = "";
                if (personnel.size() > 0) {
                        tableauPersonnelHtml = construireTableauDuPersonnel();
                }
                
                Params personnelParams = new Params();
                personnelParams.set("i18n_titre_personnel", i18nC.titrePersonnel());
                personnelParams.set("i18n_nbre_personnel_collection", i18nC.nbrePersonnelCollection());
                personnelParams.set("nbre_personnel_collection", personnel.size());
                personnelParams.set("tableau_personnel", tableauPersonnelHtml);
                
                afficherOnglet(personnelTpl, personnelParams, personnelOnglet);
        }
        
        private String construireTableauDuPersonnel() {
                Params contenuParams = new Params();
                contenuParams.set("i18n_titre_membre", i18nC.titreMembre());
                contenuParams.set("i18n_fonction", i18nC.fonction());
                contenuParams.set("i18n_prenom", i18nC.personnePrenom());
                contenuParams.set("i18n_nom", i18nC.personneNom());
                contenuParams.set("i18n_tel", i18nC.FIX());
                contenuParams.set("i18n_fax", i18nC.FAX());
                contenuParams.set("i18n_courriel", i18nC.courrielPrincipal());
                contenuParams.set("i18n_statut", i18nC.statut());
                contenuParams.set("i18n_tps_w", i18nC.tpsTravail());
                contenuParams.set("i18n_specialite", i18nC.specialite());
                contenuParams.set("i18n_contact", i18nC.boolContact());
                
                String lignesPersonnel = ""; 
                
                Iterator<String> it = personnel.keySet().iterator();
                while (it.hasNext()) {
                        StructureAPersonne personne = personnel.get(it.next());
                        Params ligneParams = new Params();
                        
                        String fonction = construireTxtListeOntologie(personne.getFonction());
                        String statut = construireTxtListeOntologie(personne.getStatut());
                        String contact = formaterOuiNon(personne.getContact());
                        
                        ligneParams.set("fonction", fonction);
                        ligneParams.set("prenom", personne.getPrenom());
                        ligneParams.set("nom", personne.getNom());
                        ligneParams.set("tel_fix", personne.getTelephoneFixe());
                        ligneParams.set("tel_fax", personne.getFax());
                        ligneParams.set("courriel", personne.getCourriel());
                        ligneParams.set("statut", statut);
                        ligneParams.set("tps_w", personne.getBotaTravailHebdoTps());
                        ligneParams.set("specialite", personne.afficherSpecialite());
                        ligneParams.set("contact", contact);
                        lignesPersonnel += Format.substitute(lignePersonnelTpl, ligneParams);
                }
                contenuParams.set("lignes", lignesPersonnel);
                
                String cHtml = Format.substitute(tableauPersonnelTpl, contenuParams);
                return cHtml;
        }
        
        private void afficherConservation() {
                Params conservationParams  = new Params();
                conservationParams.set("i18n_titre_conservation_personnel", i18nC.titreConservationPersonnel());
                conservationParams.set("i18n_formation", i18nC.formation());
                conservationParams.set("i18n_formation_interet", i18nC.formationInteret());
                
                conservationParams.set("i18n_titre_local", i18nC.titreLocal());
                conservationParams.set("i18n_local_specifique", i18nC.localSpecifique());
                conservationParams.set("i18n_meuble_specifique", i18nC.meubleSpecifique());
                conservationParams.set("i18n_local_parametre", i18nC.localParametre());
                conservationParams.set("i18n_conservation_en_commun", i18nC.conservationEnCommun());
                conservationParams.set("i18n_acces_controle", i18nC.accesControle());
                
                conservationParams.set("i18n_titre_operation", i18nC.titreOperation());
                conservationParams.set("i18n_restauration", i18nC.restauration());
                conservationParams.set("i18n_materiel_conservation", i18nC.materielConservation());
                conservationParams.set("i18n_traitement", i18nC.traitement());
                
                conservationParams.set("i18n_titre_acquisition", i18nC.titreAcquisition());
                conservationParams.set("i18n_acquisition_collection", i18nC.acquisitionCollection());
                conservationParams.set("i18n_acquisition_echantillon", i18nC.acquisitionEchantillon());
                
                conservationParams.set("formation", formaterOuiNon(conservation.getFormation()));
                conservationParams.set("formation_info", formaterSautDeLigne(conservation.getFormationInfo()));
                conservationParams.set("formation_interet", formaterOuiNon(conservation.getFormationInteret()));
                conservationParams.set("meuble_specifique", conservation.getStockageMeuble());
                
                String chaineAAnalyser = conservation.getStockageLocal();
                String chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser);
                conservationParams.set("local_specifique", chaineAAfficher);
                
                chaineAAnalyser = conservation.getStockageMeuble();
                chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser);
                conservationParams.set("meuble_specifique", chaineAAfficher);
                
                chaineAAnalyser = conservation.getStockageParametre();
                chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser);
                conservationParams.set("local_parametre", chaineAAfficher);
                
                conservationParams.set("conservation_en_commun", formaterOuiNon(conservation.getCollectionCommune()));
                chaineAAnalyser = conservation.getCollectionAutre();
                chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser);
                conservationParams.set("collection_autre", formaterParenthese(chaineAAfficher));
                
                conservationParams.set("acces_controle", formaterOuiNon(conservation.getAccesControle()));
                
                conservationParams.set("restauration", formaterOuiNon(conservation.getRestauration()));
                chaineAAnalyser = conservation.getRestaurationOperation();
                chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser);
                conservationParams.set("restauration_operation", formaterParenthese(chaineAAfficher));
                
                chaineAAnalyser = conservation.getMaterielConservation();
                chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser);
                conservationParams.set("materiel_conservation", chaineAAfficher);
                chaineAAnalyser = conservation.getMaterielAutre();
                chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser);
                conservationParams.set("materiel_autre", formaterParenthese(chaineAAfficher));
                
                conservationParams.set("traitement", formaterOuiNon(conservation.getTraitement()));
                chaineAAnalyser = conservation.getTraitements();
                chaineAAfficher = construireTxtListeOntologie(chaineAAnalyser);
                conservationParams.set("traitements", formaterParenthese(chaineAAfficher));
                
                conservationParams.set("acquisition_collection", formaterOuiNon(conservation.getAcquisitionCollection()));
                conservationParams.set("acquisition_echantillon", formaterOuiNon(conservation.getAcquisitionEchantillon()));
                conservationParams.set("acquisition_traitement_info", construireTraitement());
                
                afficherOnglet(conservationTpl, conservationParams, conservationOnglet);
        }
        
        private String construireTraitement() {
                String cHtml = "";
                Integer echantillon = conservation.getAcquisitionEchantillon();
                
                if (echantillon != null && echantillon.intValue() == 1) {
                        Params traitementConservationParams  = new Params();
                        traitementConservationParams.set("i18n_acquisition_traitement", i18nC.acquisitionTraitement());
                        
                        traitementConservationParams.set("acquisition_traitement", formaterOuiNon(conservation.getAcquisitionTraitement()));
                        
                        traitementConservationParams.set("acquisition_traitement_type_info", construireTraitementType());
                        
                        cHtml = Format.substitute(traitementConservationTpl, traitementConservationParams);
                }
                
                return cHtml;
        }
        
        private String construireTraitementType() {
                String cHtml = "";
                String traitement = conservation.getAcquisitionTraitement();
                
                if (traitement.equals("1")) {
                        Params typeTraitementParams  = new Params();
                        typeTraitementParams.set("i18n_acquisition_traitement_insecte", i18nC.acquisitionTraitementInsecte());
                        typeTraitementParams.set("i18n_acquisition_traitement_poison", i18nC.acquisitionTraitementPoison());
                        
                        String acquisitionTraitementInsecte = construireTxtListeOntologie(conservation.getAcquisitionTraitementInsecte());
                        typeTraitementParams.set("acquisition_traitement_insecte", acquisitionTraitementInsecte);
                        String acquisitionTraitementPoison = construireTxtListeOntologie(conservation.getAcquisitionTraitementPoison());
                        typeTraitementParams.set("acquisition_traitement_poison", acquisitionTraitementPoison);
                        
                        cHtml = Format.substitute(typeTraitementConservationTpl, typeTraitementParams);
                }
                
                return cHtml;
        }
        
        private void afficherValorisation() {
                Params valorisationParams  = new Params();
                valorisationParams.set("i18n_titre_action_valorisation", i18nC.titreActionValorisation());
                valorisationParams.set("i18n_action", i18nC.action());
                valorisationParams.set("i18n_action_publication", i18nC.actionPublication());
                valorisationParams.set("i18n_collection_autre", i18nC.collectionAutre());
                valorisationParams.set("i18n_action_future", i18nC.actionFuture());     
                
                valorisationParams.set("action", formaterOuiNon(valorisation.getAction()));
                String actionInfo = construireTxtListeOntologie(valorisation.getActionInfo());
                valorisationParams.set("action_info", formaterParenthese(actionInfo));
                valorisationParams.set("action_publication", valorisation.getPublication());
                String collectionAutre = construireTxtListeOntologie(valorisation.getCollectionAutre());
                valorisationParams.set("collection_autre", collectionAutre);
                valorisationParams.set("action_future", formaterOuiNon(valorisation.getActionFuture()));
                valorisationParams.set("action_future_info", formaterParenthese(valorisation.getActionFutureInfo()));

                valorisationParams.set("i18n_titre_recherche_scientifique", i18nC.titreRechercherScientifique());
                valorisationParams.set("i18n_recherche", i18nC.recherche());
                
                valorisationParams.set("recherche", formaterOuiNon(valorisation.getRecherche()));
                valorisationParams.set("recherche_info", construireRecherche());
                
                valorisationParams.set("i18n_titre_acces_usage", i18nC.titreAccesUsage());
                valorisationParams.set("i18n_acces", i18nC.acces());
                valorisationParams.set("i18n_visite", i18nC.visite());
                
                valorisationParams.set("acces", formaterOuiNon(valorisation.getAccesSansMotif()));
                valorisationParams.set("acces_info", formaterParenthese(valorisation.getAccesSansMotifInfo()));
                valorisationParams.set("visite", formaterOuiNon(valorisation.getVisiteAvecMotif()));
                valorisationParams.set("visite_info", formaterParenthese(valorisation.getVisiteAvecMotifInfo()));
                
                afficherOnglet(valorisationTpl, valorisationParams, valorisationOnglet);
        }
        
        private String construireRecherche() {
                String cHtml = "";
                Integer recherche = valorisation.getRecherche();
                
                if (recherche != null && recherche.intValue() == 1) {
                        Params rechercheParams  = new Params();
                        rechercheParams.set("i18n_recherche_provenance", i18nC.rechercheProvenance());
                        rechercheParams.set("i18n_recherche_type", i18nC.rechercheType());
                        
                        String rechercheProvenance = construireTxtListeOntologie(valorisation.getRechercheProvenance());
                        rechercheParams.set("recherche_provenance", rechercheProvenance);
                        String rechercheType = construireTxtListeOntologie(valorisation.getRechercheType());
                        rechercheParams.set("recherche_type", rechercheType);
                        
                        cHtml = Format.substitute(rechercheValorisationTpl, rechercheParams);
                }
                
                return cHtml;
        }
        
        private void afficherCollection() {
                Params collectionParams  = new Params();
                
                collectionParams.set("i18n_titre_collection", i18nC.structureInfoCollection());
                collectionParams.set("i18n_indication_collection", i18nC.structureIndicationCollection());
                collectionParams.set("i18n_indication_lien_collection", i18nC.structureIndicationLienCollection());
                collectionParams.set("css_indication_titre_petit", ComposantClass.INDICATION_TITRE_PETIT);
                
                String guidTpl = ((Configuration) Registry.get(RegistreId.CONFIG)).getUrl("consultationCollectionsLieesStructures");
                String guid = guidTpl.replace("{str_id}", structure.getId());
                collectionParams.set("guid_structure", guid);
                
                String tableauCollectionHtml = "";
                if (collection.size() > 0) {
                        tableauCollectionHtml = construireTableauCollection();
                }
                collectionParams.set("tableau_collection", tableauCollectionHtml);
                
                afficherOnglet(collectionTpl, collectionParams, collectionOnglet);
        }
        
        private String construireTableauCollection() {
                Params contenuParams = new Params();
                String lignesCollection = ""; 
                
                contenuParams.set("i18n_nom_collection", i18nC.nomCollection());
                contenuParams.set("i18n_id_collection", i18nC.id());
                contenuParams.set("i18n_lien_collection", i18nC.structureLienCollection());
                contenuParams.set("css_largeur_colonne_id", ComposantClass.LARGEUR_COLONNE_ID);
                
                String guidTpl = ((Configuration) Registry.get(RegistreId.CONFIG)).getUrl("consultationCollections");
                
                Iterator<String> it = collection.keySet().iterator();
                while (it.hasNext()) {
                        CollectionAStructure collectionCourante = collection.get(it.next());
                        Params ligneParams = new Params();
                        
                        String guidCollection = guidTpl.replace("{col_id}", collectionCourante.getIdCollection());
                        ligneParams.set("guid_structure", guidCollection);
                        
                        ligneParams.set("id_collection", collectionCourante.getIdCollection());
                        ligneParams.set("nom_collection", collectionCourante.getNom());
                        ligneParams.set("lien_collection", guidCollection);
                        
                        lignesCollection += Format.substitute(ligneCollectionTpl, ligneParams);
                }
                contenuParams.set("lignes", lignesCollection);
                
                String cHtml = Format.substitute(tableauCollectionTpl, contenuParams);
                return cHtml;
        }
        
        private void initialiserTousLesTpl() {
                initialiserEnteteTpl();
                initialiserIdentificationTpl();
                initialiserPersonnelTpl();
                initialiserTableauPersonnelTpl();
                initialiserLignePersonnelTpl();
                initialiserConservationTpl();
                initialiserTraitementConservationTpl();
                initialiserTypeTraitementConservationTpl();
                initialiserValorisationTpl();
                initialiserRechercheValorisationTpl();
                initialiserCollectionTpl();
                initialiserTableauCollectionTpl();
                initialiserLigneCollectionTpl();
        }
        
        private void initialiserEnteteTpl() {
                enteteTpl =     
                        "<div id='{css_id}'>"+
                        "       <h1>{nom}</h1>"+
                        "       <h2>{ville}<span class='{css_meta}'> <br /> {i18n_id}:{id} - {guid}</span></h2>" +
                        "       " +
                        "</div>";
        }
        
        private void initialiserIdentificationTpl() {
                identificationTpl =
                        "<div class='{css_corps}'>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_administratif}</h2>"+
                        "               <span class='{css_label}'>{i18n_acronyme} :</span> {acronyme}<br />"+
                        "               <span class='{css_label}'>{i18n_statut} :</span> {statut}<br />"+
                        "               <span class='{css_label}'>{i18n_date_fondation} :</span> {date_fondation}<br />"+
                        "               <span class='{css_label}'>{i18n_nbre_personnel} :</span> {nbre_personnel}<br />"+
                        "       </div>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_description}</h2>"+
                        "               <span class='{css_label}'>{i18n_description} :</span> {description}<br />"+
                        "               <span class='{css_label}'>{i18n_acces} :</span> {acces}<br />"+
                        "               <span class='{css_label}'>{i18n_usage} :</span> {usage}<br />"+
                        "       </div>"+
                        "       <hr class='{css_clear}'/>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_adresse}</h2>"+
                        "               <span class='{css_label}'>{i18n_adresse} :</span> {adresse}<br />" +
                        "               <span class='{css_label}'>{i18n_cp} :</span> {cp}<br />" +
                        "               <span class='{css_label}'>{i18n_ville} :</span> {ville}<br />" +
                        "               <span class='{css_label}'>{i18n_pays} :</span> {pays}<br />" +
                        "               <span class='{css_label}'>{i18n_latitude} / {i18n_longitude} :</span> {latitude_longitude}<br />" +
                        "       </div>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_communication}</h2>"+
                        "               <span class='{css_label}'>{i18n_tel} :</span> {tel}<br />"+
                        "               <span class='{css_label}'>{i18n_fax} :</span> {fax}<br />"+
                        "               <span class='{css_label}'>{i18n_courriel} :</span> {courriel}<br />"+
                        "               <span class='{css_label}'>{i18n_web} :</span> {web}<br />"+
                        "       </div>"+
                        "</div>";
        }
        
        private void initialiserPersonnelTpl() {
                personnelTpl =
                        "<div class='{css_corps}'>"+
                        "       <h2>{i18n_titre_personnel}</h2>"+
                        "       <p><span class='{css_label}'>{i18n_nbre_personnel_collection} :</span> {nbre_personnel_collection}</p>"+
                        "       {tableau_personnel}"+
                        "</div>";
        }
        
        private void initialiserTableauPersonnelTpl() {
                tableauPersonnelTpl =
                        "<h3>{i18n_titre_membre}</h3>"+
                        "<table>"+
                        "       <thead>"+
                        "               <tr>" +
                        "                       <th>{i18n_fonction}</th>" +
                        "                       <th>{i18n_prenom}</th>" +
                        "                       <th>{i18n_nom}</th>" +
                        "                       <th>{i18n_tel}</th>" +
                        "                       <th>{i18n_fax}</th>" +
                        "                       <th>{i18n_courriel}</th>" +
                        "                       <th>{i18n_statut}</th>" +
                        "                       <th>{i18n_tps_w}</th>" +
                        "                       <th>{i18n_specialite}</th>" +
                        "                       <th>{i18n_contact}</th>" +
                        "               </tr>"+
                        "       </thead>"+
                        "       <tbody>"+
                        "               {lignes}"+
                        "       </tbody>"+
                        "</table>";
        }
        
        private void initialiserLignePersonnelTpl() {
                lignePersonnelTpl =
                        "<tr>"+
                        "       <td>{fonction}</td>"+
                        "       <td>{prenom}</td>"+
                        "       <td>{nom}</td>"+
                        "       <td>{tel_fix}</td>" +
                        "       <td>{tel_fax}</td>" +
                        "       <td>{courriel}</td>" +
                        "       <td>{statut}</td>" +
                        "       <td>{tps_w}</td>" +
                        "       <td>{specialite}</td>" +
                        "       <td>{contact}</td>" +
                        "</tr>";
        }
        
        private void initialiserConservationTpl() {
                conservationTpl =
                        "<div class='{css_corps}'>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_conservation_personnel}</h2>"+
                        "               <span class='{css_label}'>{i18n_formation} :</span> {formation}<br />"+
                        "               {formation_info}<br />"+
                        "               <span class='{css_label}'>{i18n_formation_interet} :</span> {formation_interet}<br />"+
                        "       </div>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_local}</h2>"+
                        "               <span class='{css_label}'>{i18n_local_specifique} :</span> {local_specifique}<br />"+
                        "               <span class='{css_label}'>{i18n_meuble_specifique} :</span> {meuble_specifique}<br />"+
                        "               <span class='{css_label}'>{i18n_local_parametre} :</span> {local_parametre}<br />"+
                        "               <span class='{css_label}'>{i18n_conservation_en_commun} :</span> {conservation_en_commun} {collection_autre}<br />"+
                        "               <span class='{css_label}'>{i18n_acces_controle} :</span> {acces_controle}<br />"+
                        "       </div>"+
                        "       <hr class='{css_clear}'Window/>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_operation}</h2>"+
                        "               <span class='{css_label}'>{i18n_restauration} :</span> {restauration} {restauration_operation}<br />"+
                        "               <span class='{css_label}'>{i18n_materiel_conservation} :</span> {materiel_conservation} {materiel_autre}<br />"+
                        "               <span class='{css_label}'>{i18n_traitement} :</span> {traitement} {traitements}<br />"+
                        "       </div>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_acquisition}</h2>"+
                        "               <span class='{css_label}'>{i18n_acquisition_collection} :</span> {acquisition_collection}<br />"+
                        "               <span class='{css_label}'>{i18n_acquisition_echantillon} :</span> {acquisition_echantillon}<br />"+
                        "                       {acquisition_traitement_info}" +        
                        "       </div>"+
                        "</div>";
        }
        
        private void initialiserTraitementConservationTpl() {
                traitementConservationTpl =
                        "<span class='{css_indentation} {css_label}'>{i18n_acquisition_traitement} :</span> {acquisition_traitement}<br />"+
                        "       <div class='{css_indentation}'>"+
                        "               {acquisition_traitement_type_info}"+
                        "       </div>";
        }
        
        private void initialiserTypeTraitementConservationTpl() {
                typeTraitementConservationTpl =
                        "<span class='{css_indentation} {css_label}'>{i18n_acquisition_traitement_insecte} :</span> {acquisition_traitement_insecte}<br />"+
                        "<span class='{css_indentation} {css_label}'>{i18n_acquisition_traitement_poison} :</span> {acquisition_traitement_poison}<br />";
        }
        
        private void initialiserValorisationTpl() {
                valorisationTpl =
                        "<div class='{css_corps}'>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_action_valorisation}</h2>"+
                        "               <span class='{css_label}'>{i18n_action} :</span> {action} {action_info}<br />"+
                        "               <span class='{css_label}'>{i18n_action_publication} :</span> {action_publication}<br />"+
                        "               <span class='{css_label}'>{i18n_collection_autre} :</span> {collection_autre}<br />"+
                        "               <span class='{css_label}'>{i18n_action_future} :</span> {action_future} {action_future_info}<br />"+    
                        "       </div>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_recherche_scientifique}</h2>"+
                        "               <span class='{css_label}'>{i18n_recherche} :</span> {recherche}<br />"+
                        "                       {recherche_info}"+
                        "       </div>"+
                        "       <hr class='{css_clear}'/>"+
                        "       <div class='{css_fieldset}'>"+
                        "               <h2>{i18n_titre_acces_usage}</h2>"+
                        "               <span class='{css_label}'>{i18n_visite} :</span> {visite} {visite_info}<br />"+
                        "               <span class='{css_label}'>{i18n_acces} :</span> {acces} {acces_info}<br />"+
                        "       </div>"+
                        "</div>";
        }
        
        private void initialiserRechercheValorisationTpl() {
                rechercheValorisationTpl =
                        "<span class='{css_indentation} {css_label}'>{i18n_recherche_provenance} :</span> {recherche_provenance}<br />"+
                        "<span class='{css_indentation} {css_label}'>{i18n_recherche_type} :</span> {recherche_type}<br />";
        }
        
        private void initialiserCollectionTpl() {
                collectionTpl =
                        "<div class='{css_corps}'>"+
                        "       <h2>{i18n_titre_collection} (<span class='{css_label} {css_indication_titre_petit}'>{i18n_indication_collection}</span>)</h2>"+
                        "       {tableau_collection}"+
                        "       <p> "+
                        "               <a href=\"{guid_structure}\" class=\"{css_indication_titre_petit}\" target=\"_blank\">{i18n_indication_lien_collection}</a>"+
                        "       </p>"+
                        "</div>";
        }
        
        private void initialiserTableauCollectionTpl() {
                tableauCollectionTpl =          
                        "<table>"+
                        "       <thead>"+
                        "               <tr>" +
                        "                       <th class=\"{css_largeur_colonne_id}\">{i18n_id_collection}</th>" +
                        "                       <th>{i18n_nom_collection}</th>" +
                        "                       <th>{i18n_lien_collection}</th>" +
                        "               </tr>"+
                        "       </thead>"+
                        "       <tbody>"+
                        "               {lignes}"+
                        "       </tbody>"+
                        "</table>";
        }
        
        private void initialiserLigneCollectionTpl() {
                ligneCollectionTpl =
                        "<tr>"+
                        "       <td>{id_collection}</td>"+
                        "       <td>{nom_collection}</td>"+
                        "       <td><a href=\"{lien_collection}\" target=\"_blank\">{lien_collection}</a></td>"+
                        "</tr>";
        }
        
        public void rafraichir(Object nouvellesDonnees) {
                if (nouvellesDonnees instanceof Structure) {
                        structure = (Structure) nouvellesDonnees;
                        structureChargementOk = true;
                } else if (nouvellesDonnees instanceof ValeurListe) {
                        ValeurListe listeValeursReceptionnee = (ValeurListe) nouvellesDonnees;
                        receptionerListeValeurs(listeValeursReceptionnee);
                } else if (nouvellesDonnees instanceof Information) {
                        Information info = (Information) nouvellesDonnees;
                        if (info.getType().equals("liste_structure_a_personne")) {
                                allouerPersonnelAStructure((StructureAPersonneListe) info.getDonnee(0));
                                personnelChargementOk = true;
                        } else if (info.getType().equals("liste_collection_a_structure")) {
                                allouerCollectionAStructure((CollectionAStructureListe) info.getDonnee(0));
                                collectionChargementOk = true;
                        } else if (info.getType().equals("ontologie_chargee")) {
                                ontologieChargementOk = true;
                        }
                } else {
                                GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
                }
                if (avoirDonneesChargees()) {
                        afficherDetailInstitution();
                }
        }
        
        private void allouerCollectionAStructure(CollectionAStructureListe donnee) {
                collection = donnee;
        }

        protected void allouerPersonnelAStructure(StructureAPersonneListe personnel) {
                structure.setPersonnel(personnel);
        }
        
        private boolean avoirDonneesChargees() {
                boolean ok = false;
                if (structureChargementOk && personnelChargementOk && ontologieChargementOk) {
                        ok = true;
                }
                return ok;
        }
}