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(); |