Subversion Repositories eFlore/Applications.del

Rev

Rev 1006 | 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;
606 aurelien 18
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
613 gduche 19
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
20
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
602 aurelien 21
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur;
22
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue;
959 benjamin 23
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
480 benjamin 24
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.observationdeterminations.ObservationDeterminationPresenteur;
25
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.observationdeterminations.ObservationDeterminationVue;
166 gduche 26
 
200 gduche 27
import com.google.gwt.event.dom.client.ClickEvent;
28
import com.google.gwt.event.dom.client.ClickHandler;
309 aurelien 29
import com.google.gwt.event.dom.client.HasClickHandlers;
166 gduche 30
import com.google.gwt.user.client.ui.HasWidgets;
309 aurelien 31
import com.google.gwt.user.client.ui.IsWidget;
166 gduche 32
 
33
public class ObservationPresenteur extends Presenteur {
436 benjamin 34
 
602 aurelien 35
	public interface Vue extends IsWidget {
36
		public HasClickHandlers getBoutonAjoutProposition();
959 benjamin 37
 
436 benjamin 38
		public HasWidgets getDeterminationsPanel();
959 benjamin 39
 
40
		public HasWidgets getImagesPanel();
41
 
447 gduche 42
		public HasWidgets getMetadonneesPanel();
1026 gduche 43
 
44
		public HasClickHandlers getNomEspece();
959 benjamin 45
 
1026 gduche 46
		public void setNomEspece(String nomEspece);
309 aurelien 47
	}
436 benjamin 48
 
309 aurelien 49
	private Vue vue;
166 gduche 50
 
51
	private Observation observation;
1006 benjamin 52
 
53
	private Image imagePrincipale;
959 benjamin 54
 
602 aurelien 55
	private ObservationDeterminationPresenteur observationDeterminationPresenteur;
959 benjamin 56
 
616 aurelien 57
	private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
166 gduche 58
 
1006 benjamin 59
	public ObservationPresenteur(Vue vue, Observation observation, Image imagePrincipale) {
166 gduche 60
		this.observation = observation;
314 gduche 61
		this.vue = vue;
1006 benjamin 62
		this.imagePrincipale=imagePrincipale;
166 gduche 63
		chargerObservation();
64
	}
65
 
66
	public void chargerObservation() {
1006 benjamin 67
		new ObservationImagesPresenteur(new ObservationImagesVue(), observation, imagePrincipale).go(vue.getImagesPanel());
552 benjamin 68
		new MetadonneesPresenteur(new MetadonneesVue(), observation, ModeRecherche.MODE_OBSERVATION).go(vue.getMetadonneesPanel());
658 benjamin 69
		observationDeterminationPresenteur = new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionDeterminations());
602 aurelien 70
		observationDeterminationPresenteur.go(vue.getDeterminationsPanel());
1026 gduche 71
		vue.setNomEspece(observation.getNomRetenu());
436 benjamin 72
		gererEvenements();
166 gduche 73
	}
74
 
75
	public void go(HasWidgets composite) {
309 aurelien 76
		composite.add(vue.asWidget());
166 gduche 77
	}
78
 
220 gduche 79
	protected void gererEvenements() {
959 benjamin 80
 
602 aurelien 81
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
82
			@Override
83
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
618 aurelien 84
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
616 aurelien 85
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
602 aurelien 86
					ajouterPropositionDetermination(event.getPropositionDetermination());
87
				}
88
			}
89
		});
959 benjamin 90
 
602 aurelien 91
		vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() {
92
			@Override
332 gduche 93
			public void onClick(ClickEvent event) {
94
				List<Image> images = observation.getImages();
95
				if (images.size() > 0) {
96
					CacheClient.getInstance().setImageCourante(images.get(0));
97
				} else {
98
					CacheClient.getInstance().setImageCourante(null);
99
				}
602 aurelien 100
				CacheClient.getInstance().setObservationCourante(observation);
616 aurelien 101
				fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
959 benjamin 102
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret()));
332 gduche 103
			}
104
		});
1026 gduche 105
 
106
		vue.getNomEspece().addClickHandler(new ClickHandler() {
107
			@Override
108
			public void onClick(ClickEvent event) {
109
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
110
			}
111
		});
166 gduche 112
	}
959 benjamin 113
 
602 aurelien 114
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
658 benjamin 115
		observationDeterminationPresenteur.setPropositions(observation.getPropositionDeterminations());
602 aurelien 116
	}
166 gduche 117
}