Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
922 benjamin 1
package org.tela_botanica.del.client.composants.commentaires;
2
 
926 benjamin 3
import java.util.List;
922 benjamin 4
 
1075 gduche 5
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
7
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
8
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
9
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
922 benjamin 10
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
926 benjamin 11
import org.tela_botanica.del.client.modeles.Commentaire;
1075 gduche 12
import org.tela_botanica.del.client.modeles.InterventionForum;
922 benjamin 13
import org.tela_botanica.del.client.modeles.PropositionDetermination;
1075 gduche 14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
15
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
16
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
939 benjamin 17
import org.tela_botanica.del.client.services.rest.CommentaireService;
1075 gduche 18
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
939 benjamin 19
import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback;
922 benjamin 20
 
1075 gduche 21
import com.google.gwt.event.dom.client.ClickEvent;
22
import com.google.gwt.event.dom.client.ClickHandler;
23
import com.google.gwt.event.dom.client.HasClickHandlers;
922 benjamin 24
import com.google.gwt.user.client.Window;
25
import com.google.gwt.user.client.ui.HasWidgets;
26
import com.google.gwt.user.client.ui.IsWidget;
27
 
939 benjamin 28
/**
29
 * Cette classe permet d'afficher une popup avec la liste des commentaires
30
 * associées à une proposition de determination
31
 *
32
 * @author LIENS
33
 *
34
 */
922 benjamin 35
public class DetailCommentairePresenteur extends Presenteur {
36
 
939 benjamin 37
	/**
38
	 * Interface de la vue correspondante
39
	 *
40
	 * @author LIENS
41
	 *
42
	 */
922 benjamin 43
	public interface Vue extends IsWidget {
44
		public void afficherCommentairesProposition(PropositionDetermination propositionDetermination);
45
 
939 benjamin 46
		public void afficherAucuneDonnees();
922 benjamin 47
 
939 benjamin 48
		public void stopChargement();
926 benjamin 49
 
939 benjamin 50
		public void startChargement();
1075 gduche 51
 
52
		public HasClickHandlers getBoutonAjoutCommentaire();
922 benjamin 53
	}
54
 
939 benjamin 55
	// La vue correspondante
922 benjamin 56
	private Vue vue;
57
 
939 benjamin 58
	// La proposition de determination
922 benjamin 59
	private PropositionDetermination propositionDetermination;
956 benjamin 60
 
61
	//le servcie de recuperation des commentaires
62
	private CommentaireService commentaireService;
922 benjamin 63
 
939 benjamin 64
	/**
65
	 * Constructeur
66
	 *
67
	 * @param vue
68
	 * @param propositionDetermination
69
	 */
956 benjamin 70
	public DetailCommentairePresenteur(Vue vue, CommentaireService commentaireService, PropositionDetermination propositionDetermination) {
922 benjamin 71
		this.vue = vue;
72
		this.propositionDetermination = propositionDetermination;
1066 gduche 73
		this.commentaireService = commentaireService;
922 benjamin 74
	}
75
 
939 benjamin 76
	/**
77
	 * Declenchement du présenteur
78
	 */
922 benjamin 79
	public void go(HasWidgets container) {
80
		container.add(vue.asWidget());
1075 gduche 81
		gererEvenements();
922 benjamin 82
	}
83
 
939 benjamin 84
	/**
85
	 * Affichage des commentaires
86
	 */
922 benjamin 87
	public void afficherCommentaires() {
939 benjamin 88
 
89
		// affichage de l'icone de chargement
922 benjamin 90
		vue.startChargement();
949 aurelien 91
 
92
		// si l'id de la propostion est égal est nulle alors celle ci est une proposition
93
		// crée par l'interface à partir de l'obs et n'a donc pas de commentaires
94
		if(propositionDetermination.getId() != null) {
956 benjamin 95
 
96
		// Appel du service
97
		commentaireService.chargerCommentaires(propositionDetermination, new ListeCommentairesCallback() {
98
 
99
			@Override
100
			public void surRetour(List<Commentaire> commentaires) {
101
 
102
				propositionDetermination.setListeCommentaires(commentaires);
1066 gduche 103
 
956 benjamin 104
				// s'il existe des commentaires ils sont affichés
105
				if (propositionDetermination.getTotalCommentaires() > 0) {
106
 
107
					// affichage des commentaires associés à la proposition dans
108
					// la vue
109
					vue.afficherCommentairesProposition(propositionDetermination);
110
 
111
					// supression de l'icone de chargement
922 benjamin 112
					vue.stopChargement();
956 benjamin 113
				} else {
114
 
115
					// affichage d'un message precisant qu'il n'y a pas de
116
					// commentaires
117
					vue.afficherAucuneDonnees();
118
 
119
					// supression de l'icone de chargement
120
					vue.stopChargement();
922 benjamin 121
				}
956 benjamin 122
 
123
			}
124
 
125
			@Override
126
			public void surErreur(String messageErreur) {
127
				Window.alert(messageErreur);
128
				vue.stopChargement();
129
			}
130
		});
949 aurelien 131
		} else {
132
			// affichage d'un message precisant qu'il n'y a pas de
133
			// commentaires
134
			vue.afficherAucuneDonnees();
922 benjamin 135
 
949 aurelien 136
			// supression de l'icone de chargement
137
			vue.stopChargement();
138
		}
922 benjamin 139
	}
140
 
939 benjamin 141
	/**
142
	 * Gestion des evenements du presenteur
143
	 */
922 benjamin 144
	@Override
145
	protected void gererEvenements() {
1075 gduche 146
 
147
		final FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
148
 
149
		vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() {
150
			@Override
151
			public void onClick(ClickEvent event) {
152
				// TODO : > mettre proprement l'intervention
153
				// TODO : >actualiser les affichages
154
				CacheClient.getInstance().setObservationCourante(propositionDetermination.getObservation());
155
				FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(propositionDetermination.getObservation().getInterventionsForum().get(propositionDetermination.getObservation().getInterventionsForum().size()-1), new CommentaireServiceConcret(), new FormulaireCommentaireVue());
156
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur);
157
			}
158
		});
159
 
160
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
161
 
162
			@Override
163
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
164
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
165
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
166
				}
167
			}
168
		});
922 benjamin 169
	}
170
}