Rev 1066 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.composants.commentaires;import java.util.List;import org.tela_botanica.del.client.cache.CacheClient;import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;import org.tela_botanica.del.client.composants.presenteur.Presenteur;import org.tela_botanica.del.client.modeles.Commentaire;import org.tela_botanica.del.client.modeles.InterventionForum;import org.tela_botanica.del.client.modeles.PropositionDetermination;import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;import org.tela_botanica.del.client.services.rest.CommentaireService;import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback;import com.google.gwt.event.dom.client.ClickEvent;import com.google.gwt.event.dom.client.ClickHandler;import com.google.gwt.event.dom.client.HasClickHandlers;import com.google.gwt.user.client.Window;import com.google.gwt.user.client.ui.HasWidgets;import com.google.gwt.user.client.ui.IsWidget;/*** Cette classe permet d'afficher une popup avec la liste des commentaires* associées à une proposition de determination** @author LIENS**/public class DetailCommentairePresenteur extends Presenteur {/*** Interface de la vue correspondante** @author LIENS**/public interface Vue extends IsWidget {public void afficherCommentairesProposition(PropositionDetermination propositionDetermination);public void afficherAucuneDonnees();public void stopChargement();public void startChargement();public HasClickHandlers getBoutonAjoutCommentaire();}// La vue correspondanteprivate Vue vue;// La proposition de determinationprivate PropositionDetermination propositionDetermination;//le servcie de recuperation des commentairesprivate CommentaireService commentaireService;/*** Constructeur** @param vue* @param propositionDetermination*/public DetailCommentairePresenteur(Vue vue, CommentaireService commentaireService, PropositionDetermination propositionDetermination) {this.vue = vue;this.propositionDetermination = propositionDetermination;this.commentaireService = commentaireService;}/*** Declenchement du présenteur*/public void go(HasWidgets container) {container.add(vue.asWidget());gererEvenements();}/*** Affichage des commentaires*/public void afficherCommentaires() {// affichage de l'icone de chargementvue.startChargement();// si l'id de la propostion est égal est nulle alors celle ci est une proposition// crée par l'interface à partir de l'obs et n'a donc pas de commentairesif(propositionDetermination.getId() != null) {// Appel du servicecommentaireService.chargerCommentaires(propositionDetermination, new ListeCommentairesCallback() {@Overridepublic void surRetour(List<Commentaire> commentaires) {propositionDetermination.setListeCommentaires(commentaires);// s'il existe des commentaires ils sont affichésif (propositionDetermination.getTotalCommentaires() > 0) {// affichage des commentaires associés à la proposition dans// la vuevue.afficherCommentairesProposition(propositionDetermination);// supression de l'icone de chargementvue.stopChargement();} else {// affichage d'un message precisant qu'il n'y a pas de// commentairesvue.afficherAucuneDonnees();// supression de l'icone de chargementvue.stopChargement();}}@Overridepublic void surErreur(String messageErreur) {Window.alert(messageErreur);vue.stopChargement();}});} else {// affichage d'un message precisant qu'il n'y a pas de// commentairesvue.afficherAucuneDonnees();// supression de l'icone de chargementvue.stopChargement();}}/*** Gestion des evenements du presenteur*/@Overrideprotected void gererEvenements() {final FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {// TODO : > mettre proprement l'intervention// TODO : >actualiser les affichagesCacheClient.getInstance().setObservationCourante(propositionDetermination.getObservation());FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(propositionDetermination.getObservation().getInterventionsForum().get(propositionDetermination.getObservation().getInterventionsForum().size()-1), new CommentaireServiceConcret(), new FormulaireCommentaireVue());fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur);}});BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {@Overridepublic void onAjoutCommentaire(EvenementAjoutCommentaire event) {if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {fenetreOverlaySimplePresenteur.fermerFenetreModale();}}});}}