7,6 → 7,7 |
import java.util.MissingResourceException; |
|
|
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; |
20,23 → 21,35 |
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 PersonneDetailPanneauVue extends LayoutContainer implements Rafraichissable { |
|
|
private LayoutContainer lcDetailHaut; |
|
// Le panneau détail se compose de formulaires tabulés |
private TabPanel tabPanel; |
|
43,9 → 56,6 |
// Onglet 1 : identite & contact |
private TabItem tabIdentite; |
|
private ContentPanel panneauIdentite; |
private ContentPanel panneauImage; |
|
private FieldSet fsIdentite; |
private FieldSet fsContact; |
|
58,42 → 68,61 |
private TabItem tabInfosNat; |
private FieldSet fsSpec; |
|
//Onglet 4 : logos |
private TabItem tabLogos; |
|
|
private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR); |
|
|
//Templates |
private String enteteTpl = "<div style='display:inline-block; padding-left:15px; width:70%; font-size:11px'>"+ |
"<h1>{nom}</h1>"+ |
"<a href='{mail}'>{mail}</a>" + |
"</div><br/>"; |
|
|
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 PersonneDetailPanneauVue() { |
|
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); |
this.add(tabPanel, new RowData(1, 1)); |
|
//Constructeur de la classe |
Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this); |
setLayout(new FitLayout()); |
//setLayout(new FitLayout()); |
|
tabIdentite = new TabItem("Identité"); |
TableLayout tLayout = new TableLayout(2); |
tabIdentite.setLayout(tLayout); |
tabIdentite.setLayout(new FitLayout()); |
tabIdentite.setScrollMode(Scroll.AUTO); |
|
panneauIdentite = new ContentPanel(); |
panneauIdentite.setWidth("400px"); |
panneauIdentite.setHeaderVisible(false); |
panneauIdentite.setBorders(false); |
panneauIdentite.setBodyBorder(false); |
panneauImage = new ContentPanel(); |
panneauImage.setLayout(new FlowLayout()); |
panneauImage.setBorders(false); |
panneauImage.setWidth(350); |
panneauImage.setBodyBorder(false); |
panneauImage.setHeaderVisible(false); |
|
//Gérer l'alignement vertical en haut |
TableData td = new TableData(); |
td.setVerticalAlign(VerticalAlignment.TOP); |
|
tabIdentite.add(panneauIdentite, td); |
tabIdentite.add(panneauImage, td); |
|
|
fsIdentite = new FieldSet(); |
fsIdentite.setLayout(new FormLayout()); |
|
118,6 → 147,10 |
|
tabPanel.add(tabInfosNat); |
|
tabLogos = new TabItem("Logos"); |
tabLogos.setLayout(new FlowLayout()); |
|
tabPanel.add(tabLogos); |
} |
|
|
126,126 → 159,71 |
public void afficherDetailPersonne(Personne personne) { |
if (personne != null) { |
|
|
//MAJ Identité : Configurer les fieldSet |
panneauIdentite.removeAll(); |
panneauImage.removeAll(); |
|
fsIdentite.setHeading("Identité"); |
//fsIdentite.setWidth("350px"); |
Params enteteParams = new Params(); |
enteteParams.set("nom", (String) personne.get("fmt_nom_complet")); |
enteteParams.set("mail", (String) personne.get("courriel_princ")); |
|
fsContact.setHeading("Contact"); |
//fsContact.setWidth("350px"); |
LinkedList lstLogos = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_logo"); |
if (lstLogos!=null && lstLogos.size() > 0) { |
|
panneauIdentite.add(fsIdentite); |
|
|
//La personne peut avoir un ou plusieurs logo |
panneauImage.setHeight("100%"); |
panneauImage.setPosition(0, 6); |
panneauImage.setBorders(false); |
|
LinkedList<String> listeLogos = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_logo"); |
if ((listeLogos != null)&&(listeLogos.size() > 0)) { |
panneauImage.setBorders(true); |
for (int i = 0; i < listeLogos.size(); i++) { |
String logoUrl = listeLogos.get(i); |
if ((logoUrl!=null)&&(!logoUrl.trim().equals(""))) { |
//Si c'est le cas, on l'affiche sur la même ligne que fsIdentité |
Image img = new Image(); |
img.setUrl(logoUrl); |
|
panneauImage.add(img); |
if (panneauImage.getWidth() < (img.getWidth() + 15)) { |
panneauImage.setWidth(img.getWidth() + 15); |
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(); |
} |
|
panneauIdentite.add(fsContact); |
lcDetailHaut.el().setInnerHtml(Format.substitute(enteteTpl, enteteParams)); |
|
fsIdentite.removeAll(); |
fsContact.removeAll(); |
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(); |
//Ajout des champs Identité |
|
|
|
// TODO: projet |
|
// nom complet |
Object nomComplet = personne.obtenirValeurChamp("fmt_nom_complet"); |
ajouterLabelField(fsIdentite,"Nom Complet", nomComplet); |
|
// Nom autre : champ truk; non-typé |
LinkedList<String> nomsAutre = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_nom_autre"); |
String listeNoms = ""; |
if ((nomsAutre != null)&&(nomsAutre.size() > 0)) { |
|
LabelField noms = new LabelField(); |
noms.setFieldLabel("Autres noms:"); |
String listeNoms = UtilTruk.traiterTrukListe(nomsAutre, ", "); |
noms.setValue(listeNoms); |
fsIdentite.add(noms); |
listeNoms = UtilTruk.traiterTrukListe(nomsAutre, ", "); |
} |
tabIdentiteParams.set("nom_autre", listeNoms); |
|
// abreviation |
Object abreviation = personne.obtenirValeurChamp("abreviation"); |
ajouterLabelField(fsIdentite, "Abreviation", abreviation); |
|
// Abréviations, autre : non-typé |
LinkedList<String> abrevAutres = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_abreviation_autre"); |
String listeAbrev = ""; |
if ((abrevAutres != null)&&(abrevAutres.size() > 0)) { |
|
LabelField abreviations = new LabelField(); |
abreviations.setFieldLabel("Autres abreviations:"); |
String listeAbrev = UtilTruk.traiterTrukListe(abrevAutres, ", "); |
abreviations.setValue(listeAbrev); |
fsIdentite.add(abreviations); |
listeAbrev = UtilTruk.traiterTrukListe(abrevAutres, ", "); |
} |
fsIdentite.addText("<hr>"); |
tabIdentiteParams.set("abreviation_autre", listeAbrev); |
|
// date naissance |
// TODO : Mettre la date en format FR 10/12/09 |
Object dateNaissance = personne.obtenirValeurChamp("naissance_date"); |
ajouterLabelField(fsIdentite, "Né le", dateNaissance); |
tabIdentite.el().setInnerHtml(Format.substitute(tabIdentiteTpl, tabIdentiteParams)); |
|
// lieu naissance |
Object lieuNaissance = personne.obtenirValeurChamp("naissance_lieu"); |
ajouterLabelField(fsIdentite, "A", lieuNaissance); |
// CONTACT > Plusieurs téléphones possible, typés |
Constantes constantesI18n = (Constantes) GWT.create(Constantes.class); |
|
// date deces |
Object dateDeces = personne.obtenirValeurChamp("deces_date"); |
ajouterLabelField(fsIdentite, "Date décès", dateDeces); |
|
// lieu deces |
Object lieuDeces = personne.obtenirValeurChamp("deces_lieu"); |
ajouterLabelField(fsIdentite, "Lieu de décès", lieuDeces); |
|
fsIdentite.addText("<hr>"); |
|
//Description |
String description = (String) personne.obtenirValeurChamp("description"); |
if ((description!=null)&&(!description.trim().equals(""))) { |
LabelField txtDescription = new LabelField(); |
txtDescription.setFieldLabel("Description:"); |
txtDescription.setValue(description); |
|
//rendreNonEditable(txtDescription); |
|
fsIdentite.add(txtDescription); |
} |
|
|
// CONTACT |
// Téléphones |
// > 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)) { |
|
343,10 → 321,10 |
fsContact.add(urlLabelField); |
} |
|
tabIdentite.setStyleAttribute("padding", "15px"); |
//tabIdentite.add(fsContact); |
|
panneauIdentite.add(fsContact); |
|
|
fsAdressePerso.setHeading("Adresse personnelle"); |
|
/* |