Subversion Repositories eFlore/Applications.del

Rev

Rev 1203 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1196 gduche 1
package org.tela_botanica.del.client.vues.pictoflora.moteur;
2
 
3
import javax.validation.Configuration;
4
 
5
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
7
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
8
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
9
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
10
import org.tela_botanica.del.client.config.Config;
11
import org.tela_botanica.del.client.modeles.ModeRecherche;
12
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat;
13
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
14
import org.tela_botanica.del.client.services.rest.ProtocoleService;
15
import org.tela_botanica.del.client.services.rest.ProtocoleServiceConcret;
16
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
17
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraPresenteur;
18
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraVue;
19
 
20
import com.google.gwt.event.dom.client.ClickEvent;
21
import com.google.gwt.event.dom.client.ClickHandler;
22
import com.google.gwt.event.dom.client.HasClickHandlers;
23
import com.google.gwt.user.client.Window;
24
import com.google.gwt.user.client.ui.HasWidgets;
25
import com.google.gwt.user.client.ui.IsWidget;
26
import com.google.gwt.user.client.ui.Panel;
27
 
28
public class MoteurPictofloraPresenteur {
29
 
30
	public interface Vue extends IsWidget {
31
		public HasWidgets getZoneResultats();
32
 
33
		public HasWidgets getZoneRecherche();
34
 
35
		public void ajouterVue(HasWidgets composite);
36
 
37
		public Panel getZonePartageUrl();
38
 
39
		HasClickHandlers getLienAjoutObservation();
40
	}
41
 
42
	private Vue vue;
43
	private ProtocoleService protocoleService;
44
 
45
	/**
46
	 * Constructeur
47
	 * */
48
	public MoteurPictofloraPresenteur(Vue vue, ProtocoleService protocoleService) {
49
		this.vue = vue;
50
		this.protocoleService = protocoleService;
51
 
52
		PartageUrlPresenteur presenteurPartageUrl  = new PartageUrlPresenteur(new PartageUrlVue());
53
		presenteurPartageUrl.go(vue.getZonePartageUrl());
54
 
55
		// TODO: le code ci dessous sert à ne pas recharger les protocoles
56
		// à chaque fois, voir si on peut le factoriser quelque part
57
		if (CacheClient.getInstance().getProtocoleCourant() == null) {
58
			if (CacheClient.getInstance().getListeProtocoles() == null) {
59
				protocoleService.getProtocoles(new ProtocolesCallback() {
60
 
61
					@Override
62
					public void surRetour(ProtocoleServiceResultat protocolesRecus) {
63
						CacheClient.getInstance().setListeProtocoles(protocolesRecus.getProtocoles());
64
						if (protocolesRecus.getProtocoles().size() > 0) {
65
							CacheClient.getInstance().setProtocoleCourant(protocolesRecus.getProtocoles().get(0));
66
						} else {
67
							// TODO afficher message indiquant que la liste des
68
							// protocoles de votes n'est pas fourni
69
						}
70
					}
71
				});
72
			} else {
73
				CacheClient.getInstance().setProtocoleCourant(CacheClient.getInstance().getListeProtocoles().get(0));
74
			}
75
		}
76
		gererEvenements();
77
	}
78
 
79
	private void gererEvenements() {
80
		vue.getLienAjoutObservation().addClickHandler(new ClickHandler() {
81
			@Override
82
			public void onClick(ClickEvent event) {
83
				Config config = new Config();
84
				Window.open(config.getUrl("applisaisie"), "Saisie d'une nouvelle observation", null);
85
			}
86
		});
87
	}
88
 
89
	public void go(HasWidgets composite) {
90
		vue.ajouterVue(composite);
91
		chargerMoteurRechercheAvancee();
92
	}
93
 
94
	public void chargerMoteurRechercheAvancee() {
95
		MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(""), ModeRecherche.MODE_IMAGE) {
96
			public void lancerRecherche() {
97
				chercherImages();
98
			}
99
		};
100
		presenteurRecherche.go(vue.getZoneRecherche());
101
	}
102
 
103
	public void chercherImages() {
104
		vue.getZoneResultats().clear();
105
		new ResultatPictofloraPresenteur(new ImageServiceConcret(), new ProtocoleServiceConcret(), new ResultatPictofloraVue()).go(vue.getZoneResultats());
106
	}
107
 
108
	public HasWidgets getZoneResultats() {
109
		return vue.getZoneResultats();
110
	}
111
}