Subversion Repositories eFlore/Applications.del

Rev

Rev 210 | 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;
6
import org.tela_botanica.del.client.modeles.Image;
178 benjamin 7
import org.tela_botanica.del.client.modeles.Protocole;
148 benjamin 8
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
178 benjamin 9
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
148 benjamin 10
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementRechercheImage;
9 benjamin 11
import org.tela_botanica.del.client.utils.MockDatasource;
12
 
178 benjamin 13
import com.google.gwt.event.dom.client.ChangeEvent;
14
import com.google.gwt.event.dom.client.ChangeHandler;
9 benjamin 15
import com.google.gwt.event.dom.client.ClickEvent;
16
import com.google.gwt.event.dom.client.ClickHandler;
277 gduche 17
import com.google.gwt.event.dom.client.HasChangeHandlers;
18
import com.google.gwt.event.dom.client.HasClickHandlers;
19
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
204 gduche 20
import com.google.gwt.event.dom.client.KeyCodes;
21
import com.google.gwt.event.dom.client.KeyPressEvent;
22
import com.google.gwt.event.dom.client.KeyPressHandler;
9 benjamin 23
import com.google.gwt.user.client.ui.HasWidgets;
277 gduche 24
import com.google.gwt.user.client.ui.IsWidget;
9 benjamin 25
 
178 benjamin 26
public class RechercheImagePresenteur {
9 benjamin 27
 
277 gduche 28
	public interface Vue extends IsWidget {
29
 
30
		public abstract void ajouterProtocole(String protocole);
31
		public abstract void selectionnerProtocole(int index);
32
		public abstract HasClickHandlers getBoutonChercher();
33
		public abstract HasKeyPressHandlers getChampEspece();
34
		public abstract HasChangeHandlers getListeProtocoles();
35
		public abstract HasWidgets getPanneauResultats();
36
	}
37
 
38
	private Vue vue;
39
 
178 benjamin 40
	private final MockDatasource dataSource = MockDatasource.getInstance();
41
	private String protocoleParDefaut = Protocole.IDENTIFICATION_AUTOMATIQUE;
42
	private List<Protocole> protocoles;
9 benjamin 43
 
277 gduche 44
	/**
45
	 * Constructeur
46
	 * */
47
	public RechercheImagePresenteur(Vue vue) {
48
		this.vue = vue;
49
 
178 benjamin 50
		if (CacheClient.getInstance().getProtocoleCourant() == null) {
51
			CacheClient.getInstance().setProtocoleCourant(dataSource.getProtocole(protocoleParDefaut));
52
		}
9 benjamin 53
	}
54
 
55
	public void go(HasWidgets composite) {
277 gduche 56
		composite.add(vue.asWidget());
26 gduche 57
		gererEvenements();
178 benjamin 58
		chargerProtocoles();
59
	}
148 benjamin 60
 
178 benjamin 61
	private void chargerProtocoles() {
62
		protocoles = dataSource.getProtocoles();
63
		for (Protocole protocole : protocoles) {
277 gduche 64
			vue.ajouterProtocole(protocole.getNom());
148 benjamin 65
		}
277 gduche 66
		vue.selectionnerProtocole(protocoles.indexOf(CacheClient.getInstance().getProtocoleCourant()));
9 benjamin 67
	}
68
 
26 gduche 69
	public void gererEvenements() {
9 benjamin 70
 
277 gduche 71
		vue.getBoutonChercher().addClickHandler(new ClickHandler() {
26 gduche 72
 
9 benjamin 73
			@Override
74
			public void onClick(ClickEvent event) {
178 benjamin 75
				chargerImages();
9 benjamin 76
			}
77
		});
78
 
277 gduche 79
		vue.getChampEspece().addKeyPressHandler(new KeyPressHandler() {
9 benjamin 80
 
204 gduche 81
			public void onKeyPress(KeyPressEvent event) {
82
				if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
83
					chargerImages();
84
				}
9 benjamin 85
			}
86
		});
87
 
277 gduche 88
		vue.getListeProtocoles().addChangeHandler(new ChangeHandler() {
9 benjamin 89
 
124 gduche 90
			@Override
178 benjamin 91
			public void onChange(ChangeEvent event) {
277 gduche 92
 
93
				Protocole protocoleCourant = (Protocole) event.getSource();
178 benjamin 94
				EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant);
95
				BusEvenementiel.getInstance().fireEvent(evenement);
124 gduche 96
			}
178 benjamin 97
		});
9 benjamin 98
	}
99
 
178 benjamin 100
	private void chargerImages() {
101
		List<Image> imagesFromDatabase = dataSource.getImages();
102
		EvenementRechercheImage evenementRechercheImage = new EvenementRechercheImage(imagesFromDatabase);
103
		BusEvenementiel.getInstance().fireEvent(evenementRechercheImage);
9 benjamin 104
	}
277 gduche 105
 
106
	public HasWidgets getPanneauResultats() {
107
		return vue.getPanneauResultats();
9 benjamin 108
	}
109
}