New file |
0,0 → 1,510 |
package org.tela_botanica.client.vues; |
|
import java.util.Collection; |
import java.util.HashMap; |
import java.util.Iterator; |
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; |
import org.tela_botanica.client.i18n.Constantes; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Configuration; |
import org.tela_botanica.client.modeles.Personne; |
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.Style.VerticalAlignment; |
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.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.TabPanel; |
import com.extjs.gxt.ui.client.widget.Text; |
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.ColumnData; |
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout; |
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.extjs.gxt.ui.client.widget.layout.TableData; |
import com.extjs.gxt.ui.client.widget.layout.TableLayout; |
|
import com.google.gwt.core.client.GWT; |
import com.google.gwt.i18n.client.DateTimeFormat; |
import com.google.gwt.user.client.ui.Image; |
|
public class PersonneDetailVue extends LayoutContainer implements Rafraichissable { |
|
|
private LayoutContainer lcDetailHaut; |
|
// Le panneau détail se compose de formulaires tabulés |
private TabPanel tabPanel; |
|
// Onglet 1 : identite & contact |
private TabItem tabIdentite; |
|
private FieldSet fsIdentite; |
private FieldSet fsContact; |
|
// Onglet 2 : Adresses |
private TabItem tabAdresse; |
private FieldSet fsAdressePerso; |
// contient : adresse perso / adresse pro |
|
// Onglet 3 : Informations naturalistes |
private TabItem tabInfosNat; |
private FieldSet fsSpec; |
|
//Onglet 4 : logos |
private TabItem tabLogos; |
|
|
private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR); |
|
|
//Templatesstyle='display:inline-block; padding-left:15px; width:70%; font-size:11px' |
private String enteteTpl = "<div id='{css_id}'>"+ |
"<h1>{nom}</h1>"+ |
"<h2><a href='{mail}'>{mail}</a></h2>" + |
"</div>"; |
|
|
private String tabIdentiteTpl = "<div class='coel-fieldset'>" + |
" <span><b>Nom Complet:</b></span> {nom_complet}<br />" + |
" <span><b>Autres noms:</b></span> {nom_autre}<br />" + |
" <span><b>Abréviation:</b></span> {abreviation}<br />" + |
" <span><b>Autres Abréviations:</b></b></span> {abreviation_autre}<br /><br />" + |
" <span><b>Date de naissance</b></span> {naissance_date}<br />" + |
" <span><b>Lieu de naissance:</b></span> {naissance_lieu}<br /><br />" + |
" <span><b>Date de décès:</b></span> {deces_date}<br />" + |
" <span><b>Lieu de décès:</b></span> {deces_lieu}<br /><br />" + |
"</div>" + |
"<div class='coel-fieldset'>" + |
" <span style='vertical-align:top'><b>Description:</b></span> {description}<br />" + |
"</div>"; |
|
|
public PersonneDetailVue() { |
|
setLayout(new RowLayout()); |
|
ContentPanel cp = new ContentPanel(); |
cp.setLayout(new FlowLayout()); |
|
lcDetailHaut = new LayoutContainer(); |
lcDetailHaut.setLayout(new RowLayout()); |
//this.add(lcDetailHaut, new RowData(1, 0.2)); |
cp.setTopComponent(lcDetailHaut); |
|
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("Identité"); |
tabIdentite.setLayout(new FitLayout()); |
tabIdentite.setScrollMode(Scroll.AUTO); |
|
fsIdentite = new FieldSet(); |
fsIdentite.setLayout(new FormLayout()); |
|
|
fsContact = new FieldSet(); |
fsContact.setLayout(new FormLayout()); |
|
tabPanel.add(tabIdentite); |
|
//Onglet Adresse: |
tabAdresse = new TabItem("Adresses"); |
fsAdressePerso = new FieldSet(); |
fsAdressePerso.setLayout(new FormLayout()); |
|
tabPanel.add(tabAdresse); |
|
//Onglet info naturalistes |
tabInfosNat = new TabItem("Informations naturalistes"); |
fsSpec = new FieldSet(); |
fsSpec.setLayout(new FormLayout()); |
tabInfosNat.setScrollMode(Scroll.AUTO); |
|
tabPanel.add(tabInfosNat); |
|
tabLogos = new TabItem("Logos"); |
tabLogos.setLayout(new FlowLayout()); |
|
tabPanel.add(tabLogos); |
} |
|
|
private HashMap hmLabelFieldRegion = new HashMap(); |
|
public void afficherDetailPersonne(Personne personne) { |
if (personne != null) { |
|
//MAJ Identité : Configurer les fieldSet |
|
Params enteteParams = new Params(); |
enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE); |
enteteParams.set("css_meta", ComposantClass.META); |
enteteParams.set("nom", (String) personne.get("fmt_nom_complet")); |
enteteParams.set("mail", (String) personne.get("courriel_princ")); |
|
LinkedList lstLogos = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_logo"); |
if (lstLogos!=null && lstLogos.size() > 0) { |
|
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; |
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 { |
tabLogos.disable(); |
} |
|
lcDetailHaut.el().setInnerHtml(Format.substitute(enteteTpl, enteteParams)); |
|
Params tabIdentiteParams = new Params(); |
tabIdentiteParams.set("nom_complet", personne.getString("fmt_nom_complet")); |
tabIdentiteParams.set("abreviation", personne.getString("abreviation")); |
tabIdentiteParams.set("naissance_date", personne.getString("naissance_date")); |
tabIdentiteParams.set("naissance_lieu", personne.getString("naissance_lieu")); |
tabIdentiteParams.set("deces_date", personne.getString("deces_date")); |
tabIdentiteParams.set("deces_lieu", personne.getString("deces_lieu")); |
tabIdentiteParams.set("description", personne.getString("description")); |
|
fsAdressePerso.removeAll(); |
fsSpec.removeAll(); |
tabInfosNat.removeAll(); |
|
// Nom autre : champ truk; non-typé |
LinkedList<String> nomsAutre = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_nom_autre"); |
String listeNoms = ""; |
if ((nomsAutre != null)&&(nomsAutre.size() > 0)) { |
listeNoms = UtilTruk.traiterTrukListe(nomsAutre, ", "); |
} |
tabIdentiteParams.set("nom_autre", listeNoms); |
|
// Abréviations, autre : non-typé |
LinkedList<String> abrevAutres = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_abreviation_autre"); |
String listeAbrev = ""; |
if ((abrevAutres != null)&&(abrevAutres.size() > 0)) { |
listeAbrev = UtilTruk.traiterTrukListe(abrevAutres, ", "); |
} |
tabIdentiteParams.set("abreviation_autre", listeAbrev); |
|
tabIdentite.el().setInnerHtml(Format.substitute(tabIdentiteTpl, tabIdentiteParams)); |
|
// CONTACT > Plusieurs téléphones possible, typés |
Constantes constantesI18n = (Constantes) GWT.create(Constantes.class); |
|
|
HashMap<String, String> mapTelephones = (HashMap<String, String>) personne.getChaineDenormaliseAsMapOrList("truk_telephone"); |
if ((mapTelephones != null)&&(mapTelephones.size() > 0)) { |
|
Collection<String> telephoneKeys = mapTelephones.keySet(); |
Iterator<String> itTelephones = telephoneKeys.iterator(); |
|
while (itTelephones.hasNext()) { |
String key = itTelephones.next(); |
LabelField telephoneLabel = new LabelField(); |
String label = ""; |
try { |
label = constantesI18n.getString(key); |
} |
catch (MissingResourceException e) { |
label = key; |
} |
|
telephoneLabel.setFieldLabel( label + ":"); |
|
telephoneLabel.setValue(mapTelephones.get(key)); |
|
fsContact.add(telephoneLabel); |
} |
} |
|
// Fax |
// > Plusieurs fax possible, typés |
|
HashMap<String, String> mapFax = (HashMap<String, String>) personne.getChaineDenormaliseAsMapOrList("truk_fax"); |
if ((mapFax != null)&&(mapFax.size() > 0)) { |
|
Collection<String> faxKeys = mapFax.keySet(); |
Iterator<String> itFax = faxKeys.iterator(); |
|
while (itFax.hasNext()) { |
String key = itFax.next(); |
LabelField faxLabel = new LabelField(); |
String label = ""; |
try { |
label = constantesI18n.getString(key); |
} |
catch (MissingResourceException e) { |
label = key; |
} |
|
faxLabel.setFieldLabel( label + ":"); |
|
faxLabel.setValue(mapTelephones.get(key)); |
|
fsContact.add(faxLabel); |
} |
} |
|
// Courriel |
// Courriel est un 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"; |
} |
|
LabelField labelCourriel = new LabelField(); |
labelCourriel.setFieldLabel(strLabelCourriel); |
|
String valeurCourriel = ""; |
Iterator<String> itCourriel = listeCourriel.iterator(); |
while (itCourriel.hasNext()) { |
String valeurCourante = itCourriel.next(); |
valeurCourriel += "<a href=\"mailto:" + valeurCourante + "\">" + valeurCourante + "</a><br />"; |
|
} |
|
labelCourriel.setValue(valeurCourriel); |
fsContact.add(labelCourriel); |
} |
|
|
// Url Site Webs |
LinkedList listeUrl = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_url"); |
if (listeUrl!=null && listeUrl.size() > 0) { |
String strUrl = ""; |
Iterator<String> urlIt = listeUrl.iterator(); |
while (urlIt.hasNext()) { |
String urlCourante = urlIt.next(); |
strUrl += "<a href=\""+urlCourante+"\">" + urlCourante + "</a> <br/>"; |
|
|
} |
|
LabelField urlLabelField = new LabelField(); |
urlLabelField.setFieldLabel("Url:"); |
urlLabelField.setValue(strUrl); |
fsContact.add(urlLabelField); |
} |
|
tabIdentite.setStyleAttribute("padding", "15px"); |
//tabIdentite.add(fsContact); |
|
|
fsAdressePerso.setHeading("Adresse personnelle"); |
|
/* |
* Adresses : |
* */ |
String adresse01 = (String) personne.obtenirValeurChamp("adresse_01"); |
ajouterLabelField(fsAdressePerso, "Adresse", adresse01); |
|
String adresse02 = (String) personne.obtenirValeurChamp("adresse_02"); |
ajouterLabelField(fsAdressePerso, "", adresse02); |
|
String boitePostale = (String) personne.obtenirValeurChamp("bp"); |
ajouterLabelField(fsAdressePerso, "Boite Postale", boitePostale); |
|
String codePostal = (String) personne.obtenirValeurChamp("code_postal"); |
ajouterLabelField(fsAdressePerso, "Code postal", codePostal); |
|
String ville = (String) personne.obtenirValeurChamp("ville"); |
ajouterLabelField(fsAdressePerso, "Ville", ville); |
|
String region = (String) personne.obtenirValeurChamp("region"); |
ajouterLabelField(fsAdressePerso, "Région", region); |
|
String pays = (String) personne.obtenirValeurChamp("pays"); |
ajouterLabelField(fsAdressePerso, "Pays", pays); |
|
fsAdressePerso.addText("<br >"); |
fsAdressePerso.setWidth("350px"); |
|
tabAdresse.add(fsAdressePerso); |
|
|
// Infos naturalistes |
|
// Biographie |
// Spécialité (typé) |
|
fsSpec.setHeading("Spécialités"); |
tabInfosNat.add(fsSpec); |
|
HashMap hmSpecialite = (HashMap) personne.getChaineDenormaliseAsMapOrList("ce_truk_specialite"); |
if ((hmSpecialite != null)&&(hmSpecialite.size() > 0)) { |
|
Collection<String> specialiteKeys = hmSpecialite.keySet(); |
Iterator<String> itSpec = specialiteKeys.iterator(); |
|
while (itSpec.hasNext()) { |
String key = itSpec.next(); |
LabelField specLabel = new LabelField(); |
String label = ""; |
try { |
label = constantesI18n.getString(key); |
} |
catch (MissingResourceException e) { |
label = key; |
} |
|
specLabel.setFieldLabel( label + ":"); |
|
specLabel.setValue(hmSpecialite.get(key)); |
|
fsSpec.add(specLabel); |
} |
} |
|
// Récolte |
LinkedList<String> lstRecolte = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_recolte"); |
if ((lstRecolte!=null)&&(lstRecolte.size()>0)) { |
FieldSet fsRecolte = new FieldSet(); |
fsRecolte.setHeading("Récoltes"); |
fsRecolte.setLayout(new FormLayout()); |
|
Iterator<String> itRecolte = lstRecolte.iterator(); |
while (itRecolte.hasNext()) { |
|
String recolteCourante = itRecolte.next(); |
LabelField lfRecolte = new LabelField(); |
String[] splitRecolte = recolteCourante.split("\\|"); |
|
String labelRecolte = ""; |
if (splitRecolte.length > 1) { |
lfRecolte.setValue(splitRecolte[1]); |
} |
|
lfRecolte.setFieldLabel(splitRecolte[0]); |
fsRecolte.add(lfRecolte); |
|
LinkedList<LabelField> lstComposantsRegion = (LinkedList<LabelField>) hmLabelFieldRegion.get(splitRecolte[0]); |
|
if (lstComposantsRegion == null) { |
lstComposantsRegion = new LinkedList<LabelField>(); |
} |
|
lstComposantsRegion.add(lfRecolte); |
hmLabelFieldRegion.remove(splitRecolte[0]); |
hmLabelFieldRegion.put(splitRecolte[0], lstComposantsRegion); |
|
} |
|
tabInfosNat.add(fsRecolte); |
} |
|
changerLabelRegions(); |
// tabInfosNat |
layout(); |
} |
} |
|
|
private void changerLabelRegions() { |
|
Collection<String> colClesComposants = hmLabelFieldRegion.keySet(); |
Iterator<String> itComposants = colClesComposants.iterator(); |
|
while (itComposants.hasNext()) { |
String region = itComposants.next(); |
mediateur.obtenirValeurEtRafraichir(this, "region", region); |
} |
} |
|
private void ajouterLabelField(FieldSet fs, String tfLabel, Object tfValue) { |
|
if ((tfValue!=null)&&(!tfValue.toString().trim().equals(""))) { |
|
|
LabelField tf = new LabelField(); |
|
tf.setFieldLabel(tfLabel + ":"); |
if ((tfLabel==null)||("".equals(tfLabel))) { |
tf.setHideLabel(true); |
tf.setStyleAttribute("margin", "0 0 0 105px"); |
} |
tf.setValue(tfValue); |
|
//Ajout au fieldSet |
fs.add(tf); |
} |
} |
|
|
|
private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG); |
|
public void rafraichir(Object nouvellesDonnees) { |
|
// Si on a reçu une personne on en affiche les détails |
if (nouvellesDonnees instanceof Personne) { |
afficherDetailPersonne((Personne) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof ValeurListe) { |
|
ValeurListe listeValeur = (ValeurListe) nouvellesDonnees; |
if (listeValeur.getId().equals(config.getListeId("region"))) { |
|
Collection colCleListeValeur = listeValeur.keySet(); |
|
Iterator<String> itLv = colCleListeValeur.iterator(); |
|
while (itLv.hasNext()) { |
String idRegion = itLv.next(); |
Valeur region = listeValeur.get(idRegion); |
|
|
|
if (region != null) { |
|
String strRegionId = region.getAbreviation(); |
|
LinkedList<LabelField> listComposantsRegion = (LinkedList) hmLabelFieldRegion.get(strRegionId); |
for (int i=0; i < listComposantsRegion.size(); i++) { |
LabelField lfRegion = listComposantsRegion.get(i); |
lfRegion.setFieldLabel(region.getNom()); |
} |
|
} |
} |
} |
} |
} |
|
} |