New file |
0,0 → 1,407 |
package org.tela_botanica.client.vues.personne; |
|
import java.util.Collection; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.LinkedList; |
import java.util.List; |
|
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.Valeur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.modeles.personne.Personne; |
import org.tela_botanica.client.modeles.publication.Publication; |
import org.tela_botanica.client.modeles.publication.PublicationAPersonne; |
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe; |
import org.tela_botanica.client.synchronisation.Sequenceur; |
import org.tela_botanica.client.util.Debug; |
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.form.FieldSet; |
import com.extjs.gxt.ui.client.widget.form.LabelField; |
import com.extjs.gxt.ui.client.widget.layout.AnchorLayout; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.layout.FlowLayout; |
import com.google.gwt.user.client.ui.Image; |
|
public class PersonneDetailVue extends DetailVue implements Rafraichissable { |
|
private TabPanel tabPanel; |
private Html entete; |
|
private TabItem tabIdentite; |
private TabItem tabAdresse; |
private TabItem tabInfosNat; |
private TabItem tabLogos; |
private TabItem tabPublications; |
|
private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG); |
private Personne personneAAfficher = null; |
|
private String tableauPublicationsLieesTpl = ""; |
private String lignePublicationLieeTpl = ""; |
|
private Sequenceur sequenceur = new Sequenceur(); |
|
public PersonneDetailVue(Mediateur mediateur) { |
super(mediateur); |
|
setLayout(new FitLayout()); |
|
entete = new Html(); |
entete.setId(ComposantId.ZONE_DETAIL_ENTETE); |
|
ContentPanel panneauPrincipal = new ContentPanel(); |
panneauPrincipal.setLayout(new FitLayout()); |
panneauPrincipal.setHeaderVisible(false); |
panneauPrincipal.setBodyBorder(true); |
panneauPrincipal.setTopComponent(entete); |
|
tabIdentite = new TabItem(i18nC.personneIdentite()); |
tabIdentite.setTitle(i18nC.personneIdentite()); |
tabIdentite.setLayout(new AnchorLayout()); |
tabIdentite.setScrollMode(Scroll.AUTO); |
|
tabAdresse = new TabItem(i18nC.personneAdresses()); |
tabAdresse.setTitle(i18nC.personneAdresses()); |
tabAdresse.setLayout(new FitLayout()); |
tabAdresse.setScrollMode(Scroll.AUTO); |
|
tabInfosNat = new TabItem(i18nC.personneInfoNat()); |
tabInfosNat.setTitle(i18nC.personneInfoNat()); |
tabInfosNat.setScrollMode(Scroll.AUTO); |
|
tabPublications = new TabItem(i18nC.tabPublications()); |
tabPublications.setTitle(i18nC.tabPublications()); |
tabPublications.setScrollMode(Scroll.AUTO); |
tabPublications.setLayout(new FlowLayout()); |
|
tabLogos = new TabItem(i18nC.personneLogos()); |
tabLogos.setTitle(i18nC.personneLogos()); |
tabLogos.setScrollMode(Scroll.AUTO); |
tabLogos.setLayout(new FlowLayout()); |
|
tabPanel = new TabPanel(); |
tabPanel.setId(ComposantId.ZONE_DETAIL_CORPS); |
tabPanel.setBodyBorder(false); |
|
tabPanel.add(tabIdentite); |
tabPanel.add(tabAdresse); |
tabPanel.add(tabInfosNat); |
tabPanel.add(tabPublications); |
tabPanel.add(tabLogos); |
|
panneauPrincipal.add(tabPanel); |
add(panneauPrincipal); |
} |
|
public void afficherDetailPersonne(Personne personne) { |
if (personne != null) { |
String tplEntete = initialiserTplEntete(); |
|
//Sélection des publication à personne |
mediateur.selectionnerPublicationAPersonne(this, null, personne.getId(), new LinkedList(), null); |
|
Params enteteParams = new Params(); |
enteteParams.set("nom", (String) personne.get("fmt_nom_complet")); |
enteteParams.set("mail", (String) personne.getCourrielPrinc()); |
|
tabLogos.removeAll(); |
LinkedList lstLogos = (LinkedList) personne |
.getChaineDenormaliseAsMapOrList("truk_logo"); |
if (lstLogos != null && lstLogos.size() > 0) { |
|
|
String urlLogoPrinc = (String) lstLogos.get(0); |
if (!urlLogoPrinc.trim().equals("")) { |
tplEntete = "<div id='personne-logo-div'><img src='{image}' alt='logo' /></div>" |
+ tplEntete; |
enteteParams.set("image", urlLogoPrinc); |
} |
|
Iterator<String> itLogo = lstLogos.iterator(); |
while (itLogo.hasNext()) { |
String urlLogoCourant = itLogo.next(); |
Image imgCourante = new Image(urlLogoCourant); |
tabLogos.add(imgCourante); |
} |
tabLogos.enable(); |
|
} else { |
enteteParams.set("image", ""); |
tabLogos.disable(); |
} |
|
entete.el().setInnerHtml(Format.substitute(tplEntete, enteteParams)); |
|
String tplIdentite = initialiserTplIdentite(); |
|
Params tabIdentiteParams = new Params(); |
tabIdentiteParams.set("nom_complet", personne.getString("fmt_nom_complet")); |
tabIdentiteParams.set("abreviation", personne.getString("abreviation")); |
tabIdentiteParams.set("naissance_date", personne.getAnneeOuDateNaiss().equals("") ? "" : personne.getAnneeOuDateNaiss()); |
tabIdentiteParams.set("naissance_lieu", personne.getString("naissance_lieu")); |
String tplDeces = ""; |
if (personne.estDecedee()) { |
tplDeces = " <h2>Décès:</h2>" |
+ " <span><b>" |
+ i18nC.personneDateDeces() |
+ ":</b></span> {deces_date}<br />" |
+ " <span><b>" |
+ i18nC.personneLieuDeces() |
+ ":</b></span> {deces_lieu}<br /><br />"; |
|
tabIdentiteParams.set("deces_date", personne.getAnneeOuDateDeces().equals("") ? "" : personne.getAnneeOuDateDeces()); |
tabIdentiteParams.set("deces_lieu", personne.getString("deces_lieu")); |
} |
|
Params paramsDeces = new Params(); |
paramsDeces.set("tplDeces", tplDeces); |
tplIdentite = Format.substitute(tplIdentite, paramsDeces); |
|
tabIdentiteParams.set("description", personne.getString("description")); |
|
tabInfosNat.removeAll(); |
|
tabIdentiteParams.set("nom_autre", construireTxtTruck(personne.getString("truk_nom_autre"))); |
tabIdentiteParams.set("abreviation_autre", construireTxtTruck(personne.getString("truk_abreviation_autre"))); |
|
tplIdentite += construireTxtListeOntologie(personne.getString("truk_telephone")); |
|
// Courriel :Champ truk de la forme |
// "Adresse@adr.com;; adr2@adr.fr ..." |
LinkedList<String> listeCourriel = (LinkedList<String>) personne |
.getChaineDenormaliseAsMapOrList("truk_courriel"); |
if ((listeCourriel != null) && (listeCourriel.size() > 0)) { |
String strLabelCourriel = "Courriel"; |
if (listeCourriel.size() > 1) { |
strLabelCourriel += "s"; |
} |
|
String valeurCourriel = ""; |
Iterator<String> itCourriel = listeCourriel.iterator(); |
while (itCourriel.hasNext()) { |
String valeurCourante = itCourriel.next(); |
valeurCourriel += "<br /><a href=\"mailto:" |
+ valeurCourante + "\">" + valeurCourante + "</a>"; |
} |
tplIdentite += valeurCourriel; |
} |
|
// Url Site Webs |
LinkedList listeUrl = (LinkedList) personne |
.getChaineDenormaliseAsMapOrList("truk_url"); |
if (listeUrl != null && listeUrl.size() > 0) { |
|
tplIdentite += "<br /><br /><b>Sites web:</b><br /><span style='display:inline-block'>"; |
String strUrl = ""; |
Iterator<String> urlIt = listeUrl.iterator(); |
while (urlIt.hasNext()) { |
String urlCourante = urlIt.next(); |
strUrl += "<a href=\"" + urlCourante + "\">" + urlCourante |
+ "</a> <br/>"; |
} |
tplIdentite += strUrl + "</span><br />"; |
} |
|
tplIdentite += "</div>"; |
|
afficherOnglet(tplIdentite, tabIdentiteParams, tabIdentite); |
|
String tabAdresseTpl = "<div class='{css_corps}'>" |
+ " <div class='{css_fieldset}'>" |
+ " <h2>Adresse personnelle:</h2>" |
+ " <b>Adresse:</b> {adresse01} <br />" |
+ " <b>Boite postale: </b>{boitePostale}<br />" |
+ " <b>Code postal:</b>{codePostal} <br />" |
+ " <b>Pays :</b><span style='uppercase'>{pays}</span><br />" |
+ "</div>"; |
// Adresses : |
Params paramAdresseTpl = new Params(); |
paramAdresseTpl.set("adresse01", (String) personne |
.obtenirValeurChamp("adresse_01")); |
paramAdresseTpl.set("boitePostale", (String) personne |
.obtenirValeurChamp("bp")); |
paramAdresseTpl.set("codePostal", (String) personne |
.obtenirValeurChamp("code_postal")); |
paramAdresseTpl.set("ville", (String) personne |
.obtenirValeurChamp("ville")); |
paramAdresseTpl.set("pays", construireTxtListeOntologie((String) personne |
.obtenirValeurChamp("ce_truk_pays"))); |
|
afficherOnglet(tabAdresseTpl, paramAdresseTpl, tabAdresse); |
tabAdresse.setStyleAttribute("padding", "15px"); |
|
// Infos naturalistes :Biographie, Spécialité (typé) |
String tplInfosNat = "<div class='{css_corps}'>" |
+ " <div class='{css_fieldset}'>" + " <h2>" |
+ i18nC.personneBiographie() + "</h2>" |
+ " {biographie}" + " " |
+ "<h2>" + i18nC.personneSpecialite() + "</h2>" |
+ " {specialites}" + " <h2>" |
+ i18nC.personneRecolte() + "</h2>" |
+ " {recoltes}" + " </div>" + "</div>"; |
Params prmInfosNat = new Params(); |
|
prmInfosNat.set("biographie", personne.get("biographie")); |
|
String specialite = construireTxtTruck(personne.getSpecialite()); |
prmInfosNat.set("specialites", specialite); |
|
String recolte = construireTxtListeOntologie(personne.getString("truk_recolte")); |
prmInfosNat.set("recoltes", recolte); |
|
afficherOnglet(tplInfosNat, prmInfosNat, tabInfosNat); |
tabAdresse.setStyleAttribute("padding", "15px"); |
|
layout(); |
} |
} |
|
public String initialiserTplEntete() { |
return "<div id='{css_id}'>" + "<h1>{nom}</h1>" |
+ "<h2><a href='{mail}'>{mail}</a></h2>" + "</div>"; |
} |
|
public String initialiserTplIdentite() { |
return "<div class='{css_corps}'>" + " <div class='{css_fieldset}'>" |
+ " <h2>Noms:</h2>" + " <span><b>" |
+ i18nC.personneNomComplet() |
+ ":</b></span> {nom_complet}<br />" |
+ " <span><b>" |
+ i18nC.personneNomAutre() |
+ ":</b></span> {nom_autre}<br />" |
+ " <span><b>" |
+ i18nC.personneAbreviation() |
+ ":</b></span> {abreviation}<br />" |
+ " <span><b>" |
+ i18nC.personneAbreviationAutre() |
+ ":</b></b></span> {abreviation_autre}<br /><br />" |
+ " <h2>Naissance:</h2>" |
+ " <span><b>" |
+ i18nC.personneDateNaissance() |
+ ":</b></span> {naissance_date}<br />" |
+ " <span><b>" |
+ i18nC.personneLieuNaissance() |
+ ":</b></span> {naissance_lieu}<br /><br />" |
+ "{tplDeces}" |
+ " </div>" |
+ "</div>" |
+ "<div class='{css_corps}'>" |
+ " <div class='css_fieldset'> " |
+ " <h2>Description:</h2>" |
+ " {description}<br />" + " </div>" + "<br />"; |
} |
|
private void initialiserTableauPublicationsLieesTpl() { |
|
tableauPublicationsLieesTpl = |
"<div class='{css_corps}'>" + |
" <h2>{i18n_titre_publication}</h2>"+ |
" <table>"+ |
" <thead>"+ |
" <tr>" + |
" <th>{i18n_relation}</th>" + |
" <th>{i18n_auteur}</th>" + |
" <th>{i18n_titre}</th>" + |
" <th>{i18n_revue}</th>" + |
" <th>{i18n_editeur}</th>" + |
" <th>{i18n_annee}</th>" + |
" <th>{i18n_nvt}</th>" + |
" <th>{i18n_fascicule}</th>" + |
" <th>{i18n_page}</th>" + |
" </tr>"+ |
" </thead>"+ |
" <tbody>"+ |
" {lignes}"+ |
" </tbody>"+ |
"</table>"; |
} |
|
private void initialiserLignePublicationLieeTpl() { |
lignePublicationLieeTpl = |
"<tr>"+ |
" <td>{relation}</td>"+ |
" <td>{auteur}</td>"+ |
" <td>{titre}</td>"+ |
" <td>{revue}</td>"+ |
" <td>{editeur}</td>"+ |
" <td>{annee}</td>"+ |
" <td>{nvt}</td>"+ |
" <td>{fascicule}</td>"+ |
" <td>{page}</td>"+ |
"</tr>"; |
} |
/** |
* @author greg |
* Rempli l'onglet des publications liées |
* @param listePublications la liste des publications |
*/ |
private void afficherPublications(PublicationAPersonneListe listePublications) { |
List<PublicationAPersonne> publicationsLiees = listePublications.toList(); |
Iterator<PublicationAPersonne> iterateur = publicationsLiees.iterator(); |
|
//Onglet Publications |
initialiserTableauPublicationsLieesTpl(); |
Params paramsPublis = new Params(); |
|
String contenuLignes = ""; |
while (iterateur.hasNext()) { |
initialiserLignePublicationLieeTpl(); |
|
PublicationAPersonne publicationAPersonneCourante = iterateur.next(); |
Publication publication = publicationAPersonneCourante.getPublicationLiee(); |
|
Params ligneParams = new Params(); |
ligneParams.set("relation", construireTxtListeOntologie(publicationAPersonneCourante.getRole())); |
ligneParams.set("auteur", publication.getAuteur()); |
ligneParams.set("titre", publication.getTitre()); |
ligneParams.set("revue", publication.getCollection()); |
ligneParams.set("editeur", publication.getEditeur()); |
ligneParams.set("annee", publication.getAnneeParution()); |
ligneParams.set("nvt", publication.getIndicationNvt()); |
ligneParams.set("fascicule", publication.getFascicule()); |
ligneParams.set("page", publication.getPages()); |
contenuLignes += Format.substitute(lignePublicationLieeTpl, ligneParams); |
} |
|
paramsPublis.set("lignes", contenuLignes); |
paramsPublis.set("i18n_titre_publication", i18nC.tabPublications()); |
paramsPublis.set("i18n_relation", i18nC.publicationAuteurs()); |
paramsPublis.set("i18n_auteur", i18nC.publicationAuteurs()); |
paramsPublis.set("i18n_titre", i18nC.publicationTitre()); |
paramsPublis.set("i18n_revue", i18nC.publicationRevueCollection()); |
paramsPublis.set("i18n_editeur", i18nC.publicationEditeur()); |
paramsPublis.set("i18n_annee", i18nC.publicationDateParution()); |
paramsPublis.set("i18n_nvt", i18nC.publicationNvt()); |
paramsPublis.set("i18n_fascicule", i18nC.publicationFascicule()); |
paramsPublis.set("i18n_page", i18nC.publicationPage()); |
afficherOnglet(tableauPublicationsLieesTpl, paramsPublis, tabPublications); |
|
} |
|
public void rafraichir(Object nouvellesDonnees) { |
|
if (nouvellesDonnees instanceof ValeurListe) { |
ajouterListeValeursAOntologie((ValeurListe) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof Personne) { |
afficherDetailPersonne((Personne) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof PublicationAPersonneListe) { |
afficherPublications((PublicationAPersonneListe) nouvellesDonnees); |
layout(); |
} |
} |
|
} |
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/personne/PersonneDetailVue.java:r1136-1368 |
Merged /trunk/src/org/tela_botanica/client/vues/personne/PersonneDetailVue.java:r11-934,1209-1382 |
Merged /branches/v1.1-aramon/src/org/tela_botanica/client/vues/personne/PersonneDetailVue.java:r1383-1511 |