11,7 → 11,6 |
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; |
18,32 → 17,22 |
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.HtmlContainer; |
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 { |
57,13 → 46,9 |
// 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; |
75,29 → 60,6 |
|
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()); |
120,28 → 82,20 |
Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this); |
//setLayout(new FitLayout()); |
|
tabIdentite = new TabItem("Identité"); |
tabIdentite = new TabItem(mediateur.i18nC.personneIdentite()); |
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()); |
|
tabAdresse = new TabItem(mediateur.i18nC.personneAdresses()); |
tabAdresse.setLayout(new FitLayout()); |
tabAdresse.setScrollMode(Scroll.AUTO); |
tabPanel.add(tabAdresse); |
|
//Onglet info naturalistes |
tabInfosNat = new TabItem("Informations naturalistes"); |
tabInfosNat = new TabItem(mediateur.i18nC.personneInfoNat()); |
fsSpec = new FieldSet(); |
fsSpec.setLayout(new FormLayout()); |
tabInfosNat.setScrollMode(Scroll.AUTO); |
148,7 → 102,7 |
|
tabPanel.add(tabInfosNat); |
|
tabLogos = new TabItem("Logos"); |
tabLogos = new TabItem(mediateur.i18nC.personneLogos()); |
tabLogos.setLayout(new FlowLayout()); |
|
tabPanel.add(tabLogos); |
160,11 → 114,14 |
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>"; |
|
//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")); |
|
187,12 → 144,28 |
|
tabLogos.enable(); |
} else { |
enteteParams.set("image", ""); |
tabLogos.disable(); |
} |
} |
|
lcDetailHaut.el().setInnerHtml(Format.substitute(enteteTpl, 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 />"; |
|
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")); |
201,8 → 174,6 |
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é |
221,12 → 192,6 |
} |
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)) { |
|
235,54 → 200,22 |
|
while (itTelephones.hasNext()) { |
String key = itTelephones.next(); |
LabelField telephoneLabel = new LabelField(); |
String label = ""; |
String label = mapTelephones.get(key); |
try { |
label = constantesI18n.getString(key); |
label = mediateur.i18nC.getString(label); |
} |
catch (MissingResourceException e) { |
label = key; |
} |
|
telephoneLabel.setFieldLabel( label + ":"); |
|
telephoneLabel.setValue(mapTelephones.get(key)); |
|
fsContact.add(telephoneLabel); |
tabIdentiteTpl += "<b>" + label + ":</b> " + key; |
tabIdentiteTpl += "<br />"; |
} |
} |
|
// Fax |
// > Plusieurs fax possible, typés |
// FAX > TYPE Téléphone |
|
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 ..." |
|
// 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"; |
290,81 → 223,60 |
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 />"; |
valeurCourriel += "<br /><a href=\"mailto:" + valeurCourante + "\">" + valeurCourante + "</a>"; |
|
} |
|
labelCourriel.setValue(valeurCourriel); |
fsContact.add(labelCourriel); |
tabIdentiteTpl += valeurCourriel; |
} |
|
|
|
// Url Site Webs |
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'>"; |
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); |
} |
tabIdentiteTpl += strUrl + "</span><br />"; |
} |
|
tabIdentiteTpl += "</div>"; |
|
afficherOnglet(tabIdentiteTpl, tabIdentiteParams, tabIdentite); |
tabIdentite.setStyleAttribute("padding", "15px"); |
//tabIdentite.add(fsContact); |
|
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 />" + |
"</div>"; |
//Adresses : |
Params paramAdresseTpl = new Params(); |
paramAdresseTpl.set("adresse01", (String) personne.obtenirValeurChamp("adresse_01")); |
paramAdresseTpl.set("adresse02", (String) personne.obtenirValeurChamp("adresse_02")); |
paramAdresseTpl.set("boitePostale", (String) personne.obtenirValeurChamp("bp")); |
paramAdresseTpl.set("codePostal", (String) personne.obtenirValeurChamp("code_postal")); |
paramAdresseTpl.set("ville", (String) personne.obtenirValeurChamp("ville")); |
paramAdresseTpl.set("region", (String) personne.obtenirValeurChamp("region")); |
paramAdresseTpl.set("pays", (String) personne.obtenirValeurChamp("pays")); |
|
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); |
|
afficherOnglet(tabAdresseTpl, paramAdresseTpl, tabAdresse); |
tabAdresse.setStyleAttribute("padding", "15px"); |
|
// Infos naturalistes |
// Infos naturalistes :Biographie, Spécialité (typé) |
|
// Biographie |
// Spécialité (typé) |
|
fsSpec.setHeading("Spécialités"); |
tabInfosNat.add(fsSpec); |
|
379,7 → 291,7 |
LabelField specLabel = new LabelField(); |
String label = ""; |
try { |
label = constantesI18n.getString(key); |
label = mediateur.i18nC.getString(key); |
} |
catch (MissingResourceException e) { |
label = key; |
436,7 → 348,23 |
} |
} |
|
protected void afficherOnglet(String template, Params parametres, TabItem onglet) { |
String cHtml = Format.substitute(template, parametres); |
|
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); |
} |
|
|
private void changerLabelRegions() { |
|
Collection<String> colClesComposants = hmLabelFieldRegion.keySet(); |