Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.structure;import java.util.ArrayList;import java.util.List;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Information;import org.tela_botanica.client.modeles.Valeur;import org.tela_botanica.client.modeles.ValeurListe;import org.tela_botanica.client.modeles.structure.StructureValorisation;import org.tela_botanica.client.synchronisation.Sequenceur;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.ComponentEvent;import com.extjs.gxt.ui.client.event.Events;import com.extjs.gxt.ui.client.event.Listener;import com.extjs.gxt.ui.client.widget.Component;import com.extjs.gxt.ui.client.widget.ContentPanel;import com.extjs.gxt.ui.client.widget.LayoutContainer;import com.extjs.gxt.ui.client.widget.form.CheckBox;import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;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.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.FormData;public class StructureFormValorisation extends FormulaireOnglet implements Rafraichissable {private StructureValorisation valorisation = null;private LayoutContainer autreCollectionTrukCp = null;private TextField<String> typeRechercheAutreChp = null;private CheckBoxGroup autreCollectionTrukCacGrpChp = null;private LayoutContainer provenanceRechercheTrukCp = null;private CheckBoxGroup provenanceRechercheTrukCacGrpChp = null;private CheckBoxGroup typeRechercheTrukCacGrpChp = null;private LayoutContainer typeRechercheTrukCp = null;private TextField<String> futureActionChp = null;private TextField<String> sansMotifAccesChp = null;private TextField<String> avecMotifAccesChp = null;private TextField<String> autreCollectionAutreChp = null;private TextField<String> actionAutreChp = null;private TextField<String> provenanceRechercheAutreChp = null;private RadioGroup actionMarkRGrpChp = null;private LayoutContainer actionTrukCp = null;private CheckBoxGroup actionTrukCacGrpChp = null;private RadioGroup futureActionMarkRGrpChp = null;private RadioGroup rechercheMarkRGrpChp = null;private RadioGroup sansMotifAccesMarkRGrpChp = null;private RadioGroup avecMotifAccesMarkRGrpChp = null;private TextField<String> publicationChp = null;private String ID = "valorisation";private Mediateur mediateur = null;private Formulaire formulaireCourant = null;private Sequenceur sequenceur = null;public StructureFormValorisation(Mediateur mediateur, Formulaire formulaireCourant, Sequenceur sequenceur) {this.mediateur = mediateur;this.formulaireCourant = formulaireCourant;this.sequenceur = sequenceur;initialiserOnglet(formulaireCourant);setId(ID);setText(Mediateur.i18nC.structureInfoValorisation());FormulaireOnglet.parametrer(this);this.setLayout(Formulaire.creerFormLayout(650, LabelAlign.TOP));Listener<ComponentEvent> ecouteurSelection = new Listener<ComponentEvent>() {public void handleEvent(ComponentEvent be) {peupler();layout();}};this.addListener(Events.Select, ecouteurSelection);actionMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("action_mark", "ouiNon");actionMarkRGrpChp.setFieldLabel("Avez-vous réalisé des actions de valorisation de vos collections botaniques ou avez-vous été sollicités pour la valorisation de ces collections ?");this.add(actionMarkRGrpChp);actionTrukCp = Formulaire.creerChoixMultipleCp();actionTrukCp.hide();actionTrukCacGrpChp = new CheckBoxGroup();actionTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");this.add(actionTrukCp);mediateur.obtenirListeValeurEtRafraichir(this, "actionValorisation", sequenceur);mediateur.obtenirListeValeurEtRafraichir(this, "statut", sequenceur);publicationChp = new TextArea();publicationChp.setFieldLabel("Quelques titres des ouvrages, articles scientifiques, ...");this.add(publicationChp, new FormData(550, 0));autreCollectionTrukCp = Formulaire.creerChoixMultipleCp();autreCollectionTrukCacGrpChp = new CheckBoxGroup();autreCollectionTrukCacGrpChp.setFieldLabel("L'organisme dispose-t-il d'autres collections (permettant une valorisation pluridisciplinaire) ?");this.add(autreCollectionTrukCp);mediateur.obtenirListeValeurEtRafraichir(this, "autreCollection", sequenceur);futureActionMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("future_action_mark", "ouiNon");futureActionMarkRGrpChp.setFieldLabel("Envisagez vous des actions de valorisation dans le cadre de votre politique culturelle ?");this.add(futureActionMarkRGrpChp);futureActionChp = new TextArea();futureActionChp.setFieldLabel("Si oui, lesquelles ?");futureActionChp.hide();futureActionChp.addListener(Events.Hide, new Listener<BaseEvent>() {public void handleEvent(BaseEvent be) {((TextArea) be.getSource()).setValue("");}});this.add(futureActionChp, new FormData(550, 0));rechercheMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("recherche_mark", "ouiNon");rechercheMarkRGrpChp.setFieldLabel("Vos collections botaniques sont-elles utilisées pour des recherches scientifiques ?");this.add(rechercheMarkRGrpChp);provenanceRechercheTrukCp = Formulaire.creerChoixMultipleCp();provenanceRechercheTrukCp.hide();provenanceRechercheTrukCacGrpChp = new CheckBoxGroup();provenanceRechercheTrukCacGrpChp.setFieldLabel("Si oui, par des chercheurs (professionnels ou amateurs) de quelle provenance ?");this.add(provenanceRechercheTrukCp);mediateur.obtenirListeValeurEtRafraichir(this, "continentEtFr", sequenceur);typeRechercheTrukCp = Formulaire.creerChoixMultipleCp();typeRechercheTrukCp.hide();typeRechercheTrukCacGrpChp = new CheckBoxGroup();typeRechercheTrukCacGrpChp.setFieldLabel("Et pour quelles recherches ?");this.add(typeRechercheTrukCp);mediateur.obtenirListeValeurEtRafraichir(this, "typeRecherche", sequenceur);sansMotifAccesMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("sans_motif_acces_mark", "ouiNon");sansMotifAccesMarkRGrpChp.setFieldLabel("Peut-on consulter vos collections botaniques sans motif de recherches scientifiques ?");this.add(sansMotifAccesMarkRGrpChp);this.add(sansMotifAccesChp = new TextArea(), new FormData(550, 0));sansMotifAccesChp.hide();sansMotifAccesChp.addListener(Events.Hide, new Listener<BaseEvent>() {public void handleEvent(BaseEvent be) {((TextArea) be.getSource()).setValue("");}});sansMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les consulter ?");avecMotifAccesMarkRGrpChp = formulaireCourant.creerChoixUniqueRadioGroupe("avec_motif_acces_mark", "ouiNon");avecMotifAccesMarkRGrpChp.setFieldLabel("Peut-on visiter vos collections botaniques avec des objectifs de recherches scientifiques ?");this.add(avecMotifAccesMarkRGrpChp);this.add(avecMotifAccesChp = new TextArea(), new FormData(550, 0));avecMotifAccesChp.hide();avecMotifAccesChp.addListener(Events.Hide, new Listener<BaseEvent>() {public void handleEvent(BaseEvent be) {((TextArea) be.getSource()).setValue("");}});avecMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les visiter ?");}public void peupler() {if(valorisation == null) {initialiserValorisation();}if (formulaireCourant.mode.equals(Formulaire.MODE_AJOUTER)) {// Indique que l'onglet a pu être modifié pour la méthode collecter...setData("acces", true);// Initialisation de l'objet Structurevalorisation = new StructureValorisation();}if (formulaireCourant.mode.equals(Formulaire.MODE_MODIFIER) && valorisation != null) {// ACTION ://TODO : check below:((Radio) actionMarkRGrpChp.get((valorisation.getAction().equals("1") ? 0 : 1))).setValue(true);// ACTION INFOpeuplerCasesACocher(valorisation.getActionInfo(), actionTrukCacGrpChp, actionAutreChp);// PUBLICATIONpublicationChp.setValue(valorisation.getPublication());// COLLECTION AUTREpeuplerCasesACocher(valorisation.getCollectionAutre(), autreCollectionTrukCacGrpChp, autreCollectionAutreChp);// ACTION FUTURE((Radio) futureActionMarkRGrpChp.get((valorisation.getActionFuture().equals("1") ? 0 : 1))).setValue(true);// ACTION FUTURE INFOfutureActionChp.setValue(valorisation.getActionFutureInfo());// RECHERCHE((Radio) rechercheMarkRGrpChp.get((valorisation.getRecherche().equals("1") ? 0 : 1))).setValue(true);// RECHERCHE PROVENANCEpeuplerCasesACocher(valorisation.getRechercheProvenance(), provenanceRechercheTrukCacGrpChp, provenanceRechercheAutreChp);// RECHERCHE TYPEpeuplerCasesACocher(valorisation.getRechercheType(), typeRechercheTrukCacGrpChp, typeRechercheAutreChp);// ACCÈS SANS MOTIF((Radio) sansMotifAccesMarkRGrpChp.get((valorisation.getAccesSansMotif().equals("1") ? 0 : 1))).setValue(true);// ACCÈS SANS MOTIF INFOsansMotifAccesChp.setValue(valorisation.getAccesSansMotifInfo());// VISITE AVEC MOTIF((Radio) avecMotifAccesMarkRGrpChp.get((valorisation.getVisiteAvecMotif().equals("1") ? 0 : 1))).setValue(true);// VISITE AVEC MOTIF INFOavecMotifAccesChp.setValue(valorisation.getVisiteAvecMotifInfo());// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter...this.setData("acces", true);}}private String creerChaineDenormalisee(List<CheckBox> liste) {return ((StructureForm)formulaireCourant).creerChaineDenormalisee(liste);}private void peuplerCasesACocher(String donnees, CheckBoxGroup groupeCac, TextField<String> champAutre) {((StructureForm)formulaireCourant).peuplerCasesACocher(donnees, groupeCac, champAutre);}private void initialiserValorisation() {valorisation = ((StructureForm)formulaireCourant).valorisation;}public StructureValorisation collecter() {if(valorisation == null) {initialiserValorisation();}StructureValorisation valorisationARetourner = null;if (getData("acces").equals(true)) {// Création de l'objetStructureValorisation valorisationCollectee = (StructureValorisation) valorisation.cloner(new StructureValorisation());// ACTIONif (actionMarkRGrpChp.getValue() != null) {valorisationCollectee.setAction(actionMarkRGrpChp.getValue().getValueAttribute());}// ACTION INFOvalorisationCollectee.setActionInfo(creerChaineDenormalisee(actionTrukCacGrpChp.getValues()));valorisationCollectee.setActionInfo("AUTRE", actionAutreChp.getValue());// PUBLICATIONvalorisationCollectee.setPublication(publicationChp.getValue());// COLLECTION AUTREvalorisationCollectee.setCollectionAutre(creerChaineDenormalisee(autreCollectionTrukCacGrpChp.getValues()));valorisationCollectee.setCollectionAutre("AUTRE", autreCollectionAutreChp.getValue());// ACTION FUTUREif (futureActionMarkRGrpChp.getValue() != null) {valorisationCollectee.setActionFuture(futureActionMarkRGrpChp.getValue().getValueAttribute());}// ACTION FUTURE INFOvalorisationCollectee.setActionFutureInfo(futureActionChp.getValue());// RECHERCHEif (rechercheMarkRGrpChp.getValue() != null) {valorisationCollectee.setRecherche(rechercheMarkRGrpChp.getValue().getValueAttribute());// RECHERCHE PROVENANCEvalorisationCollectee.setRechercheProvenance(creerChaineDenormalisee(provenanceRechercheTrukCacGrpChp.getValues()));valorisationCollectee.setRechercheProvenance("AUTRE", provenanceRechercheAutreChp.getValue());// RECHERCHE TYPEvalorisationCollectee.setRechercheType(creerChaineDenormalisee(typeRechercheTrukCacGrpChp.getValues()));valorisationCollectee.setRechercheType("AUTRE", typeRechercheAutreChp.getValue());}// ACCÈS SANS MOTIFif (sansMotifAccesMarkRGrpChp.getValue() != null) {valorisationCollectee.setAccesSansMotif(sansMotifAccesMarkRGrpChp.getValue().getValueAttribute());}// ACCÈS SANS MOTIF INFOvalorisationCollectee.setAccesSansMotifInfo(sansMotifAccesChp.getValue());// VISITE AVEC MOTIFif (avecMotifAccesMarkRGrpChp.getValue() != null) {valorisationCollectee.setVisiteAvecMotif(avecMotifAccesMarkRGrpChp.getValue().getValueAttribute());}// VISITE AVEC MOTIF INFOvalorisationCollectee.setVisiteAvecMotifInfo(avecMotifAccesChp.getValue());// Retour de l'objetif (!valorisationCollectee.comparer(valorisation)) {valorisationARetourner = valorisation = valorisationCollectee;}}return valorisationARetourner;}@Overridepublic void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof ValeurListe) {ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;rafraichirValeurListe(listeValeurs);} else if (nouvellesDonnees instanceof Information) {Information info = (Information) nouvellesDonnees;rafraichirInformation(info);}}public void rafraichirInformation(Information info) {if (info.getDonnee(2) != null) {valorisation = (StructureValorisation) info.getDonnee(2);if (valorisation != null) {peupler();}}}private void rafraichirValeurListe(ValeurListe listeValeurs) {List<Valeur> liste = listeValeurs.toList();if (listeValeurs.getId().equals(config.getListeId("autreCollection"))) {if (autreCollectionTrukCp != null && autreCollectionTrukCp.getItemByItemId("autreCollectionTrukCacGrpChp") == null) {autreCollectionTrukCacGrpChp.setId("autreCollectionTrukCacGrpChp");autreCollectionAutreChp = new TextField<String>();Formulaire.creerChoixMultipleCac(autreCollectionTrukCp, autreCollectionTrukCacGrpChp, listeValeurs, autreCollectionAutreChp);}}if (listeValeurs.getId().equals(config.getListeId("actionValorisation"))) {actionAutreChp = new TextField<String>();Formulaire.creerChoixMultipleCac(actionTrukCp, actionTrukCacGrpChp, listeValeurs, actionAutreChp);}if (listeValeurs.getId().equals(config.getListeId("continentEtFr"))) {provenanceRechercheAutreChp = new TextField<String>();Formulaire.creerChoixMultipleCac(provenanceRechercheTrukCp, provenanceRechercheTrukCacGrpChp, listeValeurs, provenanceRechercheAutreChp);}if (listeValeurs.getId().equals(config.getListeId("typeRecherche"))) {typeRechercheAutreChp = new TextField<String>();Formulaire.creerChoixMultipleCac(typeRechercheTrukCp, typeRechercheTrukCacGrpChp, listeValeurs, typeRechercheAutreChp);}}public void afficherChampSupplementaire(Radio radioBtn) {//GWT.log("Nom btn : "+radioBtn.getName()+" - Nom group : "+radioBtn.getGroup().getName(), null);// Valeur du bouton radio déclenchant l'affichage des composants cachésString valeurPourAfficher = "oui";// Construction de la liste des composants à afficher/cacherString radioGroupeNom = radioBtn.getGroup().getName();ArrayList<Object> composants = new ArrayList<Object>();if (radioGroupeNom.equals("action_mark_grp")) {composants.add(actionTrukCp);} else if (radioGroupeNom.equals("future_action_mark_grp")) {composants.add(futureActionChp);} else if (radioGroupeNom.equals("sans_motif_acces_mark_grp")) {composants.add(sansMotifAccesChp);} else if (radioGroupeNom.equals("avec_motif_acces_mark_grp")) {composants.add(avecMotifAccesChp);} else if (radioGroupeNom.equals("recherche_mark_grp")) {composants.add(provenanceRechercheTrukCp);composants.add(typeRechercheTrukCp);}// Nous affichons/cachons les composant de la listefinal int nbreComposants = composants.size();//GWT.log("Id : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax, null);//Window.alert("Radio grp nom : "+radioGroupeNom+" - Id btn : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax);for (int i = 0; i < nbreComposants; i++) {// En fonction du type de bouton cliquer, on affiche ou cache les champsString type = radioBtn.getBoxLabel().toLowerCase();//GWT.log(type, null);if (radioBtn.getValue() == true) {if (type.equals(valeurPourAfficher)) {((Component) composants.get(i)).show();} else {((Component) composants.get(i)).hide();}}// Si on a à faire à un ContentPanel, on l'actualise pour déclencher l'affichageif (composants.get(i) instanceof ContentPanel) {((ContentPanel) composants.get(i)).layout();}}}}