New file |
0,0 → 1,401 |
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 Structure |
valorisation = new StructureValorisation(); |
} |
if (formulaireCourant.mode.equals(Formulaire.MODE_MODIFIER) && valorisation != null) { |
// ACTION : |
//TODO : check below: |
if(valorisation.getAction() != null) { |
((Radio) actionMarkRGrpChp.get(valorisation.getAction() ^ 1)).setValue(true); |
} |
|
// ACTION INFO |
peuplerCasesACocher(valorisation.getActionInfo(), actionTrukCacGrpChp, actionAutreChp); |
|
// PUBLICATION |
publicationChp.setValue(valorisation.getPublication()); |
|
// COLLECTION AUTRE |
peuplerCasesACocher(valorisation.getCollectionAutre(), autreCollectionTrukCacGrpChp, autreCollectionAutreChp); |
|
// ACTION FUTURE |
if(valorisation.getActionFuture() != null) { |
((Radio) futureActionMarkRGrpChp.get(valorisation.getActionFuture() ^ 1)).setValue(true); |
} |
|
// ACTION FUTURE INFO |
futureActionChp.setValue(valorisation.getActionFutureInfo()); |
|
// RECHERCHE |
if(valorisation.getRecherche() != null) { |
((Radio) rechercheMarkRGrpChp.get(valorisation.getRecherche() ^ 1)).setValue(true); |
} |
// RECHERCHE PROVENANCE |
peuplerCasesACocher(valorisation.getRechercheProvenance(), provenanceRechercheTrukCacGrpChp, provenanceRechercheAutreChp); |
// RECHERCHE TYPE |
peuplerCasesACocher(valorisation.getRechercheType(), typeRechercheTrukCacGrpChp, typeRechercheAutreChp); |
|
// ACCÈS SANS MOTIF |
if(valorisation.getAccesSansMotif() != null) { |
((Radio) sansMotifAccesMarkRGrpChp.get(valorisation.getAccesSansMotif() ^ 1)).setValue(true); |
} |
// ACCÈS SANS MOTIF INFO |
sansMotifAccesChp.setValue(valorisation.getAccesSansMotifInfo()); |
|
// VISITE AVEC MOTIF |
if(valorisation.getVisiteAvecMotif() != null) { |
((Radio) avecMotifAccesMarkRGrpChp.get(valorisation.getVisiteAvecMotif() ^ 1)).setValue(true); |
} |
// VISITE AVEC MOTIF INFO |
avecMotifAccesChp.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'objet |
StructureValorisation valorisationCollectee = (StructureValorisation) valorisation.cloner(new StructureValorisation()); |
|
// ACTION |
if (actionMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setAction(actionMarkRGrpChp.getValue().getValueAttribute()); |
} |
|
// ACTION INFO |
valorisationCollectee.setActionInfo(creerChaineDenormalisee(actionTrukCacGrpChp.getValues())); |
valorisationCollectee.setActionInfo("AUTRE", actionAutreChp.getValue()); |
|
// PUBLICATION |
valorisationCollectee.setPublication(publicationChp.getValue()); |
|
// COLLECTION AUTRE |
valorisationCollectee.setCollectionAutre(creerChaineDenormalisee(autreCollectionTrukCacGrpChp.getValues())); |
valorisationCollectee.setCollectionAutre("AUTRE", autreCollectionAutreChp.getValue()); |
|
// ACTION FUTURE |
if (futureActionMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setActionFuture(futureActionMarkRGrpChp.getValue().getValueAttribute()); |
} |
// ACTION FUTURE INFO |
valorisationCollectee.setActionFutureInfo(futureActionChp.getValue()); |
|
// RECHERCHE |
if (rechercheMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setRecherche(rechercheMarkRGrpChp.getValue().getValueAttribute()); |
|
// RECHERCHE PROVENANCE |
valorisationCollectee.setRechercheProvenance(creerChaineDenormalisee(provenanceRechercheTrukCacGrpChp.getValues())); |
valorisationCollectee.setRechercheProvenance("AUTRE", provenanceRechercheAutreChp.getValue()); |
|
// RECHERCHE TYPE |
valorisationCollectee.setRechercheType(creerChaineDenormalisee(typeRechercheTrukCacGrpChp.getValues())); |
valorisationCollectee.setRechercheType("AUTRE", typeRechercheAutreChp.getValue()); |
} |
|
// ACCÈS SANS MOTIF |
if (sansMotifAccesMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setAccesSansMotif(sansMotifAccesMarkRGrpChp.getValue().getValueAttribute()); |
} |
// ACCÈS SANS MOTIF INFO |
valorisationCollectee.setAccesSansMotifInfo(sansMotifAccesChp.getValue()); |
|
// VISITE AVEC MOTIF |
if (avecMotifAccesMarkRGrpChp.getValue() != null) { |
valorisationCollectee.setVisiteAvecMotif(avecMotifAccesMarkRGrpChp.getValue().getValueAttribute()); |
} |
// VISITE AVEC MOTIF INFO |
valorisationCollectee.setVisiteAvecMotifInfo(avecMotifAccesChp.getValue()); |
|
// Retour de l'objet |
if (!valorisationCollectee.comparer(valorisation)) { |
valorisationARetourner = valorisation = valorisationCollectee; |
} |
} |
return valorisationARetourner; |
} |
|
@Override |
public 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és |
String valeurPourAfficher = "oui"; |
|
// Construction de la liste des composants à afficher/cacher |
String 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 liste |
final 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 champs |
String 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'affichage |
if (composants.get(i) instanceof ContentPanel) { |
((ContentPanel) composants.get(i)).layout(); |
} |
} |
} |
} |