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 |
} |
} |
|
} |
} |