Rev 1239 | Rev 1329 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.collection;import java.util.ArrayList;import org.tela_botanica.client.ComposantClass;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.composants.ChampCaseACocher;import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;import org.tela_botanica.client.composants.ChampMultiValeurs;import org.tela_botanica.client.composants.ConteneurMultiChamps;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.ValeurListe;import org.tela_botanica.client.modeles.collection.Collection;import org.tela_botanica.client.modeles.collection.CollectionListe;import org.tela_botanica.client.modeles.projet.Projet;import org.tela_botanica.client.modeles.projet.ProjetListe;import org.tela_botanica.client.modeles.structure.Structure;import org.tela_botanica.client.modeles.structure.StructureListe;import org.tela_botanica.client.util.Debug;import org.tela_botanica.client.vues.Formulaire;import org.tela_botanica.client.vues.FormulaireOnglet;import com.extjs.gxt.ui.client.event.BaseEvent;import com.extjs.gxt.ui.client.event.Events;import com.extjs.gxt.ui.client.event.Listener;import com.extjs.gxt.ui.client.store.ListStore;import com.extjs.gxt.ui.client.util.Margins;import com.extjs.gxt.ui.client.widget.Text;import com.extjs.gxt.ui.client.widget.form.ComboBox;import com.extjs.gxt.ui.client.widget.form.Field;import com.extjs.gxt.ui.client.widget.form.FieldSet;import com.extjs.gxt.ui.client.widget.form.HiddenField;import com.extjs.gxt.ui.client.widget.form.NumberField;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.Validator;import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;import com.extjs.gxt.ui.client.widget.layout.FormData;import com.extjs.gxt.ui.client.widget.layout.HBoxLayoutData;import com.google.gwt.i18n.client.NumberFormat;public class CollectionFormGeneral extends FormulaireOnglet implements Rafraichissable {public static final String ID = "general";private Collection collection = null;private Collection collectionCollectee = null;private HiddenField<String> idCollectionChp = null;private ComboBox<Projet> projetsCombo = null;private ComboBox<Structure> structuresCombo = null;private ComboBox<Collection> collectionsCombo = null;private ChampCaseACocher periodeConstitutionChp = null;private ChampComboBoxListeValeurs groupementPrincipeCombo = null;private ChampMultiValeurs lieuCouvertureChp = null;private ChampComboBoxListeValeurs specimenTypeCombo = null;private ChampComboBoxListeValeurs precisionTypeNbreCombo = null;private NumberField nbreTypeChp = null;private ChampComboBoxListeValeurs classementSpecimenTypeCombo = null;private ChampComboBoxListeValeurs typeDepotCombo = null;private TextField<String> coteChp = null;private ChampMultiValeurs idAlternatifsChp = null;private ChampMultiValeurs nomsAlternatifsChp = null;private ChampMultiValeurs codesAlternatifsChp = null;private TextArea descriptionSpecialisteChp = null;private TextArea descriptionChp = null;private TextArea historiqueChp = null;private ChampMultiValeurs urlsChp = null;private ChampComboBoxListeValeurs butRealisationCombo = null;public CollectionFormGeneral(Formulaire formulaireCourrant) {initialiserOnglet(formulaireCourrant);setId(ID);setText(Mediateur.i18nC.collectionGeneral());creerChampsCache();creerFieldsetLiaison();creerFieldsetAdministratif();creerFieldsetDescription();creerFieldsetCouverture();creerFieldsetType();}private void initialiserCollection() {collection = ((CollectionForm) formulaire).collection;collectionCollectee = ((CollectionForm) formulaire).collectionCollectee;}private void creerChampsCache() {// Champs cachésidCollectionChp = new HiddenField<String>();this.add(idCollectionChp);}private void creerFieldsetLiaison() {FieldSet liaisonFieldSet = new FieldSet();liaisonFieldSet.setHeading(i18nC.liaisonTitreCollection());liaisonFieldSet.setCollapsible(true);liaisonFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));projetsCombo = new ComboBox<Projet>();projetsCombo.setTabIndex(tabIndex++);projetsCombo.setFieldLabel(i18nC.projetChamp());projetsCombo.setDisplayField("nom");projetsCombo.setForceSelection(true);projetsCombo.setValidator(new Validator() {public String validate(Field<?> field, String value) {String retour = null;if (field.getRawValue().equals("")) {field.setValue(null);} else if (projetsCombo.getStore().findModel("nom", field.getRawValue()) == null) {String contenuBrut = field.getRawValue();field.setValue(null);field.setRawValue(contenuBrut);retour = "Veuillez sélectionner une valeur ou laisser le champ vide";}return retour;}});projetsCombo.setTriggerAction(TriggerAction.ALL);projetsCombo.setStore(new ListStore<Projet>());projetsCombo.addStyleName(ComposantClass.OBLIGATOIRE);projetsCombo.addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire());liaisonFieldSet.add(projetsCombo, new FormData(450, 0));mediateur.selectionnerProjet(this, null);structuresCombo = new ComboBox<Structure>();structuresCombo.setTabIndex(tabIndex++);structuresCombo.setFieldLabel(i18nC.lienStructureCollection());structuresCombo.setDisplayField("nom");structuresCombo.setForceSelection(true);structuresCombo.setValidator(new Validator() {public String validate(Field<?> field, String value) {String retour = null;if (field.getRawValue().equals("")) {field.setValue(null);} else if (structuresCombo.getStore().findModel("nom", field.getRawValue()) == null) {String contenuBrut = field.getRawValue();field.setValue(null);field.setRawValue(contenuBrut);retour = "Veuillez sélectionner une valeur ou laisser le champ vide";}return retour;}});structuresCombo.setTriggerAction(TriggerAction.ALL);structuresCombo.setStore(new ListStore<Structure>());liaisonFieldSet.add(structuresCombo, new FormData(450, 0));mediateur.selectionnerStructureParProjet(this, null);collectionsCombo = new ComboBox<Collection>();collectionsCombo.setTabIndex(tabIndex++);collectionsCombo.setFieldLabel(i18nC.lienMereCollection());collectionsCombo.setDisplayField("nom");collectionsCombo.setForceSelection(true);collectionsCombo.setValidator(new Validator() {public String validate(Field<?> field, String value) {String retour = null;if (field.getRawValue().equals("")) {field.setValue(null);} else if (collectionsCombo.getStore().findModel("nom", field.getRawValue()) == null) {String contenuBrut = field.getRawValue();field.setValue(null);field.setRawValue(contenuBrut);retour = "Veuillez sélectionner une valeur ou laisser le champ vide";}return retour;}});collectionsCombo.setTriggerAction(TriggerAction.ALL);collectionsCombo.setStore(new ListStore<Collection>());liaisonFieldSet.add(collectionsCombo, new FormData(450, 0));mediateur.selectionnerCollectionParProjet(this, null);this.add(liaisonFieldSet);}private void creerFieldsetAdministratif() {// Fieldset ADMINISTRATIFFieldSet administratifFieldSet = new FieldSet();administratifFieldSet.setHeading(i18nC.collectionGeneralTitre());administratifFieldSet.setCollapsible(true);administratifFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));typeDepotCombo = new ChampComboBoxListeValeurs(i18nC.typeDepot(), "typeDepot", tabIndex++);administratifFieldSet.add(typeDepotCombo);coteChp = new TextField<String>();coteChp.setTabIndex(tabIndex++);coteChp.setFieldLabel(i18nC.cote());administratifFieldSet.add(coteChp, new FormData(450, 0));idAlternatifsChp = new ChampMultiValeurs(i18nC.idAlternatifCollection());administratifFieldSet.add(idAlternatifsChp);nomsAlternatifsChp = new ChampMultiValeurs(i18nC.intituleAlternatifCollection());administratifFieldSet.add(nomsAlternatifsChp);codesAlternatifsChp = new ChampMultiValeurs(i18nC.codeAlternatifCollection());administratifFieldSet.add(codesAlternatifsChp);this.add(administratifFieldSet);}private void creerFieldsetDescription() {// Fieldset DESCRIPTIONFieldSet descriptionFieldSet = new FieldSet();descriptionFieldSet.setHeading(i18nC.collectionDescriptionTitre());descriptionFieldSet.setCollapsible(true);descriptionFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));descriptionChp = new TextArea();descriptionChp.setFieldLabel(i18nC.description());descriptionFieldSet.add(descriptionChp, new FormData(550, 0));descriptionSpecialisteChp = new TextArea();descriptionSpecialisteChp.setFieldLabel(i18nC.descriptionSpecialiste());descriptionFieldSet.add(descriptionSpecialisteChp, new FormData(550, 0));historiqueChp = new TextArea();historiqueChp.setFieldLabel(i18nC.historique());descriptionFieldSet.add(historiqueChp, new FormData(550, 0));urlsChp = new ChampMultiValeurs(i18nC.urlsCollection());descriptionFieldSet.add(urlsChp);this.add(descriptionFieldSet);}private void creerFieldsetCouverture() {FieldSet couvertureFieldSet = new FieldSet();couvertureFieldSet.setHeading("Couvertures");couvertureFieldSet.setCollapsible(true);couvertureFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));periodeConstitutionChp = new ChampCaseACocher(i18nC.periodeConstitution(), "siecleNaturaliste", false);couvertureFieldSet.add(periodeConstitutionChp);groupementPrincipeCombo = new ChampComboBoxListeValeurs(i18nC.groupementPrincipeCollection(), "groupementPrincipe", tabIndex++);groupementPrincipeCombo.setToolTip(i18nC.groupementPrincipeCollectionInfo());couvertureFieldSet.add(groupementPrincipeCombo);butRealisationCombo = new ChampComboBoxListeValeurs(i18nC.butCollection(), "realisationBut", tabIndex++);couvertureFieldSet.add(butRealisationCombo);lieuCouvertureChp = new ChampMultiValeurs(i18nC.lieuCouvertureCollection());couvertureFieldSet.add(lieuCouvertureChp);this.add(couvertureFieldSet);}private void creerFieldsetType() {FieldSet typeFieldSet = new FieldSet();typeFieldSet.setHeading("Spécimens «types»");typeFieldSet.setCollapsible(true);typeFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));specimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.specimenTypeCollection(), "onpi", tabIndex++);typeFieldSet.add(specimenTypeCombo);ConteneurMultiChamps nbreTypeConteneur = new ConteneurMultiChamps(i18nC.nbreSpecimenTypeCollection());nbreTypeChp = new NumberField();nbreTypeChp.setFormat(NumberFormat.getFormat("#"));nbreTypeConteneur.ajouterChamp(nbreTypeChp, new HBoxLayoutData(new Margins(0, 20, 0, 0)));precisionTypeNbreCombo = new ChampComboBoxListeValeurs(null, "ea");precisionTypeNbreCombo.setTrie("id_valeur");precisionTypeNbreCombo.setEmptyText(i18nC.precisionNbreSpecimenTypeCollectionChpVide());nbreTypeConteneur.ajouterChamp(precisionTypeNbreCombo);typeFieldSet.add(nbreTypeConteneur);classementSpecimenTypeCombo = new ChampComboBoxListeValeurs(i18nC.classementSpecimenTypeCollection(), "typeClassement", tabIndex++);typeFieldSet.add(classementSpecimenTypeCombo);Text infoType = new Text(i18nC.specimenTypeCollectionInfo());typeFieldSet.add(infoType);this.add(typeFieldSet);}public void peupler() {initialiserCollection();if (collection != null) {idCollectionChp.setValue(collection.getId());setValeurComboProjets();setValeurComboStructures();setValeurComboCollections();typeDepotCombo.peupler(collection.getTypeDepot());coteChp.setValue(collection.getCote());idAlternatifsChp.peupler(collection.getIdAlternatif());nomsAlternatifsChp.peupler(collection.getNomAlternatif());codesAlternatifsChp.peupler(collection.getCode());descriptionChp.setValue(collection.getDescription());descriptionSpecialisteChp.setValue(collection.getDescriptionSpecialiste());historiqueChp.setValue(collection.getHistorique());urlsChp.peupler(collection.getUrls());periodeConstitutionChp.peupler(collection.getPeriodeConstitution());groupementPrincipeCombo.peupler(collection.getGroupementPrincipe());butRealisationCombo.peupler(collection.getGroupementBut());lieuCouvertureChp.peupler(collection.getCouvertureLieu());specimenTypeCombo.peupler(collection.getSpecimenType());nbreTypeChp.setValue((collection.getSpecimenTypeNbre().equals("") ? 0 : Integer.parseInt(collection.getSpecimenTypeNbre())));precisionTypeNbreCombo.peupler(collection.getSpecimenTypeNbrePrecision());classementSpecimenTypeCombo.peupler(collection.getSpecimenTypeClassement());}}public ArrayList<String> verifier() {ArrayList<String> messages = new ArrayList<String>();if (projetsCombo.getValue() == null || !projetsCombo.isValid()) {messages.add(i18nM.selectionObligatoire(i18nC.articleUn()+" "+i18nC.projetSingulier(), i18nC.articleLa()+" "+i18nC.collectionSingulier()));}return messages;}public void collecter() {initialiserCollection();if (etreAccede()) {collectionCollectee.setId(idCollectionChp.getValue());collectionCollectee.setIdProjet(getValeurComboProjets());collectionCollectee.setIdStructure(getValeurComboStructures());collectionCollectee.setCollectionMereId(getValeurComboCollections());collectionCollectee.setTypeDepot(typeDepotCombo.getValeur());collectionCollectee.setCote(coteChp.getValue());collectionCollectee.setIdAlternatif(idAlternatifsChp.getValeurs());collectionCollectee.setNomAlternatif(nomsAlternatifsChp.getValeurs());collectionCollectee.setCode(codesAlternatifsChp.getValeurs());collectionCollectee.setDescription(descriptionChp.getValue());collectionCollectee.setDescriptionSpecialiste(descriptionSpecialisteChp.getValue());collectionCollectee.setHistorique(historiqueChp.getValue());collectionCollectee.setUrls(urlsChp.getValeurs());collectionCollectee.setPeriodeConstitution(periodeConstitutionChp.getValeur());collectionCollectee.setGroupementPrincipe(groupementPrincipeCombo.getValeur());collectionCollectee.setGroupementBut(butRealisationCombo.getValeur());collectionCollectee.setCouvertureLieu(lieuCouvertureChp.getValeurs());collectionCollectee.setSpecimenType(specimenTypeCombo.getValeur());if (nbreTypeChp.getValue() != null) {collectionCollectee.setSpecimenTypeNbre(nbreTypeChp.getValue().toString());}collectionCollectee.setSpecimenTypeNbrePrecision(precisionTypeNbreCombo.getValeur());collectionCollectee.setSpecimenTypeClassement(classementSpecimenTypeCombo.getValeur());}}private String getValeurComboProjets() {String valeur = "";if (projetsCombo.getValue() != null) {valeur = projetsCombo.getValue().getId();}return valeur;}private void setValeurComboProjets() {if (projetsCombo.getStore() != null && collection != null) {projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", collection.getIdProjet()));}}private String getValeurComboStructures() {String valeur = "";if (structuresCombo.getValue() != null) {valeur = structuresCombo.getValue().getId();}return valeur;}private void setValeurComboStructures() {if (structuresCombo.getStore() != null && collection != null) {structuresCombo.setValue(structuresCombo.getStore().findModel("id_structure", collection.getIdStructure()));}}private String getValeurComboCollections() {String valeur = "";if (collectionsCombo.getValue() != null) {valeur = collectionsCombo.getValue().getId();}return valeur;}private void setValeurComboCollections() {if (collectionsCombo.getStore() != null && collection != null) {collectionsCombo.setValue(collectionsCombo.getStore().findModel("id_collection", collection.getCollectionMereId()));}}public void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof ProjetListe) {ProjetListe projets = (ProjetListe) nouvellesDonnees;Formulaire.rafraichirComboBox(projets, projetsCombo);setValeurComboProjets();} else if (nouvellesDonnees instanceof StructureListe) {StructureListe structures = (StructureListe) nouvellesDonnees;Formulaire.rafraichirComboBox(structures, structuresCombo);setValeurComboStructures();} else if (nouvellesDonnees instanceof CollectionListe) {CollectionListe collections = (CollectionListe) nouvellesDonnees;Formulaire.rafraichirComboBox(collections, collectionsCombo);setValeurComboCollections();} else if (nouvellesDonnees instanceof ValeurListe) {ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;rafraichirValeurListe(listeValeurs);} else {Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));}}private void rafraichirValeurListe(ValeurListe listeValeurs) {if (listeValeurs.getId().equals(config.getListeId("typeDepot"))) {Formulaire.rafraichirComboBox(listeValeurs, typeDepotCombo);} else {Debug.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!");}}}