Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
148 benjamin 1
package org.tela_botanica.del.client.vues.rechercheimages;
9 benjamin 2
 
3
import java.util.List;
4
 
148 benjamin 5
import org.tela_botanica.del.client.cache.CacheClient;
323 gduche 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.i18n.I18n;
178 benjamin 9
import org.tela_botanica.del.client.modeles.Protocole;
148 benjamin 10
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
178 benjamin 11
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
291 benjamin 12
import org.tela_botanica.del.client.services.rest.ProtocoleService;
9 benjamin 13
import org.tela_botanica.del.client.utils.MockDatasource;
335 benjamin 14
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImagePresenteur;
9 benjamin 15
 
178 benjamin 16
import com.google.gwt.event.dom.client.ChangeEvent;
17
import com.google.gwt.event.dom.client.ChangeHandler;
277 gduche 18
import com.google.gwt.event.dom.client.HasChangeHandlers;
9 benjamin 19
import com.google.gwt.user.client.ui.HasWidgets;
277 gduche 20
import com.google.gwt.user.client.ui.IsWidget;
9 benjamin 21
 
323 gduche 22
public class MoteurRechercheImagePresenteur {
9 benjamin 23
 
277 gduche 24
	public interface Vue extends IsWidget {
335 benjamin 25
 
277 gduche 26
		public abstract void ajouterProtocole(String protocole);
335 benjamin 27
 
277 gduche 28
		public abstract void selectionnerProtocole(int index);
335 benjamin 29
 
277 gduche 30
		public abstract HasChangeHandlers getListeProtocoles();
335 benjamin 31
 
278 gduche 32
		public abstract HasWidgets getZoneResultats();
335 benjamin 33
 
323 gduche 34
		public abstract HasWidgets getZoneRecherche();
277 gduche 35
	}
335 benjamin 36
 
277 gduche 37
	private Vue vue;
335 benjamin 38
 
311 gduche 39
	// private final ImageService imageService = MockDatasource.getInstance();
291 benjamin 40
	private final ProtocoleService protocoleService = MockDatasource.getInstance();
311 gduche 41
	private List<Protocole> protocoles;
335 benjamin 42
 
43
	// TODO : passer ça en cache
178 benjamin 44
	private String protocoleParDefaut = Protocole.IDENTIFICATION_AUTOMATIQUE;
335 benjamin 45
 
277 gduche 46
	/**
47
	 * Constructeur
48
	 * */
323 gduche 49
	public MoteurRechercheImagePresenteur(Vue vue) {
277 gduche 50
		this.vue = vue;
335 benjamin 51
 
178 benjamin 52
		if (CacheClient.getInstance().getProtocoleCourant() == null) {
291 benjamin 53
			CacheClient.getInstance().setProtocoleCourant(protocoleService.getProtocole(protocoleParDefaut));
178 benjamin 54
		}
9 benjamin 55
	}
56
 
57
	public void go(HasWidgets composite) {
277 gduche 58
		composite.add(vue.asWidget());
26 gduche 59
		gererEvenements();
178 benjamin 60
		chargerProtocoles();
323 gduche 61
		chargerMoteurRechercheAvancee();
178 benjamin 62
	}
148 benjamin 63
 
178 benjamin 64
	private void chargerProtocoles() {
291 benjamin 65
		protocoles = protocoleService.getProtocoles();
178 benjamin 66
		for (Protocole protocole : protocoles) {
277 gduche 67
			vue.ajouterProtocole(protocole.getNom());
148 benjamin 68
		}
277 gduche 69
		vue.selectionnerProtocole(protocoles.indexOf(CacheClient.getInstance().getProtocoleCourant()));
9 benjamin 70
	}
71
 
26 gduche 72
	public void gererEvenements() {
9 benjamin 73
 
277 gduche 74
		vue.getListeProtocoles().addChangeHandler(new ChangeHandler() {
9 benjamin 75
 
124 gduche 76
			@Override
178 benjamin 77
			public void onChange(ChangeEvent event) {
335 benjamin 78
 
277 gduche 79
				Protocole protocoleCourant = (Protocole) event.getSource();
178 benjamin 80
				EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant);
81
				BusEvenementiel.getInstance().fireEvent(evenement);
124 gduche 82
			}
178 benjamin 83
		});
9 benjamin 84
	}
335 benjamin 85
 
323 gduche 86
	public void chargerMoteurRechercheAvancee() {
335 benjamin 87
		MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(I18n.getVocabulary().rechercherImage()), true, false) {
88
			public void lancerRecherche() {
89
				chercherImages();
323 gduche 90
			}
91
		};
92
		presenteurRecherche.go(vue.getZoneRecherche());
9 benjamin 93
	}
335 benjamin 94
 
95
	public void chercherImages() {
96
		new ResultatRechercheImagePresenteur().go(vue.getZoneResultats());
97
	}
98
 
278 gduche 99
	public HasWidgets getZoneResultats() {
100
		return vue.getZoneResultats();
9 benjamin 101
	}
102
}