Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 196 → Rev 197

/trunk/src/org/tela_botanica/client/vues/PersonneDetailPanneauVue.java
2,116 → 2,256
 
 
 
import java.util.List;
import java.util.HashMap;
import java.util.Iterator;
 
 
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.Personne;
import org.tela_botanica.client.modeles.Projet;
import org.tela_botanica.client.modeles.ProjetsListeAsyncDao;
import org.tela_botanica.client.modeles.Structure;
import org.tela_botanica.client.modeles.StructureListe;
 
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.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.KeyListener;
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.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Grid;
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.TableLayout;
import com.google.gwt.dom.client.LinkElement;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
 
public class PersonneDetailPanneauVue extends TabPanel implements Rafraichissable {
 
// Le panneau détail se compose de formulaires tabulés
private Html header;
// Onglet 1 : identite & contact
private TabItem identite;
private FieldSet fsIdentite;
private FieldSet fsContact;
//TABS
// Informations générales : nom, prénom, adresse, cp, ville, adresse email, sexe, projet
private TabItem infoGenerales;
private String contenuInfo = "<div style='padding: 12px;'><h1>{0}</h1><a href=\"{1}\">{1}</a><br /><br /><p><b>Adresse: </b>{2}<br />{3}<br />{4} {5}<br /> {7}</p><br />{6}</div>";
private TabItem infoBio;
private String contenuBio = "";
// <div style='padding: 12px;'><h1>{0} {1} {2}</h1><h2>{3}</h2><br><b>Date de naissance: </b>{4}<br /><b>Date de décès:{5}</b><p>{6}</p></div>";
public PersonneDetailPanneauVue() {
Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this);
setLayout(new FitLayout());
infoGenerales = new TabItem("Informations Générales");
this.add(infoGenerales);
identite = new TabItem("Identité");
identite.setLayout(new TableLayout(2));
identite.setScrollMode(Scroll.AUTO);
infoBio = new TabItem("Biographie");
infoBio.disable();
this.add(infoBio);
fsIdentite = new FieldSet();
fsIdentite.setLayout(new FormLayout());
fsContact = new FieldSet();
fsContact.setLayout(new FormLayout());
this.add(identite);
}
 
private void ajouterParam(Params parametres, String nomChamp, Personne personne) {
Object valeur = personne.obtenirValeurChamp(nomChamp);
parametres.add(valeur);
}
public void afficherDetailPersonne(Personne personne) {
if (personne != null) {
infoGenerales.removeAll();
infoBio.removeAll();
infoBio.disable();
identite.removeAll();
//Contenu
Params infoGenParams = new Params();
ajouterParam(infoGenParams, "fmt_nom_complet", personne);
ajouterParam(infoGenParams, "truk_courriel", personne);
ajouterParam(infoGenParams, "adresse_01", personne);
ajouterParam(infoGenParams, "adresse_02", personne);
ajouterParam(infoGenParams, "code_postal", personne);
ajouterParam(infoGenParams, "ville", personne);
ajouterParam(infoGenParams, "description", personne);
ajouterParam(infoGenParams, "cp_truk_fax", personne);
fsIdentite.setHeading("Identité");
fsIdentite.setWidth("350px");
fsIdentite.setStyleAttribute("padding", "1px");
//Info générales
infoGenerales.addText(Format.substitute(contenuInfo, infoGenParams));
fsContact.setHeading("Contact");
fsContact.setWidth("350px");
Params bioParams = new Params();
// Nécessaire que si une biographie existe...
// FIXME : remplacer par un id role?
if ((personne.obtenirValeurChamp("biographie")!=null)&&(!((String) personne.obtenirValeurChamp("biographie")).trim().equals(""))) {
identite.add(fsIdentite);
String logoUrl = (String) personne.obtenirValeurChamp("truk_logo");
if ((logoUrl!=null)&&(!logoUrl.trim().equals(""))) {
contenuBio = "<div style='padding: 12px;'><h1>{0} {1} {2}</h1><h2>{3}</h2><br><b>Date de naissance: </b>{4}<br /><b>Date de décès:{5}</b><p>a{6}a</p></div>";
ajouterParam(bioParams, "ce_truk_prefix", personne);
ajouterParam(bioParams, "fmt_nom_complet", personne);
ajouterParam(bioParams, "ce_truk_suffix", personne);
ajouterParam(bioParams, "abreviation", personne);
ajouterParam(bioParams, "naissance_date", personne);
ajouterParam(bioParams, "deces_date", personne);
ajouterParam(bioParams, "biographie", personne);
infoBio.enable();
Image img = new Image();
img.setUrl(logoUrl);
img.setTitle("logo-personne");
identite.add(img);
} else {
identite.add(new Label());
}
identite.add(fsContact);
infoBio.addText(Format.substitute(contenuBio, bioParams));
fsIdentite.removeAll();
fsContact.removeAll();
//Ajout des champs Identité
// TODO: projet
// nom complet
Object nomComplet = personne.obtenirValeurChamp("fmt_nom_complet");
ajouterTextFieldNonEditable(fsIdentite,"Nom", nomComplet);
// TODO : nom autre
// abreviation
Object abreviation = personne.obtenirValeurChamp("abreviation");
ajouterTextFieldNonEditable(fsIdentite, "Abreviation", abreviation);
// date naissance
Object dateNaissance = personne.obtenirValeurChamp("date_naissance");
ajouterTextFieldNonEditable(fsIdentite, "Date de naissance", dateNaissance);
// lieu naissance
Object lieuNaissance = personne.obtenirValeurChamp("lieu_naissance");
ajouterTextFieldNonEditable(fsIdentite, "Lieu de naissance", lieuNaissance);
// date deces
Object dateDeces = personne.obtenirValeurChamp("date_deces");
ajouterTextFieldNonEditable(fsIdentite, "Date de décès", dateDeces);
// lieu deces
Object lieuDeces = personne.obtenirValeurChamp("lieu_deces");
ajouterTextFieldNonEditable(fsIdentite, "Lieu de décès", lieuDeces);
//CONTACT
String courriel = (String) personne.obtenirValeurChamp("truk_courriel");
Hyperlink lnkCourriel = new Hyperlink();
lnkCourriel.setHTML("<b style=\"margin:0 50px 0 0 ; color:black;\">Courriel:</b><a href=\"mailto:" + courriel + "\">" + courriel + "</a>");
fsContact.add(lnkCourriel);
fsContact.addText("<br >");
String adresse01 = (String) personne.obtenirValeurChamp("adresse_01");
ajouterTextFieldNonEditable(fsContact, "Adresse", adresse01);
String adresse02 = (String) personne.obtenirValeurChamp("adresse_02");
ajouterTextFieldNonEditable(fsContact, "", adresse02);
String boitePostale = (String) personne.obtenirValeurChamp("bp");
ajouterTextFieldNonEditable(fsContact, "Boite Postale", boitePostale);
String codePostal = (String) personne.obtenirValeurChamp("code_postal");
ajouterTextFieldNonEditable(fsContact, "Code postal", codePostal);
String ville = (String) personne.obtenirValeurChamp("ville");
ajouterTextFieldNonEditable(fsContact, "Ville", ville);
String region = (String) personne.obtenirValeurChamp("region");
ajouterTextFieldNonEditable(fsContact, "Région", region);
String pays = (String) personne.obtenirValeurChamp("pays");
ajouterTextFieldNonEditable(fsContact, "Pays", pays);
fsContact.addText("<br >");
layout();
} else {
header.setHtml("");
}
}
 
public void ajouterTextFieldNonEditable(FieldSet fs, String tfLabel, Object tfValue) {
if ((tfValue!=null)&&(!tfValue.toString().trim().equals(""))) {
TextField tf = new TextField();
tf.setFieldLabel(tfLabel);
if ((tfLabel==null)||("".equals(tfLabel))) {
tf.setHideLabel(true);
tf.setStyleAttribute("margin", "0 0 0 105px");
}
tf.setValue(tfValue);
// Non éditable : on empêche l'évènement par défaut
tf.addKeyListener(new KeyListener() {
public void componentKeyPress(ComponentEvent ev) {
ev.stopEvent();
}
});
//Ajout au fieldSet
fs.add(tf);
}
}
 
/*public void visualiserPersonneIdentite() {
//FieldSet identité
FieldSet fsId = new FieldSet();
fsId.setHeading("Identité");
fsId.setLayout(new FormLayout());
visualiser(champsIdentite, fsId);
/*NodeList nl = (NodeList) fsId.getElement().getChildNodes();
Window.alert(String.valueOf(nl.getLength()));*/
/*identite.add(fsId);
//TEST
Widget w = (TextField) fsId.getWidget(0);
//FieldSet contact
FieldSet fsContact = new FieldSet();
fsContact.setHeading("Contact");
}
public void visualiser(HashMap champs, LayoutContainer lContent) {
Iterator<String> itNomChamps = champs.keySet().iterator();
while (itNomChamps.hasNext()) {
TextField<String> nom = new TextField();
String cle = itNomChamps.next();
nom.setFieldLabel(cle);
nom.setValue((String) champs.get(cle));
//Dans le cas de la visualisation, on ne veut aucun évènement sur la saisie clavier.
nom.addKeyListener(new KeyListener(){
public void componentKeyPress(ComponentEvent ev) {
ev.stopEvent();
}
});
lContent.add(nom);
}
}/*/
public void rafraichir(Object nouvelleDonnees) {
if (nouvelleDonnees instanceof Personne) {
afficherDetailPersonne((Personne) nouvelleDonnees);
124,4 → 264,4
}
}
 
}
}