Rev 1513 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.publication;
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.projet.ProjetListe;
import org.tela_botanica.client.modeles.publication.Publication;
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 PublicationDetailVue 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 Publication publication = null;
private boolean publicationChargementOk = false;
public PublicationDetailVue(Mediateur mediateurCourant) {
super(mediateurCourant);
initialiserTousLesTpl();
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>{auteurs} ({annee})<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_nom_complet} :</span> {nom_complet}<br />"+
" <span class='{css_label}'>{i18n_auteurs} :</span> {auteurs}<br />"+
" <span class='{css_label}'>{i18n_titre} :</span> {titre}<br />"+
" <span class='{css_label}'>{i18n_collection} :</span> {collection}<br />"+
" <span class='{css_label}'>{i18n_editeur} :</span> {editeur}<br />"+
" <span class='{css_label}'>{i18n_annee} :</span> {annee}<br />"+
" <span class='{css_label}'>{i18n_nvt} :</span> {nvt}<br />"+
" <span class='{css_label}'>{i18n_fascicule} :</span> {fascicule}<br />"+
" <span class='{css_label}'>{i18n_pages} :</span> {pages}<br />"+
"</div>";
}
public void afficherDetail() {
if (publication != null) {
afficherEntete();
afficherDetailPublication();
}
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("titre", publication.getTitre());
enteteParams.set("auteurs", publication.getAuteur());
enteteParams.set("annee", publication.getAnneeParution());
enteteParams.set("id", publication.getId());
enteteParams.set("guid", getGuid());
enteteParams.set("projet", construireTxtProjet(publication.getIdProjet()));
String eHtml = Format.substitute(enteteTpl, enteteParams);
entete.getElement().setInnerHTML(eHtml);
}
public String getGuid() {
String guid = "URN:tela-botanica.org:";
guid += "coel"+publication.getIdProjet()+":";
guid += "pub"+publication.getId();
return guid;
}
public void afficherDetailPublication() {
Params contenuParams = new Params();
contenuParams.set("i18n_nom_complet", i18nC.publicationNomComplet());
contenuParams.set("i18n_auteurs", i18nC.publicationAuteurs());
contenuParams.set("i18n_titre", i18nC.publicationTitre());
contenuParams.set("i18n_collection", i18nC.publicationRevueCollection());
contenuParams.set("i18n_editeur", i18nC.publicationEditeur());
contenuParams.set("i18n_annee", i18nC.publicationDateParution());
contenuParams.set("i18n_nvt", i18nC.publicationNvt());
contenuParams.set("i18n_fascicule", i18nC.publicationFascicule());
contenuParams.set("i18n_pages", i18nC.publicationPage());
contenuParams.set("nom_complet", publication.getNomComplet());
contenuParams.set("auteurs", publication.getAuteur());
contenuParams.set("titre", publication.getTitre());
contenuParams.set("collection", publication.getCollection());
contenuParams.set("editeur", publication.getNomEditeur());
contenuParams.set("annee", publication.getAnneeParution());
contenuParams.set("nvt", publication.getIndicationNvt());
contenuParams.set("fascicule", publication.getFascicule());
contenuParams.set("pages", publication.getPages());
String gHtml = formaterContenu(contenuTpl, contenuParams);
contenu.getElement().setInnerHTML(gHtml);
}
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Publication) {
publication = (Publication) nouvellesDonnees;
publicationChargementOk = true;
} else if (nouvellesDonnees instanceof ProjetListe) {
projets = (ProjetListe) nouvellesDonnees;
projetsChargementOk = true;
} else {
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
if (avoirDonneesChargees()) {
afficherDetail();
}
}
private boolean avoirDonneesChargees() {
boolean ok = false;
if (projetsChargementOk && publicationChargementOk) {
ok = true;
}
return ok;
}
}