New file |
0,0 → 1,355 |
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; |
} |
} |
} |