Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
922 benjamin 1
package org.tela_botanica.del.client.vues.rechercheobservations.resultats.observationdeterminations;
2
 
3
import org.tela_botanica.del.client.composants.commentaires.DetailCommentairePresenteur;
4
import org.tela_botanica.del.client.composants.commentaires.DetailCommentaireVue;
5
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
7
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationPresenteur;
8
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationVue;
9
import org.tela_botanica.del.client.modeles.PropositionDetermination;
959 benjamin 10
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
922 benjamin 11
 
12
import com.google.gwt.event.dom.client.ClickEvent;
13
import com.google.gwt.event.dom.client.ClickHandler;
14
import com.google.gwt.event.dom.client.HasClickHandlers;
15
import com.google.gwt.user.client.ui.HasWidgets;
16
import com.google.gwt.user.client.ui.IsWidget;
17
 
18
public class LignePropositionPresenteur {
19
 
1068 gduche 20
	private int nbCommentaires, nbVotes;
1093 gduche 21
 
922 benjamin 22
	public abstract interface Vue extends IsWidget {
23
		public HasClickHandlers getZoneNbVotes();
24
 
25
		public HasClickHandlers getZoneNbCommentaires();
26
 
27
		public void setNbVotes(int nbVotes);
28
 
29
		public void setNbCommentaires(int nbCommentaires);
1093 gduche 30
 
31
		public void enleverLienCommentaires();
32
 
33
		public void enleverLienVotes();
922 benjamin 34
	}
35
 
36
	private Vue vue;
37
 
38
	private PropositionDetermination propositionDetermination;
39
 
1093 gduche 40
	public LignePropositionPresenteur(Vue vue,
41
			PropositionDetermination propositionDetermination) {
922 benjamin 42
		this.vue = vue;
43
		this.propositionDetermination = propositionDetermination;
44
	}
45
 
46
	public void go(HasWidgets composite) {
47
		composite.add(vue.asWidget());
1071 aurelien 48
		chargerPropositionDetermination();
922 benjamin 49
		gererEvenements();
50
	}
51
 
52
	public void chargerPropositionDetermination() {
1075 gduche 53
		this.nbCommentaires = propositionDetermination.getTotalCommentaires();
54
		this.nbVotes = propositionDetermination.getVotesDeterminations().size();
922 benjamin 55
		vue.setNbCommentaires(nbCommentaires);
56
		vue.setNbVotes(nbVotes);
57
	}
58
 
59
	public void gererEvenements() {
1093 gduche 60
		if (nbVotes > 0) {
61
			vue.getZoneNbVotes().addClickHandler(new ClickHandler() {
62
				@Override
63
				public void onClick(ClickEvent event) {
64
					if (nbVotes > 0) {
65
						FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(
66
								new FenetreOverlayDefilanteVue());
67
						DetailListeVotesDeterminationPresenteur detailListeVotesDeterminationPresenteur = new DetailListeVotesDeterminationPresenteur(
68
								new DetailListeVotesDeterminationVue());
69
						fenetreOverlaySimplePresenteur
70
								.ouvrirFenetreModale(detailListeVotesDeterminationPresenteur);
71
						detailListeVotesDeterminationPresenteur
72
								.afficherVotes(propositionDetermination);
73
					}
1068 gduche 74
				}
1093 gduche 75
			});
76
		} else {
77
			vue.enleverLienVotes();
78
		}
922 benjamin 79
 
1093 gduche 80
		if (nbCommentaires > 0) {
81
			vue.getZoneNbCommentaires().addClickHandler(new ClickHandler() {
82
				@Override
83
				public void onClick(ClickEvent event) {
84
					if (nbCommentaires > 0) {
85
						FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(
86
								new FenetreOverlayDefilanteVue());
87
						DetailCommentairePresenteur detailCommentairePresenteur = new DetailCommentairePresenteur(
88
								new DetailCommentaireVue(),
89
								new CommentaireServiceConcret(),
90
								propositionDetermination);
91
						fenetreOverlaySimplePresenteur
92
								.ouvrirFenetreModale(detailCommentairePresenteur);
93
						detailCommentairePresenteur.afficherCommentaires();
94
					}
1068 gduche 95
				}
1093 gduche 96
			});
97
		} else {
98
			vue.enleverLienCommentaires();
99
		}
922 benjamin 100
	}
101
 
102
}