Subversion Repositories eFlore/Applications.del

Rev

Rev 454 | 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;
455 benjamin 8
import org.tela_botanica.del.client.modeles.InformationsRecherche;
453 aurelien 9
import org.tela_botanica.del.client.modeles.ModeRecherche;
455 benjamin 10
import org.tela_botanica.del.client.modeles.ModeTri;
178 benjamin 11
import org.tela_botanica.del.client.modeles.Protocole;
148 benjamin 12
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
178 benjamin 13
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
344 aurelien 14
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
291 benjamin 15
import org.tela_botanica.del.client.services.rest.ProtocoleService;
9 benjamin 16
import org.tela_botanica.del.client.utils.MockDatasource;
335 benjamin 17
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImagePresenteur;
379 gduche 18
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImageVue;
9 benjamin 19
 
178 benjamin 20
import com.google.gwt.event.dom.client.ChangeEvent;
21
import com.google.gwt.event.dom.client.ChangeHandler;
455 benjamin 22
import com.google.gwt.event.dom.client.ClickEvent;
23
import com.google.gwt.event.dom.client.ClickHandler;
277 gduche 24
import com.google.gwt.event.dom.client.HasChangeHandlers;
455 benjamin 25
import com.google.gwt.event.dom.client.HasClickHandlers;
9 benjamin 26
import com.google.gwt.user.client.ui.HasWidgets;
277 gduche 27
import com.google.gwt.user.client.ui.IsWidget;
9 benjamin 28
 
323 gduche 29
public class MoteurRechercheImagePresenteur {
9 benjamin 30
 
277 gduche 31
	public interface Vue extends IsWidget {
335 benjamin 32
 
387 aurelien 33
		public void ajouterProtocole(String protocole);
455 benjamin 34
 
387 aurelien 35
		public void selectionnerProtocole(int index);
455 benjamin 36
 
387 aurelien 37
		public HasChangeHandlers getListeProtocoles();
455 benjamin 38
 
387 aurelien 39
		public HasWidgets getZoneResultats();
455 benjamin 40
 
387 aurelien 41
		public HasWidgets getZoneRecherche();
455 benjamin 42
 
387 aurelien 43
		public String getNomProtocolSelectionne();
455 benjamin 44
 
454 aurelien 45
		public int getIdProtocoleSelectionne();
455 benjamin 46
 
454 aurelien 47
		public void ajouterVue(HasWidgets composite);
455 benjamin 48
 
49
		public HasClickHandlers getTriParNbVotesAscendant();
50
 
51
		public HasClickHandlers getTriParNbVotesDescendant();
52
 
53
		public HasClickHandlers getTriParDateAscendant();
54
 
55
		public HasClickHandlers getTriParDateDescendant();
277 gduche 56
	}
335 benjamin 57
 
277 gduche 58
	private Vue vue;
335 benjamin 59
 
291 benjamin 60
	private final ProtocoleService protocoleService = MockDatasource.getInstance();
311 gduche 61
	private List<Protocole> protocoles;
335 benjamin 62
 
63
	// TODO : passer ça en cache
405 gduche 64
	private String protocoleParDefaut = Protocole.ESTHETISME;
335 benjamin 65
 
277 gduche 66
	/**
67
	 * Constructeur
68
	 * */
323 gduche 69
	public MoteurRechercheImagePresenteur(Vue vue) {
277 gduche 70
		this.vue = vue;
178 benjamin 71
		if (CacheClient.getInstance().getProtocoleCourant() == null) {
291 benjamin 72
			CacheClient.getInstance().setProtocoleCourant(protocoleService.getProtocole(protocoleParDefaut));
178 benjamin 73
		}
454 aurelien 74
		gererEvenements();
75
		chargerProtocoles();
9 benjamin 76
	}
77
 
78
	public void go(HasWidgets composite) {
454 aurelien 79
		vue.ajouterVue(composite);
323 gduche 80
		chargerMoteurRechercheAvancee();
178 benjamin 81
	}
148 benjamin 82
 
178 benjamin 83
	private void chargerProtocoles() {
291 benjamin 84
		protocoles = protocoleService.getProtocoles();
178 benjamin 85
		for (Protocole protocole : protocoles) {
277 gduche 86
			vue.ajouterProtocole(protocole.getNom());
148 benjamin 87
		}
277 gduche 88
		vue.selectionnerProtocole(protocoles.indexOf(CacheClient.getInstance().getProtocoleCourant()));
9 benjamin 89
	}
90
 
26 gduche 91
	public void gererEvenements() {
9 benjamin 92
 
277 gduche 93
		vue.getListeProtocoles().addChangeHandler(new ChangeHandler() {
9 benjamin 94
 
124 gduche 95
			@Override
178 benjamin 96
			public void onChange(ChangeEvent event) {
454 aurelien 97
				surChangementProtocole();
124 gduche 98
			}
178 benjamin 99
		});
455 benjamin 100
 
101
		vue.getTriParNbVotesAscendant().addClickHandler(new ClickHandler() {
102
 
103
			@Override
104
			public void onClick(ClickEvent arg0) {
105
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
106
				informationsRechercheImages.setTriParNbVotes(ModeTri.TRI_ASCENDANT);
107
				chercherImages();
108
			}
109
		});
110
 
111
		vue.getTriParNbVotesDescendant().addClickHandler(new ClickHandler() {
112
 
113
			@Override
114
			public void onClick(ClickEvent arg0) {
115
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
116
				informationsRechercheImages.setTriParNbVotes(ModeTri.TRI_DESCENDANT);
117
				chercherImages();
118
			}
119
		});
120
 
121
		vue.getTriParDateAscendant().addClickHandler(new ClickHandler() {
122
 
123
			@Override
124
			public void onClick(ClickEvent arg0) {
125
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
126
				informationsRechercheImages.setTriParDate(ModeTri.TRI_ASCENDANT);
127
				chercherImages();
128
			}
129
		});
130
 
131
		vue.getTriParDateDescendant().addClickHandler(new ClickHandler() {
132
 
133
			@Override
134
			public void onClick(ClickEvent arg0) {
135
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
136
				informationsRechercheImages.setTriParDate(ModeTri.TRI_DESCENDANT);
137
				chercherImages();
138
			}
139
		});
9 benjamin 140
	}
455 benjamin 141
 
454 aurelien 142
	public void surChangementProtocole() {
143
		Protocole protocoleCourant = null;
144
		for (Protocole protocole : protocoles) {
145
			if (protocole.getId() == vue.getIdProtocoleSelectionne()) {
146
				protocoleCourant = protocole;
147
			}
148
		}
335 benjamin 149
 
454 aurelien 150
		CacheClient.getInstance().setProtocoleCourant(protocoleCourant);
151
		EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant);
152
		BusEvenementiel.getInstance().fireEvent(evenement);
153
	}
154
 
323 gduche 155
	public void chargerMoteurRechercheAvancee() {
453 aurelien 156
		MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(""), ModeRecherche.MODE_IMAGE) {
335 benjamin 157
			public void lancerRecherche() {
158
				chercherImages();
323 gduche 159
			}
160
		};
161
		presenteurRecherche.go(vue.getZoneRecherche());
9 benjamin 162
	}
335 benjamin 163
 
164
	public void chercherImages() {
359 benjamin 165
		vue.getZoneResultats().clear();
379 gduche 166
		new ResultatRechercheImagePresenteur(new ImageServiceConcret(), new ResultatRechercheImageVue()).go(vue.getZoneResultats());
335 benjamin 167
	}
168
 
278 gduche 169
	public HasWidgets getZoneResultats() {
170
		return vue.getZoneResultats();
9 benjamin 171
	}
172
}