New file |
0,0 → 1,170 |
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 correspondante |
private Vue vue; |
|
// La proposition de determination |
private PropositionDetermination propositionDetermination; |
|
//le servcie de recuperation des commentaires |
private 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 chargement |
vue.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 commentaires |
if(propositionDetermination.getId() != null) { |
|
// Appel du service |
commentaireService.chargerCommentaires(propositionDetermination, new ListeCommentairesCallback() { |
|
@Override |
public void surRetour(List<Commentaire> commentaires) { |
|
propositionDetermination.setListeCommentaires(commentaires); |
|
// s'il existe des commentaires ils sont affichés |
if (propositionDetermination.getTotalCommentaires() > 0) { |
|
// affichage des commentaires associés à la proposition dans |
// la vue |
vue.afficherCommentairesProposition(propositionDetermination); |
|
// supression de l'icone de chargement |
vue.stopChargement(); |
} else { |
|
// affichage d'un message precisant qu'il n'y a pas de |
// commentaires |
vue.afficherAucuneDonnees(); |
|
// supression de l'icone de chargement |
vue.stopChargement(); |
} |
|
} |
|
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
vue.stopChargement(); |
} |
}); |
} else { |
// affichage d'un message precisant qu'il n'y a pas de |
// commentaires |
vue.afficherAucuneDonnees(); |
|
// supression de l'icone de chargement |
vue.stopChargement(); |
} |
} |
|
/** |
* Gestion des evenements du presenteur |
*/ |
@Override |
protected void gererEvenements() { |
|
final FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
|
vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
// TODO : > mettre proprement l'intervention |
// TODO : >actualiser les affichages |
CacheClient.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() { |
|
@Override |
public void onAjoutCommentaire(EvenementAjoutCommentaire event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
} |
}); |
} |
} |