Subversion Repositories eFlore/Applications.coel

Rev

Rev 150 | Rev 189 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues;

import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Personne;
import org.tela_botanica.client.modeles.Projet;
import org.tela_botanica.client.modeles.ProjetsListeAsyncDao;
import org.tela_botanica.client.modeles.Structure;
import org.tela_botanica.client.modeles.StructureListe;

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.layout.FitLayout;

public class PersonneDetailPanneauVue extends ContentPanel implements Rafraichissable {

        private ContentPanel content;
        private Html header;
        private String enteteHTML = "<div class='coel-detail'><h1>{0}</h1><h2><a href=\"mailto:{1}\">{1}</a></h2></div>";
        private String contenuHTML = "<div style='padding: 12px;'><p>{0}</p><b>Adresse: </b>{1}<br />{2}<br /></div>";
        private String structureNom = null;
        private String structureVille = null;
        private String structureDescription = null;

        public PersonneDetailPanneauVue() {
                Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this);
                
                setHeaderVisible(false);
                setLayout(new FitLayout());

                content = new ContentPanel();
                content.setBodyBorder(false);
                content.setHeaderVisible(false);
                content.setScrollMode(Scroll.AUTO);

                header = new Html();
                header.setStyleName("coel-detail");
                content.setTopComponent(header);

                add(content);
        }

        public void ajouterParam(Params parametres, String nomChamp, Personne personne) {
                parametres.add(personne.obtenirValeurChamp(nomChamp));
                //return parametres;
        }       
        
        public void afficherDetailPersonne(Personne personne) {
                if (personne != null) {
                        content.removeAll();
                        
                        //Header        
                        Params enteteParams = new Params();
                        ajouterParam(enteteParams, "fmt_nom_complet", personne);
                        ajouterParam(enteteParams, "truk_courriel", personne);
                        
                        header.getElement().setInnerHTML(Format.substitute(enteteHTML, enteteParams));
                        
                        //Contenu
                        Params contenuParams = new Params();
                        ajouterParam(contenuParams, "description", personne);
                        
                        ajouterParam(contenuParams, "adresse_01", personne);
                        ajouterParam(contenuParams, "adresse_02", personne);
                        
                        
                        content.addText(Format.substitute(contenuHTML, contenuParams));

                        layout();
                } else {
                        header.setHtml("");
                        content.removeAll();
                }
        }

        public void rafraichir(Object nouvelleDonnees) {
                if (nouvelleDonnees instanceof Personne) {
                        afficherDetailPersonne((Personne) nouvelleDonnees);
                } else if (nouvelleDonnees instanceof StructureListe) {
                        StructureListe listeInstitutions = (StructureListe) nouvelleDonnees;
                        // Test pour savoir si la liste contient des éléments
                        if (listeInstitutions.size() == 0) {
                                afficherDetailPersonne(null);
                        }
                }
        }

}