New file |
0,0 → 1,258 |
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() { |
|
@Override |
public 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() { |
|
@Override |
public void onClick(ClickEvent event) { |
BusEvenementiel.getInstance().fireEvent(new EvenementVoirDetailsImage(image)); |
} |
}); |
|
vue.getVoirMotsCles().addClickHandler(new ClickHandler() { |
@Override |
public 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() { |
@Override |
public void onClick(ClickEvent event) { |
cacherPanneauMotsCles(); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementVoirDetailsImage.TYPE, new GestionnaireEvenementVoirDetailsImage() { |
@Override |
public 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() { |
@Override |
public void onChangementProtocole(EvenementChangementProtocole event) { |
setProtocole(event.getProtocole()); |
chargerDonneesValidation(); |
} |
}); |
|
BusEvenementiel.getInstance().addHandler(EvenementFermerMotCleImage.TYPE, new GestionnaireEvenementFermerMotCleImage() { |
|
@Override |
public 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; |
} |
} |