Rev 91 | Rev 102 | 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.InterneValeur;import org.tela_botanica.client.modeles.InterneValeurListe;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.event.SelectionChangedEvent;import com.extjs.gxt.ui.client.event.SelectionChangedListener;import com.extjs.gxt.ui.client.store.ListStore;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.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.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.DateField.DateFieldMessages;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.FormData;import com.extjs.gxt.ui.client.widget.layout.FormLayout;import com.google.gwt.core.client.GWT;import com.google.gwt.i18n.client.DateTimeFormat;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;private ComboBox<InterneValeur> comboAcronyme = null;private TextField<String> ihChp = null;private TextField<String> mnhnChp = null;private ComboBox<InterneValeur> comboTypeStructure = null;public FormStructureVue() {//+-----------------------------------------------------------------------------------------------------------+// Initialisation de variablessetLayout(new FitLayout());coelModele = Registry.get(RegistreId.MODELE);// Création de la disposition : FIELDSETFormLayout layoutFieldset = new FormLayout();layoutFieldset.setLabelWidth(200);layoutFieldset.setPadding(4);//+-----------------------------------------------------------------------------------------------------------+// Création du panneau FormulaireFormPanel 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());// Création des ongletsTabPanel onglets = new TabPanel();//tabs.setDeferredRender(false);//+-----------------------------------------------------------------------------------------------------------+// Onlget formulaire IDENTIFICATIONTabItem identificationOnglet = new TabItem();identificationOnglet.setText("Identification");identificationOnglet.setLayout(new FormLayout());// Fieldset IDENTITÉFieldSet fieldSetIdentite = new FieldSet();fieldSetIdentite.setHeading("Identité");fieldSetIdentite.setCollapsible(true);fieldSetIdentite.setLayout(layoutFieldset);TextField<String> nomStructureChp = new TextField<String>();nomStructureChp.setFieldLabel("Nom de la structure");nomStructureChp.setAllowBlank(false);nomStructureChp.getMessages().setBlankText("Ce champ est obligatoire.");fieldSetIdentite.add(nomStructureChp, new FormData(450, 0));// Création du sous-formulaire : AcronymeLayoutContainer ligne = new LayoutContainer();ligne.setLayout(new ColumnLayout());LayoutContainer gauche = new LayoutContainer();FormLayout layoutGauche = new FormLayout();layoutGauche.setLabelAlign(LabelAlign.LEFT);layoutGauche.setLabelWidth(200);layoutGauche.setPadding(0);gauche.setLayout(layoutGauche);LayoutContainer droite = new LayoutContainer();FormLayout layoutDroite = new FormLayout();layoutDroite.setLabelWidth(0);layoutDroite.setPadding(0);droite.setLayout(layoutDroite);ListStore<InterneValeur> acronymes = new ListStore<InterneValeur>();acronymes.add(InterneValeurListe.getTypeAcronyme());comboAcronyme = new ComboBox<InterneValeur>();comboAcronyme.setEmptyText("Sélectioner un type d'acronyme...");comboAcronyme.setFieldLabel("Acronymes");comboAcronyme.setDisplayField("nom");comboAcronyme.setStore(acronymes);comboAcronyme.setEditable(false);comboAcronyme.setTypeAhead(true);comboAcronyme.setTriggerAction(TriggerAction.ALL);comboAcronyme.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {String acronymeAbr = se.getSelectedItem().getAbr();if (acronymeAbr.equals("IH")) {mnhnChp.hide();ihChp.show();} else if (acronymeAbr.equals("MNHN")) {ihChp.hide();mnhnChp.show();} else if (acronymeAbr.equals("")) {ihChp.hide();mnhnChp.hide();comboAcronyme.clearSelections();}}});gauche.add(comboAcronyme);ihChp = new TextField<String>();//ihChp.setEmptyText("Index Herbariorum");ihChp.setLabelSeparator("");ihChp.setToolTip("Index Herbariorum : herbier de plus de 5000 échantillons");ihChp.hide();droite.add(ihChp);mnhnChp = new TextField<String>();//mnhnChp.setEmptyText("MNHN");mnhnChp.setLabelSeparator("");mnhnChp.setToolTip("Acronyme MNHN : herbier de moins de 5000 échantillons");mnhnChp.hide();droite.add(mnhnChp);ligne.add(gauche, new ColumnData(0.5));ligne.add(droite, new ColumnData(0.5));fieldSetIdentite.add(ligne);// Création du sous-formulaire : Type de StructureLayoutContainer ligneTs = new LayoutContainer();ligneTs.setLayout(new ColumnLayout());LayoutContainer gaucheTs = new LayoutContainer();layoutGauche = new FormLayout();layoutGauche.setLabelAlign(LabelAlign.LEFT);layoutGauche.setLabelWidth(200);layoutGauche.setPadding(0);gaucheTs.setLayout(layoutGauche);LayoutContainer droiteTs = new LayoutContainer();layoutDroite = new FormLayout();layoutDroite.setLabelWidth(0);layoutDroite.setPadding(0);droiteTs.setLayout(layoutDroite);ListStore<InterneValeur> typesStructure = new ListStore<InterneValeur>();typesStructure.add(InterneValeurListe.getTypeStructure());this.comboTypeStructure = new ComboBox<InterneValeur>();comboTypeStructure.setEmptyText("Sélectioner un type de structure...");comboTypeStructure.setFieldLabel("Statut des structures");comboTypeStructure.setDisplayField("nom");comboTypeStructure.setStore(typesStructure);comboTypeStructure.setEditable(false);comboTypeStructure.setTypeAhead(true);comboTypeStructure.setTriggerAction(TriggerAction.ALL);comboTypeStructure.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {String typeAbr = se.getSelectedItem().getAbr();if (typeAbr.equals("stpu")) {comboLstpr.hide();comboLstpu.show();} else if (typeAbr.equals("stpr")) {comboLstpu.hide();comboLstpr.show();} else if (typeAbr.equals("")) {comboLstpr.hide();comboLstpu.hide();comboTypeStructure.clearSelections();}}});gaucheTs.add(comboTypeStructure);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.setLabelSeparator("");comboLstpu.setDisplayField("nom");comboLstpu.setEditable(false);comboLstpu.setTriggerAction(TriggerAction.ALL);comboLstpu.setStore(magazinLstpu);comboLstpu.hide();droiteTs.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.setLabelSeparator("");comboLstpr.setDisplayField("nom");comboLstpr.setEditable(false);comboLstpr.setTriggerAction(TriggerAction.ALL);comboLstpr.setStore(magazinLstpr);comboLstpr.hide();droiteTs.add(comboLstpr);ligneTs.add(gaucheTs, new ColumnData(0.5));ligneTs.add(droiteTs, new ColumnData(0.5));fieldSetIdentite.add(ligneTs);DateField dateFondationChp = new DateField();dateFondationChp.setFieldLabel("Date de fondation");dateFondationChp.getPropertyEditor().getFormat();dateFondationChp.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));dateFondationChp.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");fieldSetIdentite.add(dateFondationChp);identificationOnglet.add(fieldSetIdentite);// Fieldset ADRESSELayoutContainer principalFdAdresse = new LayoutContainer();principalFdAdresse.setLayout(new ColumnLayout());LayoutContainer gaucheFdAdresse = new LayoutContainer();layoutGauche = new FormLayout();layoutGauche.setLabelAlign(LabelAlign.LEFT);layoutGauche.setLabelWidth(100);layoutGauche.setPadding(0);gaucheFdAdresse.setLayout(layoutGauche);LayoutContainer droiteFdAdresse = new LayoutContainer();layoutDroite = new FormLayout();layoutDroite.setLabelAlign(LabelAlign.LEFT);layoutDroite.setLabelWidth(100);layoutDroite.setPadding(0);droiteFdAdresse.setLayout(layoutDroite);FieldSet fieldSetAdresse = new FieldSet();fieldSetAdresse.setHeading("Adresse");fieldSetAdresse.setCollapsible(true);layoutFieldset = new FormLayout();layoutFieldset.setLabelWidth(100);layoutFieldset.setPadding(4);fieldSetAdresse.setLayout(layoutFieldset);TextField<String> adrChp = new TextField<String>();adrChp.setFieldLabel("Adresse");fieldSetAdresse.add(adrChp, new FormData(550, 0));TextField<String> cpChp = new TextField<String>();cpChp.setFieldLabel("Code postal");gaucheFdAdresse.add(cpChp);TextField<String> villeChp = new TextField<String>();villeChp.setFieldLabel("Ville");droiteFdAdresse.add(villeChp);TextField<String> regionChp = new TextField<String>();regionChp.setFieldLabel("Région");gaucheFdAdresse.add(regionChp);TextField<String> paysChp = new TextField<String>();paysChp.setFieldLabel("Pays");droiteFdAdresse.add(paysChp);principalFdAdresse.add(gaucheFdAdresse, new ColumnData(.5));principalFdAdresse.add(droiteFdAdresse, new ColumnData(.5));fieldSetAdresse.add(principalFdAdresse);identificationOnglet.add(fieldSetAdresse);// Fieldset TÉLÉPHONE et EMAILLayoutContainer principalFdTelMail = new LayoutContainer();principalFdTelMail.setLayout(new ColumnLayout());LayoutContainer gaucheFdTelMail = new LayoutContainer();layoutGauche = new FormLayout();layoutGauche.setLabelAlign(LabelAlign.LEFT);layoutGauche.setLabelWidth(100);layoutGauche.setPadding(0);gaucheFdTelMail.setLayout(layoutGauche);LayoutContainer droiteFdTelMail = new LayoutContainer();layoutDroite = new FormLayout();layoutDroite.setLabelAlign(LabelAlign.LEFT);layoutDroite.setLabelWidth(100);layoutDroite.setPadding(0);droiteFdTelMail.setLayout(layoutDroite);FieldSet fieldSetTelMail = new FieldSet();fieldSetTelMail.setHeading("Communication");fieldSetTelMail.setCollapsible(true);layoutFieldset = new FormLayout();layoutFieldset.setLabelWidth(200);layoutFieldset.setPadding(4);fieldSetTelMail.setLayout(layoutFieldset);TextField<String> telChp = new TextField<String>();telChp.setFieldLabel("Téléphone");gaucheFdTelMail.add(telChp);TextField<String> faxChp = new TextField<String>();faxChp.setFieldLabel("Fax");droiteFdTelMail.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");gaucheFdTelMail.add(emailChp);TextField<String> urlChp = new TextField<String>();urlChp.setFieldLabel("Site web");droiteFdTelMail.add(urlChp);principalFdTelMail.add(gaucheFdTelMail, new ColumnData(.5));principalFdTelMail.add(droiteFdTelMail, new ColumnData(.5));fieldSetTelMail.add(principalFdTelMail);identificationOnglet.add(fieldSetTelMail);onglets.add(identificationOnglet);//+-----------------------------------------------------------------------------------------------------------+// Onlget formulaire PERSONNELTabItem personnelOnglet = new TabItem();personnelOnglet.setText("Personnel");personnelOnglet.setLayout(new FormLayout());onglets.add(personnelOnglet);//+-----------------------------------------------------------------------------------------------------------+// Onlget formulaire CONSERVATIONTabItem conservationOnglet = new TabItem();conservationOnglet.setText("Conservation");conservationOnglet.setLayout(new FormLayout());onglets.add(conservationOnglet);//+-----------------------------------------------------------------------------------------------------------+// Onlget formulaire VALORISATIONTabItem valorisationOnglet = new TabItem();valorisationOnglet.setText("Valorisation");valorisationOnglet.setLayout(new FormLayout());onglets.add(valorisationOnglet);//+-----------------------------------------------------------------------------------------------------------+// Gestion du FORMULAIRE GÉNÉRAL// Ajout du typeLayoutContainer typeConteneur = new LayoutContainer();layoutDroite = new FormLayout();layoutDroite.setLabelWidth(50);layoutDroite.setPadding(5);typeConteneur.setLayout(layoutDroite);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);typeConteneur.add(group);panel.add(typeConteneur);// Ajout des ongletspanel.add(onglets);// Ajout des boutons au panneau formulaireButton annulerBtn = new Button("Annuler");panel.addButton(annulerBtn);Button validerBtn = new Button("Valider");panel.addButton(validerBtn);// Ajout du panneau Formulaire à la disposition généraleadd(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émentsif (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);}}}}