Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 524 → Rev 527

/trunk/src/org/tela_botanica/client/vues/PersonneDetailVue.java
6,8 → 6,6
import java.util.LinkedList;
import java.util.MissingResourceException;
 
 
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
17,111 → 15,84
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.util.UtilTruk;
 
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.HtmlContainer;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
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.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.google.gwt.user.client.ui.Image;
 
public class PersonneDetailVue extends LayoutContainer implements Rafraichissable {
public class PersonneDetailVue extends DetailVue implements Rafraichissable {
 
private LayoutContainer lcDetailHaut;
// Le panneau détail se compose de formulaires tabulés
private TabPanel tabPanel;
private Html entete;
// Onglet 1 : identite & contact
private TabItem tabIdentite;
// Onglet 2 : Adresses
private TabItem tabAdresse;
// Onglet 3 : Informations naturalistes
private TabItem tabInfosNat;
private FieldSet fsSpec;
//Onglet 4 : logos
private TabItem tabLogos;
private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
public PersonneDetailVue() {
public PersonneDetailVue(Mediateur mediateur) {
setLayout(new RowLayout());
super(mediateur);
setLayout(new FitLayout());
ContentPanel cp = new ContentPanel();
cp.setLayout(new FlowLayout());
entete = new Html();
entete.setId(ComposantId.ZONE_DETAIL_ENTETE);
lcDetailHaut = new LayoutContainer();
lcDetailHaut.setLayout(new RowLayout());
//this.add(lcDetailHaut, new RowData(1, 0.2));
cp.setTopComponent(lcDetailHaut);
ContentPanel panneauPrincipal = new ContentPanel();
panneauPrincipal.setLayout(new FitLayout());
panneauPrincipal.setHeaderVisible(false);
panneauPrincipal.setBodyBorder(true);
panneauPrincipal.setTopComponent(entete);
add(lcDetailHaut);
tabPanel = new TabPanel();
this.add(tabPanel, new RowData(1, 1));
//Constructeur de la classe
Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this);
//setLayout(new FitLayout());
tabIdentite = new TabItem(mediateur.i18nC.personneIdentite());
tabIdentite.setLayout(new FitLayout());
tabIdentite.setScrollMode(Scroll.AUTO);
tabPanel.add(tabIdentite);
tabIdentite.setLayout(new AnchorLayout());
tabIdentite.setScrollMode(Scroll.AUTO);
//Onglet Adresse:
tabAdresse = new TabItem(mediateur.i18nC.personneAdresses());
tabAdresse.setLayout(new FitLayout());
tabAdresse.setScrollMode(Scroll.AUTO);
tabPanel.add(tabAdresse);
//Onglet info naturalistes
tabInfosNat = new TabItem(mediateur.i18nC.personneInfoNat());
fsSpec = new FieldSet();
fsSpec.setLayout(new FormLayout());
tabInfosNat.setScrollMode(Scroll.AUTO);
tabPanel.add(tabInfosNat);
tabLogos = new TabItem(mediateur.i18nC.personneLogos());
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(tabLogos);
panneauPrincipal.add(tabPanel);
add(panneauPrincipal);
}
 
private HashMap hmLabelFieldRegion = new HashMap();
public void afficherDetailPersonne(Personne personne) {
if (personne != null) {
String enteteTpl = "<div id='{css_id}'>"+
"<h1>{nom}</h1>"+
"<h2><a href='{mail}'>{mail}</a></h2>" +
"</div>";
String tplEntete = initialiserTplEntete();
//MAJ Identité : Configurer les fieldSet
Params enteteParams = new Params();
enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE);
enteteParams.set("nom", (String) personne.get("fmt_nom_complet"));
enteteParams.set("mail", (String) personne.get("courriel_princ"));
131,7 → 102,8
tabLogos.removeAll();
String urlLogoPrinc = (String) lstLogos.get(0);
if (!urlLogoPrinc.trim().equals("")) {
enteteTpl = "<div style='position:absolute; right:0; width:30%; text-align:right'><img src='{image}' alt='logo' height='45px'/></div>" + enteteTpl;
//TODO : changer le style et déplacer dans CSS
tplEntete = "<div style='position:absolute; right:0; width:30%; text-align:right'><img src='{image}' alt='logo' height='40px'/></div>" + tplEntete;
enteteParams.set("image", urlLogoPrinc);
}
141,31 → 113,18
Image imgCourante = new Image(urlLogoCourant);
tabLogos.add(imgCourante);
}
tabLogos.enable();
tabLogos.enable();
} else {
enteteParams.set("image", "");
tabLogos.disable();
}
lcDetailHaut.el().setInnerHtml(Format.substitute(enteteTpl, enteteParams));
entete.el().setInnerHtml(Format.substitute(tplEntete, enteteParams));
String tabIdentiteTpl = "<div class='{css_id}'>" +
" <span><b>" + mediateur.i18nC.personneNomComplet() + ":</b></span> {nom_complet}<br />" +
" <span><b>" + mediateur.i18nC.personneNomAutre() + ":</b></span> {nom_autre}<br />" +
" <span><b>" + mediateur.i18nC.personneAbreviation() + ":</b></span> {abreviation}<br />" +
" <span><b>" + mediateur.i18nC.personneAbreviationAutre() + ":</b></b></span> {abreviation_autre}<br /><br />" +
" <span><b>" + mediateur.i18nC.personneDateNaissance() + "</b></span> {naissance_date}<br />" +
" <span><b>" + mediateur.i18nC.personneLieuNaissance() + ":</b></span> {naissance_lieu}<br /><br />" +
" <span><b>" + mediateur.i18nC.personneDateDeces() + ":</b></span> {deces_date}<br />" +
" <span><b>" + mediateur.i18nC.personneLieuDeces() + ":</b></span> {deces_lieu}<br /><br />" +
"</div>" +
"<div class='{css_id}'>" +
" <span style='vertical-align:top'><b>" + mediateur.i18nC.description() + ":</b><br /></span> {description}<br />" +
"<br />";
String tplIdentite = initialiserTplIdentite();
Params tabIdentiteParams = new Params();
tabIdentiteParams.set("css_id", "coel-fieldset");
tabIdentiteParams.set("nom_complet", personne.getString("fmt_nom_complet"));
tabIdentiteParams.set("abreviation", personne.getString("abreviation"));
tabIdentiteParams.set("naissance_date", personne.getString("naissance_date"));
208,13 → 167,11
label = key;
}
tabIdentiteTpl += "<b>" + label + ":</b> " + key;
tabIdentiteTpl += "<br />";
tplIdentite += "<b>" + label + ":</b> " + key;
tplIdentite += "<br />";
}
}
// FAX > TYPE Téléphone
// 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)) {
228,10 → 185,8
while (itCourriel.hasNext()) {
String valeurCourante = itCourriel.next();
valeurCourriel += "<br /><a href=\"mailto:" + valeurCourante + "\">" + valeurCourante + "</a>";
}
tabIdentiteTpl += valeurCourriel;
tplIdentite += valeurCourriel;
}
 
// Url Site Webs
238,7 → 193,7
LinkedList listeUrl = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_url");
if (listeUrl!=null && listeUrl.size() > 0) {
tabIdentiteTpl += "<br /><br /><b>Sites web:</b><br /><span style='display:inline-block'>";
tplIdentite += "<br /><br /><b>Sites web:</b><br /><span style='display:inline-block'>";
String strUrl = "";
Iterator<String> urlIt = listeUrl.iterator();
while (urlIt.hasNext()) {
245,22 → 200,21
String urlCourante = urlIt.next();
strUrl += "<a href=\""+urlCourante+"\">" + urlCourante + "</a> <br/>";
}
tabIdentiteTpl += strUrl + "</span><br />";
tplIdentite += strUrl + "</span><br />";
}
tabIdentiteTpl += "</div>";
tplIdentite += "</div>";
afficherOnglet(tabIdentiteTpl, tabIdentiteParams, tabIdentite);
tabIdentite.setStyleAttribute("padding", "15px");
afficherOnglet(tplIdentite, tabIdentiteParams, tabIdentite);
String tabAdresseTpl = "<div id='css_id'>" +
" <h1>Adresse personnelle:</h1>" +
" {adresse01} <br />" +
" {adresse02} <br />" +
" {boitePostale}<br />" +
" {codePostal} {region}<br />" +
" <span style='uppercase'>{pays}</span><br />" +
String tabAdresseTpl = "<div class='css_corps'>" +
" <div class='css_fieldset'>" +
" <h1>Adresse personnelle:</h1>" +
" {adresse01} <br />" +
" {adresse02} <br />" +
" {boitePostale}<br />" +
" {codePostal} {region}<br />" +
" <span style='uppercase'>{pays}</span><br />" +
"</div>";
//Adresses :
Params paramAdresseTpl = new Params();
277,9 → 231,16
 
// Infos naturalistes :Biographie, Spécialité (typé)
fsSpec.setHeading("Spécialités");
tabInfosNat.add(fsSpec);
String tplInfosNat = "<div class='css_corps'>" +
" <div class='css_fieldset'>" +
" <h1>Spécialités</h1>"+
" {specialites}" +
" <h1>Récolte</h1>" +
" </div>" +
"</div>";
Params prmInfosNat = new Params();
String strSpecialites = "";
HashMap hmSpecialite = (HashMap) personne.getChaineDenormaliseAsMapOrList("ce_truk_specialite");
if ((hmSpecialite != null)&&(hmSpecialite.size() > 0)) {
301,11 → 262,15
specLabel.setValue(hmSpecialite.get(key));
fsSpec.add(specLabel);
strSpecialites += specLabel + "<br />";
}
}
prmInfosNat.set("specialites", strSpecialites);
// Récolte
String strRecolte ="";
 
System.out.println(personne.getString("truk_recolte"));
LinkedList<String> lstRecolte = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_recolte");
if ((lstRecolte!=null)&&(lstRecolte.size()>0)) {
FieldSet fsRecolte = new FieldSet();
343,28 → 308,44
}
changerLabelRegions();
// tabInfosNat
layout();
}
}
protected void afficherOnglet(String template, Params parametres, TabItem onglet) {
String cHtml = Format.substitute(template, parametres);
public String initialiserTplEntete() {
Params cssParams = new Params();
cssParams.set("css_corps", ComposantClass.DETAIL_CORPS_CONTENU);
cssParams.set("css_label", ComposantClass.LABEL);
cssParams.set("css_indentation", ComposantClass.INDENTATION);
cssParams.set("css_fieldset", ComposantClass.FIELDSET);
cssParams.set("css_clear", ComposantClass.CLEAR);
cHtml = Format.substitute(cHtml, cssParams);
HtmlContainer corpsConteneurDuHtml = new HtmlContainer(cHtml);
onglet.removeAll();
onglet.add(corpsConteneurDuHtml);
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>" + mediateur.i18nC.personneNomComplet() + ":</b></span> {nom_complet}<br />" +
" <span><b>" + mediateur.i18nC.personneNomAutre() + ":</b></span> {nom_autre}<br />" +
" <span><b>" + mediateur.i18nC.personneAbreviation() + ":</b></span> {abreviation}<br />" +
" <span><b>" + mediateur.i18nC.personneAbreviationAutre() + ":</b></b></span> {abreviation_autre}<br /><br />" +
" <h2>Naissance:</h2>" +
" <span><b>" + mediateur.i18nC.personneDateNaissance() + "</b></span> {naissance_date}<br />" +
" <span><b>" + mediateur.i18nC.personneLieuNaissance() + ":</b></span> {naissance_lieu}<br /><br />" +
" <h2>Décès:</h2>" +
" <span><b>" + mediateur.i18nC.personneDateDeces() + ":</b></span> {deces_date}<br />" +
" <span><b>" + mediateur.i18nC.personneLieuDeces() + ":</b></span> {deces_lieu}<br /><br />" +
" </div>" +
"</div>" +
"<div class='{css_corps}'>" +
" <div class='css_fieldset'> " +
" <h2>Description:</h2>" +
" {description}<br />" +
" </div>" +
"<br />";
}
private void changerLabelRegions() {
Collection<String> colClesComposants = hmLabelFieldRegion.keySet();