Subversion Repositories eFlore/Applications.del

Rev

Rev 278 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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