Subversion Repositories eFlore/Applications.del

Rev

Rev 1503 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1196 gduche 1
package org.tela_botanica.del.client.vues.identiplante.resultats.observations;
2
 
3
import java.util.List;
4
 
5
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
7
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue;
8
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur;
9
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue;
10
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
11
import org.tela_botanica.del.client.modeles.Image;
12
import org.tela_botanica.del.client.modeles.ModeRecherche;
13
import org.tela_botanica.del.client.modeles.Observation;
14
import org.tela_botanica.del.client.modeles.PropositionDetermination;
15
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
16
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
17
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
18
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
19
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
20
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
21
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
22
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
23
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
24
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
25
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur;
26
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue;
27
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
28
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
29
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
30
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationPresenteur;
31
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationVue;
32
 
33
import com.google.gwt.event.dom.client.ClickEvent;
34
import com.google.gwt.event.dom.client.ClickHandler;
35
import com.google.gwt.event.dom.client.HasClickHandlers;
36
import com.google.gwt.user.client.ui.HasWidgets;
37
import com.google.gwt.user.client.ui.IsWidget;
38
 
39
public class ObservationPresenteur extends Presenteur {
40
 
41
	public interface Vue extends IsWidget {
42
		public HasClickHandlers getBoutonAjoutProposition();
43
 
44
		public HasWidgets getDeterminationsPanel();
45
 
46
		public HasWidgets getImagesPanel();
47
 
48
		public HasWidgets getMetadonneesPanel();
49
 
50
		public HasClickHandlers getNomEspece();
51
 
52
		public void setNomEspece(String nomEspece);
53
 
54
		public HasClickHandlers getBoutonAjoutCommentaire();
55
		public HasClickHandlers getBoutonPlusDeDetails();
56
	}
57
 
58
	private Vue vue;
59
 
60
	private Observation observation;
61
 
62
	private Image imagePrincipale;
63
 
64
	private ObservationDeterminationPresenteur observationDeterminationPresenteur;
65
 
66
	private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
67
 
68
	public ObservationPresenteur(Vue vue, Observation observation, Image imagePrincipale) {
69
		this.observation = observation;
70
		this.vue = vue;
71
		this.imagePrincipale=imagePrincipale;
72
		chargerObservation();
73
	}
74
 
75
	public void chargerObservation() {
76
		new ObservationImagesPresenteur(new ObservationImagesVue(), observation, imagePrincipale, ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS).go(vue.getImagesPanel());
77
		new MetadonneesPresenteur(new MetadonneesVue(), observation, ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonneesPanel());
78
		observationDeterminationPresenteur = new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionDeterminations());
79
		observationDeterminationPresenteur.go(vue.getDeterminationsPanel());
80
		vue.setNomEspece(observation.getNomRetenu());
81
		gererEvenements();
82
	}
83
 
84
	public void go(HasWidgets composite) {
85
		composite.add(vue.asWidget());
86
	}
87
 
88
	protected void gererEvenements() {
89
 
90
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
91
			@Override
92
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
93
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
94
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
95
					ajouterPropositionDetermination(event.getPropositionDetermination());
96
				}
97
			}
98
		});
99
 
100
		vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() {
101
			@Override
102
			public void onClick(ClickEvent event) {
103
				List<Image> images = observation.getImages();
104
				if (images.size() > 0) {
105
					CacheClient.getInstance().setImageCourante(images.get(0));
106
				} else {
107
					CacheClient.getInstance().setImageCourante(null);
108
				}
109
				CacheClient.getInstance().setObservationCourante(observation);
110
				fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
111
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret()));
112
			}
113
		});
114
 
115
		ClickHandler versDetails = new ClickHandler() {
116
			@Override
117
			public void onClick(ClickEvent event) {
118
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
119
			}
120
		};
121
		vue.getNomEspece().addClickHandler(versDetails);
122
		vue.getBoutonPlusDeDetails().addClickHandler(versDetails);
123
 
124
		vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() {
125
			@Override
126
			public void onClick(ClickEvent event) {
127
				FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(observation, new CommentaireServiceConcret(), new FormulaireCommentaireVue());
128
				fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
129
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur);
130
			}
131
		});
132
 
133
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
134
 
135
			@Override
136
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
137
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
138
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
139
				}
140
			}
141
		});
142
	}
143
 
144
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
145
		observationDeterminationPresenteur.setPropositions(observation.getPropositionDeterminations());
146
	}
147
}