Subversion Repositories eFlore/Applications.del

Rev

Rev 253 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
178 benjamin 1
package org.tela_botanica.del.client.vues.rechercheimages.resultats.images;
2
 
3
import java.util.List;
4
 
250 gduche 5
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
178 benjamin 6
import org.tela_botanica.del.client.modeles.Image;
7
import org.tela_botanica.del.client.modeles.Protocole;
8
import org.tela_botanica.del.client.modeles.VoteProtocole;
9
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
10
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
11
import org.tela_botanica.del.client.utils.MockDatasource;
311 gduche 12
import org.tela_botanica.del.client.vues.rechercheimages.MoteurRechercheImage.Vue;
178 benjamin 13
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImagePresenteur;
14
import org.tela_botanica.del.client.vues.rechercheimages.vote.MoyenneVotePresenteur;
250 gduche 15
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImagePresenteur;
311 gduche 16
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImageVue;
178 benjamin 17
 
18
import com.google.gwt.event.dom.client.ClickEvent;
19
import com.google.gwt.event.dom.client.ClickHandler;
311 gduche 20
import com.google.gwt.event.dom.client.HasChangeHandlers;
21
import com.google.gwt.event.dom.client.HasClickHandlers;
22
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
178 benjamin 23
import com.google.gwt.user.client.ui.HasWidgets;
311 gduche 24
import com.google.gwt.user.client.ui.IsWidget;
178 benjamin 25
import com.google.gwt.user.client.ui.Label;
26
import com.google.gwt.user.client.ui.VerticalPanel;
27
 
250 gduche 28
public class ImagePresenteur extends Presenteur {
178 benjamin 29
 
311 gduche 30
	public interface Vue extends IsWidget {
31
 
32
		public abstract void loadImage(Image image);
33
		public abstract HasClickHandlers getImagePrincipale();
34
		public abstract HasClickHandlers getEnSavoirPlus();
35
		public abstract HasClickHandlers getAjoutValidation();
36
		public abstract void cacherZoneCache();
37
		public abstract void afficherZoneCache();
38
		public abstract HasWidgets getZoneVoter();
39
 
40
	}
41
 
42
	private Vue vue;
43
 
178 benjamin 44
	private final MockDatasource validationService = MockDatasource.getInstance();
45
	private final Image image;
46
	private boolean detailsOpen = false;
47
 
48
	private Protocole protocole;
49
 
311 gduche 50
	public ImagePresenteur(Image image, Protocole protocole, Vue vue) {
178 benjamin 51
		this.image = image;
52
		this.protocole = protocole;
311 gduche 53
		this.vue = vue;
178 benjamin 54
	}
55
 
56
	public void go(HasWidgets composite) {
311 gduche 57
		composite.add(vue.asWidget());
178 benjamin 58
		vue.loadImage(image);
59
		loadValidationData();
250 gduche 60
		gererEvenements();
178 benjamin 61
	}
62
 
63
	private void loadValidationData() {
64
		List<VoteProtocole> observationValidationDatas = validationService.getVoteByImageAndProtocol(image.getIdImage(), protocole.getNom());
311 gduche 65
		new MoyenneVotePresenteur(observationValidationDatas).go(vue.getZoneVoter());
178 benjamin 66
	}
67
 
250 gduche 68
	protected void gererEvenements() {
311 gduche 69
		vue.getImagePrincipale().addClickHandler(new ClickHandler() {
250 gduche 70
 
71
			@Override
72
			public void onClick(ClickEvent event) {
73
				com.google.gwt.user.client.ui.Image photo = (com.google.gwt.user.client.ui.Image) event.getSource();
311 gduche 74
				ouvrirFenetreModale(new DetailImagePresenteur(photo.getTitle(), photo.getAltText(), new DetailImageVue()));
250 gduche 75
			}
76
		});
311 gduche 77
		vue.getEnSavoirPlus().addClickHandler(new ClickHandler() {
178 benjamin 78
 
79
			@Override
80
			public void onClick(ClickEvent event) {
81
 
82
				if (!detailsOpen) {
83
					afficherDetails();
84
				} else {
85
					cacherDetails();
86
				}
87
			}
88
		});
89
 
311 gduche 90
		vue.getAjoutValidation().addClickHandler(new ClickHandler() {
178 benjamin 91
 
92
			@Override
93
			public void onClick(ClickEvent event) {
94
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(image));
95
			}
96
		});
97
	}
98
 
99
	public void cacherDetails() {
311 gduche 100
		vue.cacherZoneCache();
178 benjamin 101
		detailsOpen = false;
102
	}
103
 
104
	public void afficherDetails() {
105
		ResultatRechercheImagePresenteur.getInstance().fermerTousPanneauxDetailsObservations();
311 gduche 106
		vue.afficherZoneCache();
178 benjamin 107
 
108
		detailsOpen = true;
109
	}
110
 
111
	public boolean isDetailsOpen() {
112
		return detailsOpen;
113
	}
114
 
115
}