Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
480 benjamin 1
package org.tela_botanica.del.client.vues.rechercheobservations.resultats.observations;
166 gduche 2
 
3
import java.util.List;
4
 
332 gduche 5
import org.tela_botanica.del.client.cache.CacheClient;
447 gduche 6
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
7
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue;
480 benjamin 8
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur;
9
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue;
166 gduche 10
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
332 gduche 11
import org.tela_botanica.del.client.modeles.Image;
552 benjamin 12
import org.tela_botanica.del.client.modeles.ModeRecherche;
166 gduche 13
import org.tela_botanica.del.client.modeles.Observation;
602 aurelien 14
import org.tela_botanica.del.client.modeles.PropositionDetermination;
332 gduche 15
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
602 aurelien 16
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
17
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
18
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlayDefilantePresenteur;
19
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlayDefilanteVue;
20
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlaySimplePresenteur;
21
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur;
22
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue;
480 benjamin 23
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.observationdeterminations.ObservationDeterminationPresenteur;
24
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.observationdeterminations.ObservationDeterminationVue;
166 gduche 25
 
200 gduche 26
import com.google.gwt.event.dom.client.ClickEvent;
27
import com.google.gwt.event.dom.client.ClickHandler;
309 aurelien 28
import com.google.gwt.event.dom.client.HasClickHandlers;
166 gduche 29
import com.google.gwt.user.client.ui.HasWidgets;
309 aurelien 30
import com.google.gwt.user.client.ui.IsWidget;
166 gduche 31
 
32
public class ObservationPresenteur extends Presenteur {
436 benjamin 33
 
602 aurelien 34
	public interface Vue extends IsWidget {
35
		public HasClickHandlers getBoutonAjoutProposition();
436 benjamin 36
		public HasWidgets getDeterminationsPanel();
602 aurelien 37
		public HasWidgets getImagesPanel();
447 gduche 38
		public HasWidgets getMetadonneesPanel();
309 aurelien 39
	}
436 benjamin 40
 
309 aurelien 41
	private Vue vue;
166 gduche 42
 
43
	private Observation observation;
602 aurelien 44
 
45
	private ObservationDeterminationPresenteur observationDeterminationPresenteur;
166 gduche 46
 
309 aurelien 47
	public ObservationPresenteur(Vue vue, Observation observation) {
166 gduche 48
		this.observation = observation;
314 gduche 49
		this.vue = vue;
166 gduche 50
		chargerObservation();
51
	}
52
 
53
	public void chargerObservation() {
436 benjamin 54
		new ObservationImagesPresenteur(new ObservationImagesVue(), observation).go(vue.getImagesPanel());
552 benjamin 55
		new MetadonneesPresenteur(new MetadonneesVue(), observation, ModeRecherche.MODE_OBSERVATION).go(vue.getMetadonneesPanel());
602 aurelien 56
		observationDeterminationPresenteur = new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionsDetermination());
57
		observationDeterminationPresenteur.go(vue.getDeterminationsPanel());
166 gduche 58
 
436 benjamin 59
		gererEvenements();
166 gduche 60
	}
61
 
62
	public void go(HasWidgets composite) {
309 aurelien 63
		composite.add(vue.asWidget());
166 gduche 64
	}
65
 
220 gduche 66
	protected void gererEvenements() {
602 aurelien 67
 
68
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
69
			@Override
70
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
71
				if (fenetreModaleEstOuverte()) {
72
					fermerFenetreModale();
73
					ajouterPropositionDetermination(event.getPropositionDetermination());
74
				}
75
			}
76
		});
436 benjamin 77
 
602 aurelien 78
		vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() {
79
			@Override
332 gduche 80
			public void onClick(ClickEvent event) {
81
				List<Image> images = observation.getImages();
82
				if (images.size() > 0) {
83
					CacheClient.getInstance().setImageCourante(images.get(0));
84
				} else {
85
					CacheClient.getInstance().setImageCourante(null);
86
				}
602 aurelien 87
				CacheClient.getInstance().setObservationCourante(observation);
88
				FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
89
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue()));
332 gduche 90
			}
91
		});
166 gduche 92
	}
602 aurelien 93
 
94
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
95
		observationDeterminationPresenteur.setPropositions(observation.getPropositionsDetermination());
96
	}
166 gduche 97
}