Subversion Repositories eFlore/Applications.coel

Rev

Rev 69 | Rev 100 | 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.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.Modele;
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.Structure;
import org.tela_botanica.client.modeles.StructureListe;
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.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.BasePagingLoader;
import com.extjs.gxt.ui.client.data.JsonReader;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.ModelType;
import com.extjs.gxt.ui.client.data.PagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoader;
import com.extjs.gxt.ui.client.data.ScriptTagProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.Radio;
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
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.google.gwt.core.client.GWT;

public class FormStructureVue extends LayoutContainer implements Rafraichissable {

        private Modele coelModele = null ;
        private ListStore<Valeur> magazinLstpr = null;
        private ComboBox<Valeur> comboLstpr = null;
        private ListStore<Valeur> magazinLstpu = null;
        private ComboBox<Valeur> comboLstpu = null;
        
        public FormStructureVue() {
                setLayout(new FitLayout());
                
                // Initialisation de variables
                coelModele = Registry.get(RegistreId.MODELE);
                
                // Création du panneau Formulaire
                FormPanel panel = new FormPanel();  
                panel.setFrame(true);  
                panel.setIconStyle("icone-form-ajouter");  
                panel.setCollapsible(false);  
                panel.setHeading("Ajout d'une institution");  
                panel.setButtonAlign(HorizontalAlignment.CENTER);  
                panel.setLayout(new FlowLayout());  
                
                LayoutContainer main = new LayoutContainer();  
                main.setLayout(new ColumnLayout());

                // Création de la dispostion : GAUCHE
                LayoutContainer gauche = new LayoutContainer();
                FormLayout layout = new FormLayout();
                layout.setLabelAlign(LabelAlign.LEFT);
                layout.setLabelWidth(200);
                gauche.setLayout(layout);  

                // Création de la dispostion : DROITE
                LayoutContainer droite = new LayoutContainer();
                layout = new FormLayout();
                layout.setLabelAlign(LabelAlign.LEFT);
                droite.setLayout(layout);  

                // Formulaire GAUCHE            
                TextField<String> nomStructureChp = new TextField<String>();  
                nomStructureChp.setFieldLabel("Nom de la structure");
                nomStructureChp.setAllowBlank(false);
                gauche.add(nomStructureChp);
                
                TextField<String> ihChp = new TextField<String>();  
                ihChp.setFieldLabel("Acronyme Index Herbariorum");
                ihChp.setToolTip("Herbier de plus de 5000 échantillons");
                gauche.add(ihChp);
                
                TextField<String> mnhnChp = new TextField<String>();  
                mnhnChp.setFieldLabel("Acronyme MNHN");
                mnhnChp.setToolTip("Herbier de moins de 5000 échantillons");
                gauche.add(mnhnChp);
                
                // Combobox
                coelModele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpu"));
                magazinLstpu = new ListStore<Valeur>();
                magazinLstpu.add(new ArrayList<Valeur>());
                comboLstpu = new ComboBox<Valeur>();  
                comboLstpu.setFieldLabel("Statut des structures publiques");
                comboLstpu.setDisplayField("nom");
                comboLstpu.setTriggerAction(TriggerAction.ALL);
                comboLstpu.setStore(magazinLstpu);
                gauche.add(comboLstpu);
                
                coelModele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpr"));
                magazinLstpr = new ListStore<Valeur>();
                magazinLstpr.add(new ArrayList<Valeur>());
                comboLstpr = new ComboBox<Valeur>();  
                comboLstpr.setFieldLabel("Statut des structures privées");
                comboLstpr.setDisplayField("nom");
                comboLstpr.setTriggerAction(TriggerAction.ALL);
                comboLstpr.setStore(magazinLstpr);
                gauche.add(comboLstpr);
                
                TextField<String> adrChp = new TextField<String>();  
                adrChp.setFieldLabel("Adresse");
                gauche.add(adrChp);
                
                TextField<String> cpChp = new TextField<String>();  
                cpChp.setFieldLabel("Code postal");
                gauche.add(cpChp);
                
                TextField<String> villeChp = new TextField<String>();  
                villeChp.setFieldLabel("Ville");
                gauche.add(villeChp);
                
                TextField<String> regionChp = new TextField<String>();  
                regionChp.setFieldLabel("Région");
                gauche.add(regionChp);
                
                TextField<String> paysChp = new TextField<String>();  
                paysChp.setFieldLabel("Pays");
                gauche.add(paysChp);
                
                TextField<String> telChp = new TextField<String>();  
                telChp.setFieldLabel("Téléphone");
                gauche.add(telChp);
                
                TextField<String> faxChp = new TextField<String>();  
                faxChp.setFieldLabel("Fax");
                gauche.add(faxChp);
                
                TextField<String> emailChp = new TextField<String>();  
                emailChp.setFieldLabel("Courriel");
                emailChp.setToolTip("Saisir le courriel de l'organisation, pas de courriel individuel. Ex. : accueil@organisation.org");
                gauche.add(emailChp);
                
                TextField<String> urlChp = new TextField<String>();  
                urlChp.setFieldLabel("Site web");
                gauche.add(urlChp);
                
                TextField<String> dateFondationChp = new TextField<String>();  
                dateFondationChp.setFieldLabel("Date de fondation");
                gauche.add(dateFondationChp);
                
                // Formulaire DROITE            
                RadioGroup group = new RadioGroup();  
                group.setFieldLabel("Type");
                Radio structureRadio = new Radio();  
                structureRadio.setBoxLabel("Structure");
                structureRadio.setValue(true);
                group.add(structureRadio);
                Radio particulierRadio = new Radio();
                particulierRadio.setBoxLabel("Particulier");
                group.add(particulierRadio);
                droite.add(group);
                
                // Ajout des colonnes
                main.add(gauche, new ColumnData(.5));  
                main.add(droite, new ColumnData(.5));
                panel.add(main);
                
                // Ajout des boutons au panneau formulaire
                Button annulerBtn = new Button("Annuler");
                panel.addButton(annulerBtn);
                Button validerBtn = new Button("Valider");
                panel.addButton(validerBtn);
                
                // Ajout du panneau Formulaire à la disposition générale
                add(panel);               
        }

        public void rafraichir(Object nouvelleDonnees) {
                if (nouvelleDonnees instanceof ValeurListe) {
                        ValeurListe listeValeurs = (ValeurListe) nouvelleDonnees;
                        
                        List<Valeur> liste = new ArrayList<Valeur>();
                        for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
                                liste.add(listeValeurs.get(it.next()));
                        }
                        // Test pour savoir si la liste contient des éléments
                        if (liste.size() > 0) {
                                Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
                                if (listeValeurs.getId().equals(config.getListeId("stpr"))) {
                                        GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null);
                                        magazinLstpr.removeAll();
                                        magazinLstpr.add(liste);
                                        comboLstpr.setStore(magazinLstpr);
                                }
                                if (listeValeurs.getId().equals(config.getListeId("stpu"))) {
                                        GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null);
                                        magazinLstpu.removeAll();
                                        magazinLstpu.add(liste);
                                        comboLstpu.setStore(magazinLstpu);
                                }
                        } else {
                                GWT.log("La liste #"+listeValeurs.getId()+" ne contient aucune valeurs!", null);
                        }
                }
        }
}