Subversion Repositories eFlore/Applications.coel

Rev

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

package org.tela_botanica.client.vues.commentaire;

import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.commentaire.Commentaire;
import org.tela_botanica.client.modeles.projet.ProjetListe;
import org.tela_botanica.client.vues.DetailVue;

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;
import com.google.gwt.core.client.GWT;

public class CommentaireDetailVue extends DetailVue implements Rafraichissable {
        
        private String enteteTpl = null;
        private String contenuTpl = null;
                
        private ContentPanel panneauPrincipal = null;
        private Html entete = null;
        private Html contenu = null;
        
        private Commentaire commentaire = null;
        private boolean commentaireChargementOk = false;

        public CommentaireDetailVue(Mediateur mediateurCourant) {
                super(mediateurCourant);
                
                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);
            
            contenu = new Html();
            panneauPrincipal.add(contenu);
            
                add(panneauPrincipal);
        }

        private void initialiserTousLesTpl() {
                initialiserEnteteHtmlTpl();
                initialiserGeneralTpl();
        }
        
        private void initialiserEnteteHtmlTpl() {
                enteteTpl =     
                        "<div id='{css_id}'>"+
                        "       <h1>{titre}</h1>"+
                        "       <h2>{collection}<span class='{css_meta}'>{projet} <br /> {i18n_id}:{id} - {guid}</span></h2>" +
                        "</div>";
        }
        
        private void initialiserGeneralTpl() {
                contenuTpl =
                        "<div class='{css_corps}'>"+
                        "               <span class='{css_label}'>{i18n_type} :</span> {type}<br />"+
                        "               <span class='{css_label}'>{i18n_public} :</span> {public}<br />"+
                        "               <span class='{css_label}'>{i18n_ponderation} :</span> {ponderation}<br />"+
                        "               <span class='{css_label}'>{i18n_texte} :</span>"+
                        "               {texte}"+
                        "</div>";
        }
        
        private void chargerOntologie() {
                String[] listesCodes = {"typeCommentaireCollection"};
                lancerChargementListesValeurs(listesCodes);
        }
        
        public void afficherDetail() {
                if (commentaire != null) {
                        afficherEntete();
                        afficherDetailCommentaire();
                }
                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("collection", commentaire.getCollection().getNom());
                enteteParams.set("titre", commentaire.getTitre());
                enteteParams.set("id", commentaire.getId());
                enteteParams.set("guid", getGuid());
                enteteParams.set("projet", construireTxtProjet(commentaire.getIdProjet()));
                
                String eHtml = Format.substitute(enteteTpl, enteteParams);
                entete.getElement().setInnerHTML(eHtml);
        }
        
        public String getGuid() {
                String guid = "URN:tela-botanica.org:";
                guid += "coel"+commentaire.getIdProjet()+":";
                guid += "com"+commentaire.getId();
                return guid;
        }
        
        public void afficherDetailCommentaire() {
                Params contenuParams = new Params();
                
                contenuParams.set("i18n_type", i18nC.commentaireType());
                contenuParams.set("i18n_public", i18nC.commentairePublic());
                contenuParams.set("i18n_ponderation", i18nC.commentairePonderation());
                contenuParams.set("i18n_texte", i18nC.commentaireTexte());
                
                String type = construireTxtListeOntologie(commentaire.getCollectionACommentaire().getType());
                
                contenuParams.set("type", type);
                contenuParams.set("ponderation", commentaire.getPonderation());
                contenuParams.set("public", (commentaire.etrePublic() ? "public" : "privé"));
                contenuParams.set("texte", commentaire.getTexte());
                
                String gHtml = formaterContenu(contenuTpl, contenuParams);
                contenu.getElement().setInnerHTML(gHtml);
        }
        
        public void rafraichir(Object nouvellesDonnees) {
                if (nouvellesDonnees instanceof Commentaire) {
                        commentaire = (Commentaire) nouvellesDonnees;
                        commentaireChargementOk = true;
                } else if (nouvellesDonnees instanceof ProjetListe) {
                        projets = (ProjetListe) nouvellesDonnees;
                        projetsChargementOk = true;
                } else if (nouvellesDonnees instanceof ValeurListe) {
                        ValeurListe listeValeursReceptionnee = (ValeurListe) nouvellesDonnees;
                        receptionerListeValeurs(listeValeursReceptionnee);
                } else {
                        GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
                }
                
                if (avoirDonneesChargees()) {
                        afficherDetail();
                }
        }
        
        private boolean avoirDonneesChargees() {
                boolean ok = false;
                if (projetsChargementOk && commentaireChargementOk) {
                        ok = true;
                }
                return ok;
        }
}