Rev 1241 | Rev 1540 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.vues.pictoflora.resultats.images;import java.util.HashMap;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.images.DetailImagePresenteur;import org.tela_botanica.del.client.composants.images.DetailImageVue;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.motsclesimages.MotsClesImagePresenteur;import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImageVue;import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImagePresenteur;import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImageVue;import org.tela_botanica.del.client.composants.presenteur.Presenteur;import org.tela_botanica.del.client.composants.votefleur.VoteFleurPresenteur;import org.tela_botanica.del.client.composants.votefleur.VoteFleurVue;import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur;import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVoteVue;import org.tela_botanica.del.client.config.Config;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.Protocole;import org.tela_botanica.del.client.modeles.VoteProtocole;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.ajoutmotcleimage.EvenementAjoutMotCleImage;import org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage.GestionnaireEvenementAjoutMotCleImage;import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole;import org.tela_botanica.del.client.navigation.evenement.fermermotcleimage.EvenementFermerMotCleImage;import org.tela_botanica.del.client.navigation.evenement.fermermotcleimage.GestionnaireEvenementFermerMotCleImage;import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementVoirDetailsImage;import org.tela_botanica.del.client.navigation.evenement.rechercheimage.GestionnaireEvenementVoirDetailsImage;import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;import org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora.EvenementValidationPictoflora;import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;import org.tela_botanica.del.client.services.rest.MotsClesService;import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret;import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret;import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack;import com.google.gwt.core.client.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;import com.google.gwt.user.client.ui.Widget;public class ImagePresenteur extends Presenteur {public interface Vue extends IsWidget {public abstract void loadImage(Image image);public abstract HasClickHandlers getImagePrincipale();public IsWidget getImagePrincipaleWidget();public void setUrlImagePrincipale(String url);public void setTitreImagePrincipale(String titre);public void setAltTextImagePrincipale(String altText);public String getUrlImagePrincipale();public String getTitreImagePrincipale();public String getAltTextImagePrincipale();public abstract HasClickHandlers getEnSavoirPlus();public abstract void cacherZoneCache();public abstract void afficherZoneCache();public abstract HasWidgets getZoneVoter();public HasClickHandlers getNomAuteur();public HasClickHandlers getNomEspece();public HasWidgets getMetadonnees();public HasClickHandlers getVoirMotsCles();public HasWidgets getZoneMotsCles();public void cacherZoneMotsCles();public void afficherZoneMotsCles();public HasClickHandlers getBoutonFermer();}private Vue vue;private final Image image;private boolean detailsOuverts = false;private Protocole protocole;private boolean motsClesOuverts = false;private MotsClesImagePresenteur motsClesImagePresenteur;final FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());public ImagePresenteur(Image image, Protocole protocole, Vue vue) {this.image = image;this.protocole = protocole;this.vue = vue;}public void go(HasWidgets composite) {composite.add(vue.asWidget());vue.loadImage(image);vue.getNomAuteur().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {Window.open(new Config().getUrl("urlProfil") + image.getObservation().getIdAuteur(), "Profil utilisateur", null);}});new MetadonneesPresenteur(new MetadonneesVue(), image.getObservation(), ModeRecherche.MODE_IMAGE, true).go(vue.getMetadonnees());chargerDonneesValidation();gererEvenements();}private void chargerDonneesValidation() {vue.getZoneVoter().clear();if (protocole != null) {HashMap<String, VoteProtocole> observationValidationDatas = image.getVotesProtocoles(protocole.getId());if (observationValidationDatas != null) {new MoyenneVotePresenteur(image, protocole, new MoyenneVoteVue(), new VoteProtocoleServiceConcret()).go(vue.getZoneVoter());}}}private void lancerEvenementValidation() {CacheClient.getInstance().setImageCourante(image);final Observation obs = image.getObservation();BusEvenementiel.getInstance().fireEvent(new EvenementValidationPictoflora(obs));}protected void gererEvenements() {ClickHandler zoomeur = new ClickHandler() {public void onClick(ClickEvent event) {FenetreOverlaySimplePresenteur presenteurGalerie = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());presenteurGalerie.ouvrirFenetreModaleDefilante(0, new DetailImagePresenteur(image, new DetailImageVue()));presenteurGalerie.afficherBoutonsSuivantsPrecedents(false);}};vue.getImagePrincipale().addClickHandler(zoomeur);vue.getEnSavoirPlus().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {BusEvenementiel.getInstance().fireEvent(new EvenementVoirDetailsImage(image));}});vue.getVoirMotsCles().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {CacheClient.getInstance().setImageCourante(image);motsClesImagePresenteur = new MotsClesImagePresenteur(image, new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImagePresenteur(image.getIdImage(),new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImageVue()), new MotsClesImageVue());motsClesImagePresenteur.chargerMotsCles();fenetreOverlaySimplePresenteur.ouvrirFenetreModale(motsClesImagePresenteur);}});vue.getBoutonFermer().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {cacherPanneauMotsCles();}});BusEvenementiel.getInstance().addHandler(EvenementVoirDetailsImage.TYPE, new GestionnaireEvenementVoirDetailsImage() {@Overridepublic void onVoirDetailsImage(EvenementVoirDetailsImage event) {if (image.getIdImage().equals(event.getImage().getIdImage())) {if (!detailsOuverts) {afficherDetails();} else {cacherDetails();}} else {cacherDetails();}}});BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() {@Overridepublic void onChangementProtocole(EvenementChangementProtocole event) {setProtocole(event.getProtocole());chargerDonneesValidation();}});BusEvenementiel.getInstance().addHandler(EvenementFermerMotCleImage.TYPE, new GestionnaireEvenementFermerMotCleImage() {@Overridepublic void onFermerMotCleImage(EvenementFermerMotCleImage evenementFermerMotCleImage) {if (evenementFermerMotCleImage.getIdImage().equals(image.getIdImage())) {fenetreOverlaySimplePresenteur.fermerFenetreModale();}}});}protected void afficherPanneauMotsCles() {vue.afficherZoneMotsCles();motsClesOuverts = true;motsClesImagePresenteur.chargerMotsCles();motsClesImagePresenteur.focuserChampsSaisie();}protected void cacherPanneauMotsCles() {vue.cacherZoneMotsCles();motsClesOuverts = false;}public void cacherDetails() {vue.cacherZoneCache();detailsOuverts = false;}public void afficherDetails() {vue.afficherZoneCache();detailsOuverts = true;}public boolean isDetailsOpen() {return detailsOuverts;}public Protocole getProtocole() {return protocole;}public void setProtocole(Protocole protocole) {this.protocole = protocole;}}