Rev 283 | Rev 293 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import org.tela_botanica.client.ComposantClass;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.RegistreId;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Configuration;import org.tela_botanica.client.modeles.InterneValeur;import org.tela_botanica.client.modeles.Personne;import org.tela_botanica.client.modeles.Valeur;import org.tela_botanica.client.modeles.ValeurListe;import com.extjs.gxt.ui.client.Registry;import com.extjs.gxt.ui.client.Style.HorizontalAlignment;import com.extjs.gxt.ui.client.Style.Scroll;import com.extjs.gxt.ui.client.event.BaseEvent;import com.extjs.gxt.ui.client.event.ComponentEvent;import com.extjs.gxt.ui.client.event.KeyListener;import com.extjs.gxt.ui.client.event.SelectionChangedEvent;import com.extjs.gxt.ui.client.event.SelectionChangedListener;import com.extjs.gxt.ui.client.event.SelectionListener;import com.extjs.gxt.ui.client.store.ListStore;import com.extjs.gxt.ui.client.store.StoreListener;import com.extjs.gxt.ui.client.widget.ContentPanel;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.ComboBox;import com.extjs.gxt.ui.client.widget.form.DateField;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.form.TextArea;import com.extjs.gxt.ui.client.widget.form.TextField;import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;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.toolbar.TextToolItem;import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;import com.google.gwt.user.client.Window;import com.google.gwt.user.client.ui.Widget;public class FormPersonneVue extends ContentPanel implements Rafraichissable {/*--------------------------------------------------------------------------------------* VARIABLES* -------------------------------------------------------------------------------------*/private TabItem tiIdentite, tiAdresses, tiInfosNat;private Mediateur mediateur = Registry.get(RegistreId.MEDIATEUR);private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);private Personne personneSelectionnee = null;/*--------------------------------------------------------------------------------------* CONSTRUCTEUR* -------------------------------------------------------------------------------------*//*** Constructeur du panneau** Initialise le panneau et ajoute une barre d'outils à deux boutons (réinitialiser le* formulaire et annuler la saisie).** */public FormPersonneVue() {initialiserPanneau();ToolBar barreOutils = new ToolBar();ajouterBoutonEnregistrer(barreOutils);ajouterBoutonReinitialiser(barreOutils);ajouterBoutonAnnuler(barreOutils);setTopComponent(barreOutils);initialiserOnglets();creerComposantsIdentite();}/*---------------------------------------------------------------------------------------* SOUS-METHODES* --------------------------------------------------------------------------------------*//*** Inialise le panneau donné** @param contentPanel le panneau à initialiser* */public void initialiserPanneau() {setLayout(new FitLayout());setIconStyle("icone-form-ajouter");setCollapsible(false);setHeading("Ajouter une personne");setButtonAlign(HorizontalAlignment.CENTER);setLayout(new FormLayout());}/*** Crée les onglets identité, adresse et informations naturaliste** */public void initialiserOnglets() {//TabPanelTabPanel formulaireOnglets = new TabPanel();//Tab 1 : identitetiIdentite = new TabItem("Identité");tiIdentite.setLayout(new FormLayout());tiIdentite.setScrollMode(Scroll.AUTO);formulaireOnglets.add(tiIdentite);//Tab 2 : AdressetiAdresses = new TabItem("Adresse");tiAdresses.setLayout(new FlowLayout());tiAdresses.setScrollMode(Scroll.AUTO);formulaireOnglets.add(tiAdresses);//Tab 3 : Infos NaturalistestiInfosNat = new TabItem("Informations Naturalistes");tiInfosNat.setLayout(new FormLayout());tiInfosNat.setScrollMode(Scroll.AUTO);formulaireOnglets.add(tiInfosNat);add(formulaireOnglets);}/*** Crée les widgets pour l'onglet identité** *///hmIdentite référence par une chaine de caractère tous les composants de l'onglet Identiteprivate HashMap<String, Widget>hmIdentite = new HashMap<String, Widget>();public void creerComposantsIdentite() {// Gestion de l'affichage en colonnes// On crée 3 Layout container : un principal, un pour la colonne de gauche, un pour la colonne de droite// GaucheLayoutContainer left = new LayoutContainer();left.setLayout(new FormLayout());// DroiteLayoutContainer right = new LayoutContainer();right.setLayout(new FormLayout());// PrincipalLayoutContainer main = new LayoutContainer();main.setLayout(new ColumnLayout());// Ajout au principalmain.add(left, new ColumnData(.5));main.add(right, new ColumnData(.5));// Création des champs//FormLayout sera utilisé à plusieurs reprisesFormLayout formLayout = new FormLayout();FieldSet fsNoms = new FieldSet();fsNoms.setHeading("Noms");formLayout.setLabelAlign(LabelAlign.LEFT);fsNoms.setLayout(formLayout);// Nom complet// Affiché que si valeurs saisiesLabelField nomComplet = new LabelField();nomComplet.setFieldLabel("Nom complet:");nomComplet.hide();fsNoms.add(nomComplet);hmIdentite.put("nomComplet", nomComplet);//PréfixeComboBox<Valeur> cbPrefix = new ComboBox<Valeur>();ListStore<Valeur> storePrefixe = new ListStore<Valeur>();cbPrefix.setStore(storePrefixe);cbPrefix.setDisplayField("nom");cbPrefix.setEmptyText("Choisissez le préfixe:");cbPrefix.setFieldLabel("Prefix");fsNoms.add(cbPrefix);hmIdentite.put("cbPrefix", cbPrefix);// Remplir la liste des préfixemediateur.obtenirListeValeurEtRafraichir(this, "prefixe");//PrénomTextField<String> tfPrenom = new TextField<String>();tfPrenom.setFieldLabel("Prénom");fsNoms.add(tfPrenom);hmIdentite.put("tfPrenom", tfPrenom);//NomTextField<String> tfNom = new TextField<String>();tfNom.setFieldLabel("Nom");fsNoms.add(tfNom);hmIdentite.put("tfNom", tfNom);//SuffixeComboBox<Valeur> cbSuffixe = new ComboBox<Valeur>();ListStore<Valeur> storeSuffixe = new ListStore<Valeur>();cbSuffixe.setStore(storeSuffixe);cbSuffixe.setFieldLabel("Suffixe");cbSuffixe.setDisplayField("nom");cbSuffixe.setEmptyText("Choisissez un suffixe:");fsNoms.add(cbSuffixe);hmIdentite.put("cbSuffixe", cbSuffixe);// Remplir la liste des suffixes:mediateur.obtenirListeValeurEtRafraichir(this, "suffixes");// Nom : autreTextField<String> tfNomAutre = new TextField();tfNomAutre.setFieldLabel("Autres noms");fsNoms.add(tfNomAutre);hmIdentite.put("tfNomAutre", tfNomAutre);//AbréviationTextField<String> tfAbreviation = new TextField<String>();tfAbreviation.setFieldLabel("Abréviation");fsNoms.add(tfAbreviation);hmIdentite.put("tfAbreviation", tfAbreviation);//Abréviation autresTextField<String> tfAbreviationAutre = new TextField<String>();tfAbreviationAutre.setFieldLabel("Autres Abrév.");fsNoms.add(tfAbreviationAutre);hmIdentite.put("tfAbreviationAutre", tfAbreviationAutre);left.add(fsNoms);// NaissanceFieldSet fsNaissance = new FieldSet();fsNaissance.setHeading("Naissance");formLayout = new FormLayout();formLayout.setLabelAlign(LabelAlign.LEFT);fsNaissance.setLayout(formLayout);// Date naissanceDateField dfDateNaissance = new DateField();dfDateNaissance.setFieldLabel("Date");fsNaissance.add(dfDateNaissance);hmIdentite.put("dfDateNaissance", dfDateNaissance);// Lieu naissanceTextField<String> tfLieuNaissance = new TextField();tfLieuNaissance.setFieldLabel("Lieu");fsNaissance.add(tfLieuNaissance);hmIdentite.put("tfLieuNaissance", tfLieuNaissance);left.add(fsNaissance);// DecesFieldSet fsDeces = new FieldSet();fsDeces.setHeading("Décès");formLayout = new FormLayout();formLayout.setLabelAlign(LabelAlign.LEFT);fsDeces.setLayout(formLayout);// Date décèsDateField dfDateDeces = new DateField();dfDateDeces.setFieldLabel("Date");fsDeces.add(dfDateDeces);hmIdentite.put("dfDateDeces", dfDateDeces);// Lieu décèsTextField<String> tfLieuDeces = new TextField();tfLieuDeces.setFieldLabel("Lieu");fsDeces.add(tfLieuDeces);hmIdentite.put("tfLieuDeces", tfLieuDeces);left.add(fsDeces);tiIdentite.add(main);// Autres informationsFieldSet fsAutresInfos = new FieldSet();fsAutresInfos.setHeading("Autres informations");formLayout = new FormLayout();formLayout.setLabelAlign(LabelAlign.LEFT);fsAutresInfos.setLayout(formLayout);right.add(fsAutresInfos);//CivilitéComboBox<Valeur> cbCivilite = new ComboBox<Valeur>();ListStore<Valeur> storeCivilite = new ListStore<Valeur>();cbCivilite.setStore(storeCivilite);cbCivilite.setFieldLabel("Civilité");cbCivilite.setDisplayField("nom");cbCivilite.setEmptyText("Choisissez une civilité:");fsAutresInfos.add(cbCivilite);hmIdentite.put("cbCivilite", cbCivilite);// TODO : récupérer la liste des civilités en BDD//DescriptionTextArea taDescription = new TextArea();taDescription.setEmptyText("Saisissez une description");taDescription.setFieldLabel("Description");fsAutresInfos.add(taDescription);hmIdentite.put("taDescription", taDescription);// LogoTextArea taLogo = new TextArea();taLogo.setFieldLabel("Logos");taLogo.setEmptyText("Saisissez les adresses des logos séparées par un saut de ligne");fsAutresInfos.add(taLogo);hmIdentite.put("taLogo", taLogo);//ContactFieldSet fsContact = new FieldSet();fsContact.setHeading("Contact");formLayout = new FormLayout();formLayout.setLabelAlign(LabelAlign.LEFT);fsContact.setLayout(formLayout);right.add(fsContact);// CourrielsTextArea taCourriel = new TextArea();taCourriel.setFieldLabel("Courriels");taCourriel.setEmptyText("Saisissez les adresses courriels séparées par un saut de ligne");fsContact.add(taCourriel);hmIdentite.put("taCourriel", taCourriel);// URLSTextArea taUrl = new TextArea();taUrl.setFieldLabel("Sites");taUrl.setEmptyText("Saisissez les adresses des sites séparées par un saut de ligne");fsContact.add(taUrl);hmIdentite.put("taUrl", taUrl);// Ajout des évènements saisiKeyListener klNoms = new KeyListener() {public void componentKeyUp(ComponentEvent ev) {rafraichir(null);}};SelectionChangedListener<InterneValeur> selectionChange = new SelectionChangedListener<InterneValeur>() {public void selectionChanged(SelectionChangedEvent se) {rafraichir(null);}};cbPrefix.addSelectionChangedListener(selectionChange);cbPrefix.addKeyListener(klNoms);tfPrenom.addKeyListener(klNoms);tfNom.addKeyListener(klNoms);cbSuffixe.addSelectionChangedListener(selectionChange);}/*** Ajouter le bouton réinitialiser à la barre d'outils donnée** @param barreOutils la barre d'outils à modifier* */public static void ajouterBoutonReinitialiser(ToolBar barreOutils) {//Le bouton réintialiser recharge la page sans sauvegarder les informationsTextToolItem reinitialiser = new TextToolItem("Réinitialiser");reinitialiser.setIconStyle(ComposantClass.ICONE_RAFRAICHIR);reinitialiser.addSelectionListener(new SelectionListener<ComponentEvent>() {public void componentSelected(ComponentEvent ce) {((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicAjouterPersonne();}});barreOutils.add(reinitialiser);}/*** Ajouter le bouton Sauvegarder à la barre d'outils donnée** @param barreOutils la barre d'outils à modifier* */public static void ajouterBoutonEnregistrer(ToolBar barreOutils) {//Le bouton réintialiser recharge la page sans sauvegarder les informationsTextToolItem enregistrer = new TextToolItem("Enregistrer");enregistrer.setIconStyle(ComposantClass.ICONE_PREFERENCE);enregistrer.addSelectionListener(new SelectionListener<ComponentEvent>() {public void componentSelected(ComponentEvent ce) {// TODO : Enregistrer le formulaire}});barreOutils.add(enregistrer);}/*** Ajouter le bouton annuler à la barre d'outils donnée** @param barreOutils la barre d'outils à modifier* */public static void ajouterBoutonAnnuler(ToolBar barreOutils) {// Le bouton annuler ne sauvegarde pas les informations et renvoie vers la page précédenteTextToolItem annuler = new TextToolItem("Annuler");annuler.addSelectionListener(new SelectionListener<ComponentEvent>() {public void componentSelected(ComponentEvent ce) {((Mediateur) Registry.get(RegistreId.MEDIATEUR)).clicMenu("Personnes");}});annuler.setIconStyle(ComposantClass.ICONE_SUPPRIMER);barreOutils.add(annuler);}/*---------------------------------------------------------------------------------------* RAFRAICHISSEMENT DU PANNEAU* --------------------------------------------------------------------------------------*/public void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof ValeurListe){ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;// Créer une liste de valeursList<Valeur> liste = new ArrayList<Valeur>();for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {liste.add(listeValeurs.get(it.next()));}if (listeValeurs.getId().equals(config.getListeId("prefixe"))) {//Remplir la liste PrefixeListStore<Valeur> stPrefixe = ((ComboBox) hmIdentite.get("cbPrefix")).getStore();stPrefixe.removeAll();stPrefixe.add(liste);((ComboBox) hmIdentite.get("cbPrefix")).setStore(stPrefixe);} else if (listeValeurs.getId().equals(config.getListeId("suffixes"))) {//Remplir la liste SuffixeListStore<Valeur> stSuffix = ((ComboBox) hmIdentite.get("cbSuffixe")).getStore();stSuffix.removeAll();stSuffix.add(liste);((ComboBox) hmIdentite.get("cbSuffixe")).setStore(stSuffix);}} else if (nouvellesDonnees instanceof Personne) {//Mise à jour de la personnePersonne personne = (Personne) nouvellesDonnees;personneSelectionnee = personne;((TextField) hmIdentite.get("tfPrenom")).setValue(personne.get("prenom"));((TextField) hmIdentite.get("tfNom")).setValue(personne.get("nom"));((TextField) hmIdentite.get("tfNomAutre")).setValue(personne.get("truk_nom_autre"));((TextField) hmIdentite.get("tfAbreviation")).setValue(personne.get("abreviation"));((TextField) hmIdentite.get("tfAbreviationAutre")).setValue(personne.get("truk_abreviation_autre"));//((DateField) hmIdentite.get("dfDateNaissance")).setValue(new Date((String) personne.get("naissance_date")));((TextField) hmIdentite.get("tfLieuNaissance")).setValue(personne.get("naissance_lieu"));//((DateField) hmIdentite.get("dfDateDeces")).setValue(new Date((String) personne.get("deces_date")));((TextField) hmIdentite.get("tfLieuDeces")).setValue(personne.get("deces_lieu"));}if (nouvellesDonnees == null){ComboBox cb= (ComboBox) hmIdentite.get("cbPrefix");/** Met à jour le nom Complet du formulaire* */String valeurRetour = "";// PrefixeString prefixe = "";Valeur valPrefixe = (Valeur) ((ComboBox) hmIdentite.get("cbPrefix")).getValue();if (valPrefixe != null) {prefixe = valPrefixe.getNom();}// PrénomString prenom = (String) ((TextField) hmIdentite.get("tfPrenom")).getValue();// NomString nom = (String) ((TextField) hmIdentite.get("tfNom")).getValue();// SuffixeString suffixe = "";Valeur valSuffixe = (Valeur) ((ComboBox) hmIdentite.get("cbSuffixe")).getValue();if (valSuffixe != null) {suffixe = valSuffixe.getNom();}// Mettre à jour la valeurvaleurRetour = prefixe + " " + prenom + " " + nom + " " + suffixe;valeurRetour = valeurRetour.replaceAll("null", "");((LabelField) hmIdentite.get("nomComplet")).setValue(valeurRetour);if (!valeurRetour.trim().equals("")) {((LabelField) hmIdentite.get("nomComplet")).show();} else {((LabelField) hmIdentite.get("nomComplet")).hide();}}}}