Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2211 arthur 1
package org.tela_botanica.del.client.composants.commentaires;
2
 
3
import java.util.List;
4
 
5
import org.tela_botanica.del.client.i18n.I18n;
6
import org.tela_botanica.del.client.modeles.Commentaire;
7
import org.tela_botanica.del.client.modeles.PropositionDetermination;
8
 
9
import com.google.gwt.core.client.GWT;
10
import com.google.gwt.uibinder.client.UiBinder;
11
import com.google.gwt.uibinder.client.UiField;
12
import com.google.gwt.user.client.ui.Button;
13
import com.google.gwt.user.client.ui.Composite;
14
import com.google.gwt.user.client.ui.HTML;
15
import com.google.gwt.user.client.ui.HTMLPanel;
16
import com.google.gwt.user.client.ui.Panel;
17
import com.google.gwt.user.client.ui.Widget;
18
 
19
/**
20
 * Cette classe permet d'afficher une popup avec la liste des commentaires
21
 * associées à une proposition de determination
22
 *
23
 * @author LIENS
24
 *
25
 */
26
public class DetailCommentaireVue extends Composite implements DetailCommentairePresenteur.Vue {
27
 
28
	private static DetailListeVotesDeterminationVueUIiBinder uiBinder = GWT.create(DetailListeVotesDeterminationVueUIiBinder.class);
29
 
30
	interface DetailListeVotesDeterminationVueUIiBinder extends UiBinder<Widget, DetailCommentaireVue> {
31
	};
32
 
33
	@UiField
34
	HTMLPanel titre, auteur, aucuneDonnees;
35
 
36
	@UiField
37
	Panel panneauChargement, ligneCommentaire;
38
 
39
	@UiField
40
	Button boutonAjoutCommentaire;
41
 
42
	@Override
43
	public Button getBoutonAjoutCommentaire() {
44
		return boutonAjoutCommentaire;
45
	}
46
 
47
	public DetailCommentaireVue() {
48
		initWidget(uiBinder.createAndBindUi(this));
49
	}
50
 
51
	/**
52
	 * Affiche les commentaires associées à une proposition de determination
53
	 */
54
	@Override
55
	public void afficherCommentairesProposition(PropositionDetermination propositionDetermination) {
56
 
57
		HTML htmlTitre = new HTML(propositionDetermination.getEspece());
58
		titre.add(htmlTitre);
59
 
60
		HTML htmlAuteur = new HTML(I18n.getVocabulary().proposePar()+propositionDetermination.getAuteur());
61
		auteur.add(htmlAuteur);
62
 
63
		LigneCommentairePresenteur presenteurCommentaire = new LigneCommentairePresenteur(new LigneCommentaireVue(), propositionDetermination);
64
		presenteurCommentaire.go(ligneCommentaire);
65
 
66
		creerListeCommentaireRecursive(propositionDetermination.getListeCommentaires());
67
	}
68
 
69
	/**
70
	 * Affiche une liste de commentaires recursivement
71
	 * @param commentaires
72
	 */
73
	private void creerListeCommentaireRecursive(List<Commentaire> commentaires) {
74
 
75
		for (Commentaire commentaire : commentaires) {
76
			chargerCommentaire(commentaire);
77
			if (commentaire.getListeCommentaires().size() > 0) {
78
				creerListeCommentaireRecursive(commentaire.getListeCommentaires());
79
			}
80
		}
81
	}
82
 
83
	/**
84
	 * Affiche un commentaire
85
	 * @param commentaire
86
	 */
87
	private void chargerCommentaire(Commentaire commentaire) {
88
		LigneCommentairePresenteur presenteurCommentaire = new LigneCommentairePresenteur(new LigneCommentaireVue(), commentaire);
89
		presenteurCommentaire.go(ligneCommentaire);
90
	}
91
 
92
	/**
93
	 * Affiche un icone de début de chargement
94
	 */
95
	@Override
96
	public void startChargement() {
97
		panneauChargement.setHeight((this.getOffsetHeight() / 2) + "px");
98
		panneauChargement.setWidth((this.getOffsetWidth() / 2) + "px");
99
		panneauChargement.setVisible(true);
100
	}
101
 
102
	/**
103
	 * Cache l'icone de début de chargement
104
	 */
105
	@Override
106
	public void stopChargement() {
107
		panneauChargement.setVisible(false);
108
	}
109
 
110
	/**
111
	 * Affiche un message indiquant qu'il n'y a aucun commentaire à présenter
112
	 */
113
	@Override
114
	public void afficherAucuneDonnees() {
115
		aucuneDonnees.setVisible(true);
116
	}
117
 
118
}