Subversion Repositories eFlore/Applications.del

Rev

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