New file |
0,0 → 1,192 |
package org.tela_botanica.del.client.vues.identiplante.resultats.observations; |
|
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
|
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue; |
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur; |
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.modeles.EvenementObs; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.ModeRecherche; |
import org.tela_botanica.del.client.modeles.Observation; |
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.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation; |
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.formulaires.formulaireproposition.FormulairePropositionPresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue; |
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation; |
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret; |
import org.tela_botanica.del.client.utils.StringUtils; |
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationPresenteur; |
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationVue; |
|
import com.gargoylesoftware.htmlunit.html.Util; |
import com.google.gwt.core.shared.GWT; |
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; |
|
public class ObservationPresenteur extends Presenteur { |
|
public interface Vue extends IsWidget { |
public HasClickHandlers getBoutonAjoutProposition(); |
|
public HasWidgets getDeterminationsPanel(); |
|
public HasWidgets getImagesPanel(); |
|
public HasWidgets getMetadonneesPanel(); |
|
public HasClickHandlers getNomEspece(); |
|
public void setNomEspece(String nomEspece); |
|
public void setNbCommentaires(String nbCommentaires); |
|
public HasClickHandlers getBoutonAjoutCommentaire(); |
public HasClickHandlers getBoutonPlusDeDetails(); |
|
public void afficherEvenementsObservation(String evenementsObs); |
|
public void cacherEvenementsObservation(); |
|
public void mettreEnValeurEvenementsObs(); |
} |
|
private Vue vue; |
|
private Observation observation; |
|
private Image imagePrincipale; |
|
private ObservationDeterminationPresenteur observationDeterminationPresenteur; |
|
private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
|
public ObservationPresenteur(Vue vue, Observation observation, Image imagePrincipale) { |
this.observation = observation; |
this.vue = vue; |
this.imagePrincipale=imagePrincipale; |
chargerObservation(); |
} |
|
public void chargerObservation() { |
new ObservationImagesPresenteur(new ObservationImagesVue(), observation, imagePrincipale).go(vue.getImagesPanel()); |
new MetadonneesPresenteur(new MetadonneesVue(), observation, ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonneesPanel()); |
observationDeterminationPresenteur = new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionDeterminations()); |
observationDeterminationPresenteur.go(vue.getDeterminationsPanel()); |
vue.setNomEspece(observation.getNomRetenu()); |
vue.setNbCommentaires(observation.getNbCommentaires()); |
gererAffichageEvenementsObs(); |
gererEvenements(); |
} |
|
private void gererAffichageEvenementsObs() { |
if(!observation.getEvenementsAssocies().isEmpty()) { |
List<EvenementObs> evts = observation.getEvenementsAssocies(); |
StringBuilder stb = new StringBuilder(); |
stb.append("<ul class=\"listeEvenementsObs\">"); |
for (Iterator<EvenementObs> iterator = evts.iterator(); iterator.hasNext();) { |
EvenementObs evt = iterator.next(); |
stb.append("<li>"); |
stb.append(StringUtils.getCorrespondanceChaineEvenementObs(evt.getType())); |
if(!evt.getInfosComplementaires().isEmpty()) { |
String infos = StringUtils.ellipsize(evt.getInfosComplementaires(), 50, 10); |
String classeEvt = StringUtils.getClasseEvenementObs(evt.getType()); |
stb.append(" <span class=\"evtObsinfosComplementaires "+classeEvt+"\">"+infos+"</span>"); |
} |
stb.append("</li>"); |
} |
stb.append("</ul>"); |
vue.afficherEvenementsObservation(stb.toString()); |
} else { |
vue.cacherEvenementsObservation(); |
} |
} |
|
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
} |
|
protected void gererEvenements() { |
|
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() { |
@Override |
public void onAjoutDetermination(EvenementAjoutDetermination event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
ajouterPropositionDetermination(event.getPropositionDetermination()); |
} |
} |
}); |
|
vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
List<Image> images = observation.getImages(); |
if (images.size() > 0) { |
CacheClient.getInstance().setImageCourante(images.get(0)); |
} else { |
CacheClient.getInstance().setImageCourante(null); |
} |
CacheClient.getInstance().setObservationCourante(observation); |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret())); |
} |
}); |
|
ClickHandler versDetails = new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation)); |
} |
}; |
vue.getNomEspece().addClickHandler(versDetails); |
vue.getBoutonPlusDeDetails().addClickHandler(versDetails); |
|
vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(observation, new CommentaireServiceConcret(), new FormulaireCommentaireVue()); |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur); |
} |
}); |
|
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() { |
|
@Override |
public void onAjoutCommentaire(EvenementAjoutCommentaire event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
} |
}); |
} |
|
private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) { |
observationDeterminationPresenteur.setPropositions(observation.getPropositionDeterminations()); |
} |
|
public void mettreEnValeurEvenementsObs() { |
vue.mettreEnValeurEvenementsObs(); |
} |
} |