Subversion Repositories eFlore/Applications.coel

Rev

Rev 716 | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues;

import java.util.ArrayList;

import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.i18n.Constantes;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Publication;
import org.tela_botanica.client.modeles.PublicationListe;
import org.tela_botanica.client.modeles.Structure;

import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.store.ListStore;
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.user.client.Window;

public class PublicationDetailVue extends ContentPanel implements Rafraichissable {
        
        private Mediateur mediateur = null;
        private Constantes i18nC = null;
        
        private ContentPanel content;
        private Html header;
        private String enteteHTML = "<div id='coel-detail-entete'><div id='css_id'><h1>{0}</h1><h2>{1}</h2><h2>{2}</h2></div></div>";
        private String contenuHTML = "<div id='coel-detail-corps'><div class='css_fieldset coel-detail-corps-contenu'><h2>Détails de la publication</h2><span style='font-weight:bold;'>Nom de la revue :</span> {0}<br /><span style='font-weight:bold;'>Editeur :</span> {1}<br /><span style='font-weight:bold;'>Année :</span> {2}<br /><span style='font-weight:bold;'>Tome :</span> {3}<br /><span style='font-weight:bold;'>Fascicule :</span> {4}<br /><span style='font-weight:bold;'>Pages :</span> {5}</div></div>";
        private String publicationNom = null;
        private String publicationAuteur = null;
        private String publicationDateParution = null;

        public PublicationDetailVue(Mediateur mediateurCourant) {
                mediateur = mediateurCourant;
                i18nC = mediateur.i18nC;
                
                setHeaderVisible(false);
                setLayout(new FitLayout());

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

                header = new Html();
                content.setTopComponent(header);

                add(content);
        }

        public void afficherDetailPublication(Publication publication) {
                if (publication != null) {
                        content.removeAll();
                        
                        publicationNom = publication.getTitre();
                        publicationAuteur = publication.getAuteur().replaceAll("\\|", ", ");;
                        publicationDateParution = publication.getDateParution();
                        if(publicationDateParution.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
                                publicationDateParution = publicationDateParution.split("-")[0];
                        }

                        Params enteteParams = new Params();
                        enteteParams.add(publicationNom);
                        enteteParams.add(publicationAuteur);
                        enteteParams.add(publicationDateParution);

                        String eHtml = Format.substitute(enteteHTML, enteteParams);
                        header.getElement().setInnerHTML(eHtml);

                        Params contenuParams = new Params();
                        contenuParams.add(publication.getCollection());
                        contenuParams.add(publication.getNomEditeur());

                        contenuParams.add(publicationDateParution);
                        contenuParams.add(publication.getIndicationNvt());
                        contenuParams.add(publication.getFascicule());
                        contenuParams.add(publication.getPages());
                        
                        String cHtml = Format.substitute(contenuHTML, contenuParams);
                        content.addText(cHtml);

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

        public void rafraichir(Object nouvelleDonnees) {
                
                if (nouvelleDonnees instanceof Publication) {
                        afficherDetailPublication((Publication) nouvelleDonnees);
                } else if (nouvelleDonnees instanceof PublicationListe) {
                        PublicationListe listePublication = (PublicationListe) nouvelleDonnees;
                        // Test pour savoir si la liste contient des éléments
                        if (listePublication.size() == 0) {
                                afficherDetailPublication(null);
                        }
                }
        }

}