Subversion Repositories eFlore/Applications.del

Rev

Rev 354 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
46 aurelien 1
package org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition;
2
 
95 aurelien 3
import java.util.Date;
46 aurelien 4
 
85 benjamin 5
import org.tela_botanica.del.client.cache.CacheClient;
262 aurelien 6
import org.tela_botanica.del.client.composants.formulaires.AutoCompletionComboBoxPresenteur;
321 aurelien 7
 
262 aurelien 8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
228 aurelien 9
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
140 aurelien 10
import org.tela_botanica.del.client.modeles.Commentaire;
11
import org.tela_botanica.del.client.modeles.PropositionDetermination;
159 benjamin 12
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
13
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
388 aurelien 14
import org.tela_botanica.del.client.services.UtilitairesAutoCompletionService;
46 aurelien 15
 
77 aurelien 16
import com.google.gwt.event.dom.client.ClickEvent;
17
import com.google.gwt.event.dom.client.ClickHandler;
303 aurelien 18
import com.google.gwt.event.dom.client.HasClickHandlers;
268 aurelien 19
import com.google.gwt.http.client.Response;
20
import com.google.gwt.json.client.JSONArray;
21
import com.google.gwt.json.client.JSONParser;
22
import com.google.gwt.json.client.JSONValue;
303 aurelien 23
import com.google.gwt.user.client.ui.HasText;
46 aurelien 24
import com.google.gwt.user.client.ui.HasWidgets;
303 aurelien 25
import com.google.gwt.user.client.ui.IsWidget;
46 aurelien 26
 
262 aurelien 27
public class FormulairePropositionPresenteur extends Presenteur {
28
 
303 aurelien 29
	public interface Vue extends IsWidget {
30
		public abstract HasText getNomPrenom();
31
		public abstract HasWidgets getPropositionTaxon();
32
		public abstract HasText getCommentaires();
33
		public abstract HasClickHandlers getBoutonValidationProposition();
34
		public abstract void afficherStyleErreur(String styleErreur);
35
		public abstract void supprimerStyleErreur(String styleErreur);
36
	}
37
	private Vue vue;
38
 
268 aurelien 39
	private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
388 aurelien 40
 
303 aurelien 41
	public FormulairePropositionPresenteur(Vue vue) {
42
		this.vue = vue;
268 aurelien 43
 
388 aurelien 44
		autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(UtilitairesAutoCompletionService.urlServiceCompletionNomLocale) {
321 aurelien 45
 
46
			protected String effectuerPreTraitementChaineRequete(String requete) {
388 aurelien 47
				return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
321 aurelien 48
			}
49
 
50
			@Override
268 aurelien 51
			protected String[] parserResultatRequete(Response response) {
388 aurelien 52
				return UtilitairesAutoCompletionService.parserRetourSimple(response);
268 aurelien 53
			}
54
		};
262 aurelien 55
	}
85 benjamin 56
 
46 aurelien 57
	public void go(HasWidgets composite) {
85 benjamin 58
 
303 aurelien 59
		autoCompletionNomTaxonsPresenteur.go(vue.getPropositionTaxon());
60
		composite.add(vue.asWidget());
95 aurelien 61
		gererEvenements();
46 aurelien 62
	}
85 benjamin 63
 
262 aurelien 64
	protected void gererEvenements() {
303 aurelien 65
		vue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
77 aurelien 66
 
67
			@Override
68
			public void onClick(ClickEvent event) {
234 gduche 69
 
70
				if (!validerSaisieProposition()) {
105 aurelien 71
					return;
77 aurelien 72
				} else {
140 aurelien 73
					PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
234 gduche 74
					CacheClient.getInstance().getObservationCourante().addImageCelValidationData(propositionAjoutee);
75
 
76
					EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
159 benjamin 77
					BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
77 aurelien 78
				}
85 benjamin 79
			}
77 aurelien 80
		});
81
	}
234 gduche 82
 
105 aurelien 83
	private boolean validerSaisieProposition() {
234 gduche 84
 
303 aurelien 85
		ValidateurChampTexteNonNul validateurTaxon = new ValidateurChampTexteNonNul(vue.getNomPrenom()) {
86
			@Override
87
			public void afficherStyleErreur(String styleErreur) {
88
				vue.afficherStyleErreur(styleErreur);
89
			}
90
 
91
			@Override
92
			public void supprimerStyleErreur(String styleErreur) {
93
				vue.supprimerStyleErreur(styleErreur);
94
			}
95
		};
228 aurelien 96
		boolean taxonSaisi = validateurTaxon.valider();
234 gduche 97
 
140 aurelien 98
		return taxonSaisi;
105 aurelien 99
	}
234 gduche 100
 
140 aurelien 101
	private PropositionDetermination collecterValeursSaisieProposition() {
234 gduche 102
 
140 aurelien 103
		PropositionDetermination propositionAjoutee = new PropositionDetermination();
148 benjamin 104
		propositionAjoutee.setId(CacheClient.getInstance().getImageCourante().getIdImage());
234 gduche 105
 
303 aurelien 106
		String auteur = vue.getNomPrenom().getText();
107
		if (vue.getCommentaires().getText() != "") {
108
			String contenuCommentaire = vue.getCommentaires().getText();
234 gduche 109
			Commentaire comm = new Commentaire(auteur, new Date(), contenuCommentaire);
140 aurelien 110
			propositionAjoutee.ajouterCommentaire(comm);
111
		}
112
		propositionAjoutee.setContributeur(auteur);
105 aurelien 113
		propositionAjoutee.setDate(new Date());
234 gduche 114
 
268 aurelien 115
		propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
234 gduche 116
 
105 aurelien 117
		return propositionAjoutee;
118
	}
46 aurelien 119
}