Rev 1862 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.composants.metadonnees;
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.InformationsRecherche;
import org.tela_botanica.del.client.modeles.ModeRecherche;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
import org.tela_botanica.del.client.navigation.evenement.detailsimage.EvenementRechercheImage;
import org.tela_botanica.del.client.navigation.evenement.rechercheobservation.EvenementRechercheObservation;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
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.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
public class MetadonneesPresenteur extends Presenteur {
public abstract interface Vue extends IsWidget {
public HasText getNomRetenu();
public HasClickHandlers getLienNomRetenu();
public HasText getNomCommun();
public HasText getFamille();
public HasText getLocalite();
public HasText getLieuDit();
public HasText getMilieu();
public HasText getCommentaire();
public HasText getAuteur();
public HasText getCourrielAuteur();
public void setCourrielAuteurHref(String courriel);
public HasText getDateTransmission();
public HasText getMotsClefs();
public HasText getNumNomenclatural();
public HasText getDateReleve();
public HasText getPays();
public HasClickHandlers getLienFamille();
public HasClickHandlers getLienAuteur();
public HasClickHandlers getLienCourrielAuteur();
public HasClickHandlers getLienDateTransmission();
public HasClickHandlers getLienDateReleve();
public HasClickHandlers getLienPays();
public HasClickHandlers getLienLocalite();
public HasClickHandlers getLienMotsClefs();
public HasClickHandlers getLienNumNomenclatural();
public HasClickHandlers getLienNomCommun();
public HasClickHandlers getLienMilieu();
public HasClickHandlers getLienCommentaire();
public void setStation(String station) ;
public void masquerChampsVides();
public void activerLiens();
public void activerLienAuteur();
public void activerLienNomRetenu();
public void setLienIdentiplante(String id);
void desactiverLienAuteur();
public HasText getReferentiel();
public void afficherCourrielAuteur();
public void cacherCourrielAuteur();
}
private Vue vue;
private Observation observation;
private ModeRecherche modeRecherche;
private boolean avecLiens;
public MetadonneesPresenteur(Vue vue, Observation observation, ModeRecherche modeRecherche, boolean avecLiens) {
this.vue = vue;
this.modeRecherche = modeRecherche;
setObservation(observation);
this.avecLiens = avecLiens;
}
public void setObservation(Observation observation) {
this.observation = observation;
}
public void chargerMetaDonnees() {
vue.getNomRetenu().setText(observation.getNomRetenu());
vue.getNomCommun().setText(observation.getNomCommun());
vue.getReferentiel().setText(observation.getReferentiel());
vue.getFamille().setText(observation.getFamille());
if(CacheClient.getInstance().getListePays() != null) {
vue.getPays().setText(CacheClient.getInstance().getListePays().get(observation.getPays()));
} else {
vue.getPays().setText(observation.getPays());
}
vue.getLocalite().setText(observation.getLocaliteAvecIdFormatee());
vue.getLieuDit().setText(observation.getLieuDit());
vue.setStation(observation.getStation());
vue.getMilieu().setText(observation.getMilieu());
vue.getCommentaire().setText(observation.getCommentaire());
vue.getAuteur().setText(observation.getAuteur());
vue.getDateTransmission().setText(formaterDate(observation.getDateTransmission()));
vue.getDateReleve().setText(formaterDate(observation.getDateReleve()));
gererAffichageCourrielAuteur();
// ATTENTION : Masquer champs vide doit se faire en dernier !
vue.masquerChampsVides();
}
public String formaterDate(String dateNonFormatee) {
try {
String dateFormatee = DateTimeFormat.getFormat("dd/MM/yyyy").format(UtilitairesServiceResultat.parserDateObservation(dateNonFormatee));
dateFormatee = (dateFormatee == "01/01/1970") ? "???" : dateFormatee ;
return dateFormatee;
} catch (IllegalArgumentException e) {
return "";
}
}
@Override
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
chargerMetaDonnees();
gererEvenements();
}
@Override
protected void gererEvenements() {
if (this.avecLiens) {
if (!observation.getIdAuteur().equals("0")) {
vue.getLienAuteur().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setAuteur(vue.getAuteur().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
}
vue.getLienDateReleve().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setDate(vue.getDateReleve().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.getLienDateTransmission().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setDate(vue.getDateReleve().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.getLienFamille().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setFamille(vue.getFamille().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.getLienLocalite().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setCommune(vue.getLocalite().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.getLienPays().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
if(CacheClient.getInstance().getListePaysInversee() != null) {
informationsRecherche.setPays(CacheClient.getInstance().getListePaysInversee().get(vue.getPays().getText()));
} else {
informationsRecherche.setPays(vue.getPays().getText());
}
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.getLienMotsClefs().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setMotClef(vue.getMotsClefs().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.getLienNomCommun().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setRechercheLibre(vue.getNomCommun().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setRechercheLibre(vue.getNomRetenu().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.getLienMilieu().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setRechercheLibre(vue.getMilieu().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.getLienCommentaire().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
InformationsRecherche informationsRecherche = new InformationsRecherche();
informationsRecherche.setRechercheLibre(vue.getCommentaire().getText());
setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
History.fireCurrentHistoryState();
}
});
vue.setLienIdentiplante(this.observation.getId());
vue.activerLiens();
if (observation.getIdAuteur().equals("0")) {
vue.desactiverLienAuteur();
}
} else {
if (! observation.getIdAuteur().equals("0")) {
vue.getLienAuteur().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Config config = new Config();
Window.open(config.getUrl("profil") + observation.getIdAuteur(), "Consultation de l'annuaire", config.getInfo("popupOptions"));
}
});
vue.activerLienAuteur();
}
if (observation.getNumNomenclatural() != null && ! observation.getNumNomenclatural().equals("0") && ! observation.getNumNomenclatural().equals("")) {
vue.activerLienNomRetenu();
vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
Config config = new Config();
String efloreUrlFicheTpl = config.getUrl("efloreTaxon");
String efloreUrlFiche = efloreUrlFicheTpl.replaceAll("referentiel-nn-num_nom", observation.getReferentiel()+"-nn-"+observation.getNumNomenclatural());
Window.open(efloreUrlFiche, "Fiche eflore", config.getInfo("popupOptions"));
}
});
}
}
BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
@Override
public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
gererAffichageCourrielAuteur();
}
});
}
public void gererAffichageCourrielAuteur() {
GWT.log("Auteur courrriel :"+observation.getCourrielAuteur());
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
if (utilisateur.etreAdmin()) {
vue.getCourrielAuteur().setText(observation.getCourrielAuteur());
vue.setCourrielAuteurHref(observation.getCourrielAuteur());
vue.afficherCourrielAuteur();
} else {
vue.getCourrielAuteur().setText("");
vue.setCourrielAuteurHref("");
vue.cacherCourrielAuteur();
}
}
public void setInfosRechercheEnCacheEtLancerEvenement(InformationsRecherche informationsRecherche) {
switch (modeRecherche) {
case MODE_IMAGE:
CacheClient.getInstance().setPageCouranteRechercheImages(1);
CacheClient.getInstance().setInformationsRechercheImage(informationsRecherche);
BusEvenementiel.getInstance().fireEvent(new EvenementRechercheImage());
break;
case MODE_OBSERVATION:
CacheClient.getInstance().setPageCouranteRechercheObservations(1);
CacheClient.getInstance().setInformationsRechercheObservation(informationsRecherche);
BusEvenementiel.getInstance().fireEvent(new EvenementRechercheObservation());
default:
break;
}
}
}