Subversion Repositories eFlore/Applications.coel

Rev

Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues;

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.InterneValeur;
import org.tela_botanica.client.modeles.Personne;
import org.tela_botanica.client.modeles.Publication;
import org.tela_botanica.client.modeles.Structure;
import org.tela_botanica.client.modeles.StructureConservation;
import org.tela_botanica.client.modeles.StructureValorisation;

import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.Store;
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.DateField;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
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.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.core.client.GWT;

public class FormPublicationVue extends LayoutContainer implements Rafraichissable {

        private Mediateur mediateur = null;
        
        FormPanel panel = null ;
        
        private ComboBox<Personne> comboListeAuteurs = null;
        private ListStore<Personne> storePersonne = null;
        
        private TextField<String> nomArticle = null;
        private TextField<String> nomPub = null;
        private TextField<String> intituleCollPub = null;
        private TextField<String> uriPub = null;
        
        private ComboBox<Structure> comboListeEditeurs = null;
        private ListStore<Structure> storeEditeurs = null;
        private DateField datePub = null;
        private TextField<String> tomPub = null;
        private TextField<String> fasciculePub = null;
        private TextField<String> pagesPub = null;
        private String mode = "AJOUT";
        

        public FormPublicationVue() {
                
                setLayout(new FitLayout());
                mediateur = Registry.get(RegistreId.MEDIATEUR);
                
                storePersonne = new ListStore<Personne>();
                
                // Création de la disposition : FIELDSET
                FormLayout layoutFieldset = new FormLayout();
                layoutFieldset.setLabelWidth(200);
                layoutFieldset.setPadding(4);

                //+-----------------------------------------------------------------------------------------------------------+
                // Création du panneau Formulaire
                panel = new FormPanel();  
                panel.setFrame(true);
                panel.setIconStyle("icone-form-ajouter");  
                panel.setCollapsible(false);  
                panel.setHeading("Ajout d'une publication");  
                panel.setButtonAlign(HorizontalAlignment.CENTER);  
                panel.setLayout(new FlowLayout());
                
                add(panel);
                
                // Fieldset Auteur
                FieldSet fieldSetAuteurs = new FieldSet();
                fieldSetAuteurs.setHeading("Auteur(s)");
                fieldSetAuteurs.setCollapsible(true);
                fieldSetAuteurs.setLayout(layoutFieldset);
                
                panel.add(fieldSetAuteurs);
                
                this.comboListeAuteurs = new ComboBox<Personne>();  
                comboListeAuteurs.setEmptyText("Sélectionner un auteur...");
                comboListeAuteurs.setFieldLabel("Auteur de la publication");
                comboListeAuteurs.setDisplayField("nom");
                comboListeAuteurs.setStore(storePersonne);
                comboListeAuteurs.setEditable(true);
                comboListeAuteurs.setTypeAhead(true);  
                comboListeAuteurs.setTriggerAction(TriggerAction.ALL);
                
                fieldSetAuteurs.add(comboListeAuteurs);
                
                // Création de la disposition : FIELDSET
                FormLayout layoutFieldset2 = new FormLayout();
                layoutFieldset.setLabelWidth(200);
                layoutFieldset.setPadding(4);
                
                // Fieldset Infos Générales
                FieldSet fieldSetInfosGen = new FieldSet();
                fieldSetInfosGen.setHeading("Informations générales");
                fieldSetInfosGen.setCollapsible(true);
                fieldSetInfosGen.setLayout(layoutFieldset2);
                
                
                panel.add(fieldSetInfosGen);
                
                nomArticle = new TextField<String>();
                nomArticle.setName("cpu");
                nomArticle.setFieldLabel("Titre de l'article ou de l'ouvrage");
                
                nomPub = new TextField<String>();
                nomPub.setFieldLabel("Intitulé complet de la publication");
                
                intituleCollPub = new TextField<String>();
                intituleCollPub.setFieldLabel("Intitulé de la collection ou de la revue");
                
                uriPub = new TextField<String>();
                uriPub.setFieldLabel("URI de la publication");
                
                fieldSetInfosGen.add(nomArticle);
                fieldSetInfosGen.add(nomPub);
                fieldSetInfosGen.add(intituleCollPub);
                fieldSetInfosGen.add(uriPub);
                
                // Création de la disposition : FIELDSET
                FormLayout layoutFieldset3 = new FormLayout();
                layoutFieldset.setPadding(4);
                
                // Fieldset Edition
                FieldSet fieldSetEdition = new FieldSet();
                fieldSetEdition.setHeading("Edition");
                fieldSetEdition.setCollapsible(true);
                fieldSetEdition.setLayout(layoutFieldset3);
                
                panel.add(fieldSetEdition);
                
                storeEditeurs = new ListStore<Structure>();
                comboListeEditeurs = new ComboBox<Structure>();  
                comboListeEditeurs.setEmptyText("Sélectionner un editeur...");
                comboListeEditeurs.setFieldLabel("Editeur de la publication");
                comboListeEditeurs.setDisplayField("nom");
                comboListeEditeurs.setStore(storeEditeurs);
                comboListeEditeurs.setEditable(true);
                comboListeEditeurs.setTypeAhead(true);  
                comboListeEditeurs.setTriggerAction(TriggerAction.ALL);
                
                datePub = new DateField();
                datePub.setFieldLabel("Date de publication");
                
                tomPub = new TextField<String>();
                tomPub.setFieldLabel("Tome");
                
                fasciculePub = new TextField<String>();
                fasciculePub.setFieldLabel("Fascicule");
                
                pagesPub = new TextField<String>();
                pagesPub.setFieldLabel("Pages");
                
                fieldSetEdition.add(comboListeEditeurs);
                fieldSetEdition.add(datePub, new FormData(75,20));
                fieldSetEdition.add(tomPub);
                fieldSetEdition.add(fasciculePub);
                fieldSetEdition.add(pagesPub, new FormData(100,20));
                
                // Ajout des boutons au panneau formulaire
                Button annulerBtn = new Button("Annuler");
                annulerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() {

                        @Override
                        public void componentSelected(ComponentEvent ce) {
                                mediateur.clicMenu("Publications");
                        }
                        
                });
                panel.addButton(annulerBtn);
                Button validerBtn = new Button("Valider");
                validerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() {

                        @Override
                        public void componentSelected(ComponentEvent ce) {
                                soumettreFormulaire();
                        }
                        
                });
                panel.addButton(validerBtn);
                
        }
        
        public void rafraichir(Object nouvelleDonnees) {
                if(nouvelleDonnees instanceof Publication) {
                        Publication publi = (Publication)nouvelleDonnees;
                        
                        comboListeAuteurs.setRawValue(publi.getAuteur());
                        nomArticle.setValue(publi.getTitre());
                        nomPub.setValue(publi.getNomComplet());
                        intituleCollPub.setValue(publi.getCollection());
                        uriPub.setValue(publi.getURI());
                        comboListeEditeurs.setRawValue(publi.getEditeur());
                        datePub.setRawValue(publi.getDateParution());
                        tomPub.setValue(publi.getIndicationNvt());
                        fasciculePub.setValue(publi.getFascicule());
                        pagesPub.setValue(publi.getPages());
                        
                        panel.setHeading("Modification d'une publication");
                        
                        mode = "MODIFICATION" ;
                }
        }
        
        private void soumettreFormulaire() {
                
                String auteur = comboListeAuteurs.getRawValue();
                String nomArt = nomArticle.getValue();
                String pub = nomPub.getValue();
                String collPub = intituleCollPub.getValue();
                String uri = uriPub.getValue();
                String editeur = comboListeEditeurs.getRawValue();
                String datePar = datePub.getRawValue();
                String tome = tomPub.getValue();
                String fascicule = fasciculePub.getValue();
                String pages = pagesPub.getValue();
                
                Publication publi = new Publication(pub,uri,auteur,collPub,nomArt,editeur,datePar,tome,fascicule,pages);
                
                if (mode.equals("AJOUT")) {
                        mediateur.ajouterPublication(this, publi);
                } else if (mode.equals("MODIF")) {
                        mediateur.modifierPublication(this, publi);
                }
        }
}