Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 444 → Rev 445

/trunk/src/org/tela_botanica/del/test/composants/pagination/PaginationPresenteurTest.java
1,11 → 1,10
package org.tela_botanica.del.test.composants.pagination;
 
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
 
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
18,22 → 17,22
import com.google.gwt.user.client.ui.HasWidgets;
 
public class PaginationPresenteurTest {
 
PaginationPresenteur paginationHautPresenteur;
PaginationPresenteur paginationBasPresenteur;
 
PaginationPresenteur paginationPresenteurSeul;
 
boolean boutonPremierePageEstAffiche;
boolean boutonDernierePageEstAffiche;
@Before
 
@Before
public void setUp() {
PaginationPresenteur.Vue vueBas = creerMockVuePaginationPresenteurBasique();
this.paginationBasPresenteur = new PaginationPresenteur(vueBas, 100, 10) {
PaginationPresenteur.Vue vueBas = creerMockVuePaginationPresenteurBasique();
this.paginationBasPresenteur = new PaginationPresenteur(vueBas, 100, 10, 1) {
@Override
public void changerPage(int debut, int fin) {
//TODO: tester avec des données factices, est-ce utile ici ?
public void chargerElements(int debut, int fin) {
// TODO: tester avec des données factices, est-ce utile ici ?
}
 
@Override
40,102 → 39,68
public void actualiserPasCache(int pas) {
CacheClient.getInstance().setPasPagination(pas);
}
@Override
public void synchroniser() {
paginationHautPresenteur.setPas(getPas());
paginationHautPresenteur.setPageCourante(getPageCourante());
paginationHautPresenteur.setNbPages(getNbPages());
paginationHautPresenteur.actualiserLiens();
}
 
};
 
PaginationPresenteur.Vue vueHaut = creerMockVuePaginationPresenteurBasique();
this.paginationHautPresenteur = new PaginationPresenteur(vueHaut,100, 10) {
this.paginationHautPresenteur = new PaginationPresenteur(vueHaut, 100, 10, 1) {
 
@Override
public void changerPage(int debut, int fin) {
public void chargerElements(int debut, int fin) {
 
}
 
@Override
public void actualiserPasCache(int pas) {
 
}
 
@Override
public void synchroniser() {
paginationBasPresenteur.setPas(getPas());
paginationBasPresenteur.setPageCourante(getPageCourante());
paginationBasPresenteur.setNbPages(getNbPages());
paginationBasPresenteur.actualiserLiens();
}
};
 
PaginationPresenteur.Vue vueSeule = creerMockVuePaginationPresenteurBasique();
this.paginationPresenteurSeul = new PaginationPresenteur(vueSeule, 100, 10) {
this.paginationPresenteurSeul = new PaginationPresenteur(vueSeule, 100, 10, 1) {
@Override
public void changerPage(int debut, int fin) {}
public void chargerElements(int debut, int fin) {
}
 
@Override
public void actualiserPasCache(int pas) {}
@Override
public void synchroniser() {}
public void actualiserPasCache(int pas) {
}
 
};
}
@Test
public void testSynchroWidgetPagination() {
HasWidgets conteneur = Mockito.mock(HasWidgets.class);
paginationBasPresenteur.go(conteneur);
paginationHautPresenteur.go(conteneur);
 
assertEquals(1, paginationHautPresenteur.getPageCourante());
assertEquals(1, paginationBasPresenteur.getPageCourante());
paginationHautPresenteur.changerPas(20);
paginationHautPresenteur.synchroniser();
assertEquals(20, paginationBasPresenteur.getPas());
assertEquals(20, paginationHautPresenteur.getPas());
paginationBasPresenteur.setPageCourante(4);
paginationBasPresenteur.changerPage(4*20,5*20);
paginationBasPresenteur.synchroniser();
assertEquals(4, paginationHautPresenteur.getPageCourante());
paginationBasPresenteur.changerPas(10);
paginationBasPresenteur.synchroniser();
assertEquals(8, paginationHautPresenteur.getPageCourante());
assertEquals(8, paginationBasPresenteur.getPageCourante());
}
@Test
public void testAffichageBoutonPremiereDernierePage() {
 
mockerMethodeAffichageBoutons(paginationPresenteurSeul.getVue());
//TODO: voir comment mocker ces méthodes avec Benjamin car le test ne passe alors que
 
// TODO: voir comment mocker ces méthodes avec Benjamin car le test ne
// passe alors que
// ça fonctionne en pratique
paginationPresenteurSeul.premierePage();
paginationPresenteurSeul.afficherLaPremierePage();
assertEquals(1, paginationPresenteurSeul.getPageCourante());
/*assertEquals(false, paginationPresenteurSeul.getVue().boutonPrecedentEstAffiche());
assertEquals(true, paginationPresenteurSeul.getVue().boutonSuivantEstAffiche());*/
paginationPresenteurSeul.dernierePage();
/*
* assertEquals(false,
* paginationPresenteurSeul.getVue().boutonPrecedentEstAffiche());
* assertEquals(true,
* paginationPresenteurSeul.getVue().boutonSuivantEstAffiche());
*/
 
paginationPresenteurSeul.afficherlaDernierePage();
assertEquals(9, paginationPresenteurSeul.getPageCourante());
/*assertEquals(false, paginationPresenteurSeul.getVue().boutonPrecedentEstAffiche());
assertEquals(false, paginationPresenteurSeul.getVue().boutonSuivantEstAffiche());*/
/*
* assertEquals(false,
* paginationPresenteurSeul.getVue().boutonPrecedentEstAffiche());
* assertEquals(false,
* paginationPresenteurSeul.getVue().boutonSuivantEstAffiche());
*/
 
}
 
private PaginationPresenteur.Vue creerMockVuePaginationPresenteurBasique() {
PaginationPresenteur.Vue vueMock = Mockito.mock(PaginationPresenteur.Vue.class);
 
PaginationPresenteur.Vue vueMock = Mockito.mock(PaginationPresenteur.Vue.class);
HasWidgets zoneLiens = Mockito.mock(HasWidgets.class);
HasChangeHandlers selecteurPas = Mockito.mock(HasChangeHandlers.class);
HasClickHandlers boutonPrecedent = Mockito.mock(HasClickHandlers.class);
142,7 → 107,7
HasClickHandlers boutonSuivant = Mockito.mock(HasClickHandlers.class);
HasClickHandlers boutonPremierePage = Mockito.mock(HasClickHandlers.class);
HasClickHandlers boutonDernierePage = Mockito.mock(HasClickHandlers.class);
 
when(vueMock.getZoneLiens()).thenReturn(zoneLiens);
when(vueMock.getSelecteurPas()).thenReturn(selecteurPas);
when(vueMock.getBoutonPrecedent()).thenReturn(boutonPrecedent);
149,41 → 114,41
when(vueMock.getBoutonSuivant()).thenReturn(boutonSuivant);
when(vueMock.getBoutonPremierePage()).thenReturn(boutonPremierePage);
when(vueMock.getBoutonDernierePage()).thenReturn(boutonDernierePage);
 
return vueMock;
}
 
private void mockerMethodeAffichageBoutons(Vue vueMock) {
 
when(vueMock.boutonPrecedentEstAffiche()).thenReturn(boutonPremierePageEstAffiche);
when(vueMock.boutonSuivantEstAffiche()).thenReturn(boutonDernierePageEstAffiche);
 
Mockito.doAnswer(new Answer<Object>() {
public Object answer(InvocationOnMock invocation) {
boutonPremierePageEstAffiche = true;
return boutonPremierePageEstAffiche;
}})
.when(vueMock).afficherBoutonPrecedent();
public Object answer(InvocationOnMock invocation) {
boutonPremierePageEstAffiche = true;
return boutonPremierePageEstAffiche;
}
}).when(vueMock).afficherBoutonPrecedent();
 
Mockito.doAnswer(new Answer<Object>() {
public Object answer(InvocationOnMock invocation) {
boutonDernierePageEstAffiche = true;
return boutonDernierePageEstAffiche;
}})
.when(vueMock).afficherBoutonSuivant();
public Object answer(InvocationOnMock invocation) {
boutonDernierePageEstAffiche = true;
return boutonDernierePageEstAffiche;
}
}).when(vueMock).afficherBoutonSuivant();
 
Mockito.doAnswer(new Answer<Object>() {
public Object answer(InvocationOnMock invocation) {
boutonPremierePageEstAffiche = false;
return boutonPremierePageEstAffiche;
}})
.when(vueMock).masquerBoutonPrecedent();
public Object answer(InvocationOnMock invocation) {
boutonPremierePageEstAffiche = false;
return boutonPremierePageEstAffiche;
}
}).when(vueMock).masquerBoutonPrecedent();
 
Mockito.doAnswer(new Answer<Object>() {
public Object answer(InvocationOnMock invocation) {
boutonDernierePageEstAffiche = false;
return boutonDernierePageEstAffiche;
}})
.when(vueMock).masquerBoutonSuivant();
public Object answer(InvocationOnMock invocation) {
boutonDernierePageEstAffiche = false;
return boutonDernierePageEstAffiche;
}
}).when(vueMock).masquerBoutonSuivant();
}
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/detailsimage/EvenementRechercheImage.java
1,9 → 1,5
package org.tela_botanica.del.client.navigation.evenement.detailsimage;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Image;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementRechercheImage extends GwtEvent<GestionnaireEvenementRechercheImage> {
/trunk/src/org/tela_botanica/del/client/navigation/evenement/pagination/EvenementChangementPas.java
New file
0,0 → 1,33
package org.tela_botanica.del.client.navigation.evenement.pagination;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementChangementPas extends GwtEvent<GestionnaireEvenementChangementPas> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPas> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPas>();
 
private int pas;
 
public EvenementChangementPas(int pas) {
this.pas = pas;
}
 
@Override
protected void dispatch(GestionnaireEvenementChangementPas handler) {
handler.onChangementPas(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPas> getAssociatedType() {
return TYPE;
}
 
public int getPas() {
return pas;
}
 
public void setPas(int pas) {
this.pas = pas;
}
 
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/pagination/GestionnaireEvenementChangementPage.java
New file
0,0 → 1,7
package org.tela_botanica.del.client.navigation.evenement.pagination;
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementChangementPage extends EventHandler {
public void onChangementPage(EvenementChangementPage event);
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/pagination/GestionnaireEvenementChangementPas.java
New file
0,0 → 1,7
package org.tela_botanica.del.client.navigation.evenement.pagination;
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementChangementPas extends EventHandler {
public void onChangementPas(EvenementChangementPas event);
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/pagination/EvenementChangementPage.java
New file
0,0 → 1,32
package org.tela_botanica.del.client.navigation.evenement.pagination;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementChangementPage extends GwtEvent<GestionnaireEvenementChangementPage> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPage> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPage>();
 
private int pageAAfficher;
 
public EvenementChangementPage(int pageAAfficher) {
this.pageAAfficher = pageAAfficher;
}
 
@Override
protected void dispatch(GestionnaireEvenementChangementPage handler) {
handler.onChangementPage(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPage> getAssociatedType() {
return TYPE;
}
 
public int getPageAAfficher() {
return pageAAfficher;
}
 
public void setPageAAfficher(int pageAAfficher) {
this.pageAAfficher = pageAAfficher;
}
}
/trunk/src/org/tela_botanica/del/client/utils/MockDatasource.java
304,24 → 304,24
// }
 
 
int rand = (int) (Math.random() * 5);
for (int i = 0; i < rand; i++) {
VoteProtocole voteProtocole = new VoteProtocole();
voteProtocole.setProtocole(protocoles.get(0));
voteProtocole.setVote((int) (Math.random() * 5));
voteProtocole.setContributeur("aurelien");
voteProtocole.setDate(new Date());
VoteProtocole voteProtocole2 = new VoteProtocole();
voteProtocole2.setProtocole(protocoles.get(0));
voteProtocole2.setVote((int) (Math.random() * 5));
voteProtocole2.setContributeur("jpm");
voteProtocole2.setDate(new Date());
voteProtocolesLocal.add(voteProtocole);
voteProtocolesLocal.add(voteProtocole2);
}
return voteProtocolesLocal;
int rand = (int) (Math.random() * 5);
for (int i = 0; i < rand; i++) {
VoteProtocole voteProtocole = new VoteProtocole();
voteProtocole.setProtocole(protocoles.get(0));
voteProtocole.setVote((int) (Math.random() * 5));
voteProtocole.setContributeur("aurelien");
voteProtocole.setDate(new Date());
 
VoteProtocole voteProtocole2 = new VoteProtocole();
voteProtocole2.setProtocole(protocoles.get(0));
voteProtocole2.setVote((int) (Math.random() * 5));
voteProtocole2.setContributeur("jpm");
voteProtocole2.setDate(new Date());
 
voteProtocolesLocal.add(voteProtocole);
voteProtocolesLocal.add(voteProtocole2);
}
return voteProtocolesLocal;
}
 
/*
395,11 → 395,15
}
 
@Override
public ObservationServiceResultat getObservations(
InformationsRecherche informationsRecherche, int debut, int fin,
ObservationsCallback callback) {
public ObservationServiceResultat getObservations(InformationsRecherche informationsRecherche, int debut, int fin, ObservationsCallback callback) {
// TODO Auto-generated method stub
return null;
}
 
@Override
public void getImagesParObservation(String observationId, ImagesParTaxonCallback callback) {
// TODO Auto-generated method stub
}
 
}
/trunk/src/org/tela_botanica/del/client/cache/CacheClient.java
15,8 → 15,8
private int nbTotalImagesRecherchees = 0;
 
private int pasPagination = 10;
private int pageCouranteRechercheImage = 0;
private int pageCouranteRechercheObservations = 0;
private int pageCouranteRechercheImage = 1;
private int pageCouranteRechercheObservations = 1;
private InformationsRecherche informationsRechercheImage;
private InformationsRecherche informationsRechercheObservation;
 
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/MoteurRechercheImagePresenteur.java
5,7 → 5,6
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImagePresenteur.java
42,15 → 42,7
private Vue vue;
private List<ImagePresenteur> ImagePresenteurs = new ArrayList<ImagePresenteur>();
private ImageService imageService;
private PaginationPresenteur paginationHautPresenteur, paginationBasPresenteur;
 
/**
* Ceci sert à éviter que les deux présenteurs paginations fassent deux
* requêtes par changement de page En attendant d'en discuter avec les
* autres
*/
private boolean requeteEnCours = false;
 
public ResultatRechercheImagePresenteur(ImageService imageService, Vue vue) {
this.vue = vue;
this.imageService = imageService;
60,6 → 52,11
composite.add(vue.asWidget());
vue.startChargement();
 
rechercherImagesEtCreerWidgetPagination();
 
}
 
public void rechercherImagesEtCreerWidgetPagination() {
// appel du service d'image pour avoir le nb total d'elements pour la
// pagination
ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
66,13 → 63,12
@Override
public void surImagesRecues(ImageServiceResultat imagesRecues) {
creerWidgetPagination(imagesRecues.getNbTotalImagesPourLaRecherche());
afficherImages(imagesRecues, 0, CacheClient.getInstance().getPasPagination());
requeteEnCours = false;
int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();
int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();
afficherImages(imagesRecues, debut, fin);
}
};
requeteEnCours = true;
imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), 0, CacheClient.getInstance().getPasPagination(), callback);
 
}
 
private void chargerEtAfficherImages(final int premier, final int dernier) {
83,10 → 79,8
@Override
public void surImagesRecues(ImageServiceResultat imagesRecues) {
afficherImages(imagesRecues, premier, dernier);
requeteEnCours = false;
}
};
requeteEnCours = true;
imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), premier, dernier, callback);
 
}
113,28 → 107,18
 
private void creerWidgetPagination(int nbImages) {
 
this.paginationBasPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination()) {
@Override
public void changerPage(int debut, int fin) {
if (!requeteEnCours) {
chargerEtAfficherImages(debut, fin);
}
CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
}
PaginationPresenteur imagesPaginationPresenteurHaut = creerPresenteurPagination(nbImages);
PaginationPresenteur imagesPaginationPresenteurBas = creerPresenteurPagination(nbImages);
imagesPaginationPresenteurHaut.go(vue.getPanneauPaginationHaut());
imagesPaginationPresenteurBas.go(vue.getPanneauPagination());
}
 
public PaginationPresenteur creerPresenteurPagination(int nbImages) {
PaginationPresenteur imagesPaginationPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheImage()) {
@Override
public void actualiserPasCache(int pas) {
CacheClient.getInstance().setPasPagination(pas);
}
};
public void chargerElements(int debut, int fin) {
 
this.paginationHautPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination()) {
 
@Override
public void changerPage(int debut, int fin) {
if (!requeteEnCours) {
chargerEtAfficherImages(debut, fin);
}
chargerEtAfficherImages(debut, fin);
CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
}
 
142,9 → 126,7
public void actualiserPasCache(int pas) {
CacheClient.getInstance().setPasPagination(pas);
}
 
};
this.paginationBasPresenteur.go(vue.getPanneauPagination());
this.paginationHautPresenteur.go(vue.getPanneauPaginationHaut());
return imagesPaginationPresenteur;
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImagePresenteur.java
7,6 → 7,7
import org.tela_botanica.del.client.composants.fenetreOverlayDefilante.FenetreOverlayDefilanteVue;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.ImageServiceResultat;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
16,6 → 17,9
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementVoirDetailsImage;
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.GestionnaireEvenementVoirDetailsImage;
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
import org.tela_botanica.del.client.services.rest.ImageService;
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.vues.rechercheimages.vote.MoyenneVotePresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImagePresenteur;
93,10 → 97,24
}
 
private void lancerEvenementValidation() {
CacheClient.getInstance().setImageCourante(image);
Observation obs = image.getObservation();
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(obs));
CacheClient.getInstance().setImageCourante(image);
final Observation obs = image.getObservation();
 
// charge toutes les images de l'observation associee à l'observation en
// cours
ImageService imageService = new ImageServiceConcret();
imageService.getImagesParObservation(obs.getId(), new ImagesParTaxonCallback() {
 
@Override
public void surImagesRecues(ImageServiceResultat imagesRecues) {
//TODO a changer lorsque le service sera implementé de manière realiste
//par obs.setImages(imagesRecues.getImages());
obs.getImages().addAll(imagesRecues.getImages().subList(0, 9));
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(obs));
}
});
 
}
protected void gererEvenements() {
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationPresenteur.java
12,8 → 12,6
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
import org.tela_botanica.del.client.vues.plateformedetermination.detail.DetailImageObservationPresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.detail.DetailImageObservationVue;
import org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition.FormulairePropositionPresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition.FormulairePropositionVue;
import org.tela_botanica.del.client.vues.plateformedetermination.formulairerechercheeflore.FormulaireRechercheEflorePresenteur;
28,7 → 26,6
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservations.css
4,5 → 4,4
.rechercheAvancee {border:solid 1px #333; padding:10px; -moz-border-radius:0 0 10px 10px; -moz-box-shadow:5px 5px 10px #EEE;position:absolute; width:700px; margin-top:5px; background:white}
.champRecherche {float:left; width:50%; padding-bottom:5px}
.recherchePrecedente {color:#555; padding:5px; font-style:italic}
.zoneObservation {width:100%; clear:left; margin-top:50px}
.entrerMotClef {margin-bottom:10px}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observationimages/ObservationImagesPresenteur.java
14,7 → 14,6
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
51,7 → 50,7
listeImages = observation.getImages();
 
imagePrincipale = CacheClient.getInstance().getImageCourante();
if(imagePrincipale == null) {
if(imagePrincipale != null) {
vue.chargerImagePrincipale(imagePrincipale);
} else if (listeImages.size() > 0){
vue.chargerImagePrincipale(listeImages.get(0));
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsVue.ui.xml
11,12 → 11,7
<g:HTMLPanel ui:field="zoneRecherche"/>
</g:HTMLPanel>
<g:HTMLPanel>
<g:VerticalPanel ui:field="zonePaginationHaut" />
<g:VerticalPanel ui:field="panneauChargement" >
<g:Image url="./img/wait.gif"></g:Image>
</g:VerticalPanel>
<g:HTMLPanel ui:field="zoneObservations" styleName="{style.zoneObservation}"/>
<g:VerticalPanel ui:field="zonePaginationBas" />
<g:VerticalPanel ui:field="zoneResultats" />
</g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsPresenteur.java
1,15 → 1,12
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
import org.tela_botanica.del.client.services.rest.ObservationService;
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
import org.tela_botanica.del.client.services.rest.ObservationServiceConcret;
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.ResultatsRechercheObservationsPresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.resultats.ResultatsRechercheObservationsVue;
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
16,22 → 13,10
 
public class RechercheObservationsPresenteur extends Presenteur {
 
private ObservationService serviceObs;
 
public abstract interface Vue extends IsWidget {
public HasWidgets getZoneRecherche();
 
public HasWidgets getZoneObservations();
 
public HasWidgets getZonePaginationHaut();
 
public HasWidgets getZonePaginationBas();
 
public void startChargement();
 
public void stopChargement();
 
public void nettoyer();
public HasWidgets getZoneResultats();
}
 
private Vue vue;
39,7 → 24,6
public RechercheObservationsPresenteur(ObservationService serviceObs, Vue vue) {
 
this.vue = vue;
this.serviceObs = serviceObs;
}
 
public void go(HasWidgets composite) {
47,15 → 31,6
composite.add(vue.asWidget());
ajouterMoteurRechercheAvancee();
 
ObservationsCallback callback = new ObservationsCallback() {
@Override
public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
afficherObservations(observationsRecues);
}
};
 
serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), 0, CacheClient.getInstance().getPasPagination(), callback);
}
 
protected void ajouterMoteurRechercheAvancee() {
64,69 → 39,18
 
@Override
public void lancerRecherche() {
chargerEtAfficherObservations(0, CacheClient.getInstance().getPasPagination());
chercherObservations();
}
};
presenteur.go(vue.getZoneRecherche());
}
 
protected void gererEvenements() {
public void chercherObservations() {
vue.getZoneResultats().clear();
new ResultatsRechercheObservationsPresenteur(new ObservationServiceConcret(), new ResultatsRechercheObservationsVue()).go(vue.getZoneResultats());
}
 
public void chargerEtAfficherObservations(int debut, int fin) {
vue.startChargement();
vue.nettoyer();
ObservationsCallback callback = new ObservationsCallback() {
 
@Override
public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
afficherObservations(observationsRecues);
}
};
serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
protected void gererEvenements() {
}
 
private void afficherObservations(ObservationServiceResultat observationServiceResultat) {
vue.nettoyer();
for (Observation observation : observationServiceResultat.getObservations()) {
ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
presenteur.go(vue.getZoneObservations());
}
vue.stopChargement();
}
 
private void creerWidgetPagination(int nbObservations) {
PaginationPresenteur paginationPresenteurHaut = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
 
@Override
public void changerPage(int debut, int fin) {
chargerEtAfficherObservations(debut, fin);
CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
}
 
@Override
public void actualiserPasCache(int pas) {
CacheClient.getInstance().setPasPagination(pas);
}
 
};
 
PaginationPresenteur paginationPresenteurBas = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
 
@Override
public void changerPage(int debut, int fin) {
chargerEtAfficherObservations(debut, fin);
CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
}
 
@Override
public void actualiserPasCache(int pas) {
CacheClient.getInstance().setPasPagination(pas);
}
 
};
paginationPresenteurHaut.go(vue.getZonePaginationHaut());
paginationPresenteurBas.go(vue.getZonePaginationBas());
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/ResultatsRechercheObservations.css
New file
0,0 → 1,0
.zoneObservation {width:100%; clear:left; margin-top:50px}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/ResultatsRechercheObservationsVue.ui.xml
New file
0,0 → 1,17
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'
ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
<ui:with field='res' type='org.tela_botanica.del.client.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
 
<ui:style src="ResultatsRechercheObservations.css" />
<g:HTMLPanel>
<g:HTMLPanel>
<g:VerticalPanel ui:field="zonePaginationHaut" />
<g:VerticalPanel ui:field="panneauChargement" >
<g:Image url="./img/wait.gif"></g:Image>
</g:VerticalPanel>
<g:HTMLPanel ui:field="zoneObservations" styleName="{style.zoneObservation}"/>
<g:VerticalPanel ui:field="zonePaginationBas" />
</g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/ResultatsRechercheObservationsPresenteur.java
New file
0,0 → 1,115
package org.tela_botanica.del.client.vues.rechercheobservations.resultats;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
import org.tela_botanica.del.client.services.rest.ObservationService;
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
import org.tela_botanica.del.client.vues.rechercheobservations.ObservationPresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.ObservationVue;
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class ResultatsRechercheObservationsPresenteur extends Presenteur {
 
private ObservationService serviceObs;
 
public abstract interface Vue extends IsWidget {
 
public HasWidgets getZoneObservations();
 
public HasWidgets getZonePaginationHaut();
 
public HasWidgets getZonePaginationBas();
 
public void startChargement();
 
public void stopChargement();
 
public void nettoyer();
}
 
private Vue vue;
 
public ResultatsRechercheObservationsPresenteur(ObservationService serviceObs, Vue vue) {
 
this.vue = vue;
this.serviceObs = serviceObs;
}
 
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
lancerRechercheEtCreerWidgetPagination();
}
 
protected void gererEvenements() {
}
 
public void chargerEtAfficherObservations(int debut, int fin) {
vue.startChargement();
vue.nettoyer();
ObservationsCallback callback = new ObservationsCallback() {
 
@Override
public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
afficherObservations(observationsRecues);
}
};
serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
}
 
private void afficherObservations(ObservationServiceResultat observationServiceResultat) {
vue.nettoyer();
for (Observation observation : observationServiceResultat.getObservations()) {
ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
presenteur.go(vue.getZoneObservations());
}
vue.stopChargement();
}
 
private void creerWidgetPagination(int nbObservations) {
vue.getZonePaginationHaut().clear();
vue.getZonePaginationBas().clear();
PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations);
PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations);
paginationPresenteurHaut.go(vue.getZonePaginationHaut());
paginationPresenteurBas.go(vue.getZonePaginationBas());
}
 
private PaginationPresenteur creerPresenteurPagination(int nbObservations) {
PaginationPresenteur paginationPresenteurHaut = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheObservations()) {
 
@Override
public void chargerElements(int debut, int fin) {
chargerEtAfficherObservations(debut, fin);
CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
}
 
@Override
public void actualiserPasCache(int pas) {
CacheClient.getInstance().setPasPagination(pas);
}
 
};
return paginationPresenteurHaut;
}
 
public void lancerRechercheEtCreerWidgetPagination() {
ObservationsCallback callback = new ObservationsCallback() {
@Override
public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
afficherObservations(observationsRecues);
}
};
 
int debut = (CacheClient.getInstance().getPageCouranteRechercheObservations() - 1) * CacheClient.getInstance().getPasPagination();
int fin = (CacheClient.getInstance().getPageCouranteRechercheObservations()) * CacheClient.getInstance().getPasPagination();
serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/ResultatsRechercheObservationsVue.java
New file
0,0 → 1,63
package org.tela_botanica.del.client.vues.rechercheobservations.resultats;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class ResultatsRechercheObservationsVue extends Composite implements ResultatsRechercheObservationsPresenteur.Vue {
 
@UiField
Panel panneauChargement;
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, ResultatsRechercheObservationsVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
Panel zoneObservations, zonePaginationHaut, zonePaginationBas;
 
// Constructeur de la vue
public ResultatsRechercheObservationsVue() {
initWidget(binder.createAndBindUi(this));
}
 
@Override
public HasWidgets getZoneObservations() {
return zoneObservations;
}
 
@Override
public HasWidgets getZonePaginationHaut() {
return zonePaginationHaut;
}
 
@Override
public HasWidgets getZonePaginationBas() {
return zonePaginationBas;
}
 
/**
* Nettoie et remet à zéro les composants du panneau qui doivent l'être
* */
@Override
public void nettoyer() {
zoneObservations.clear();
}
 
@Override
public void startChargement() {
panneauChargement.setHeight(zoneObservations.getOffsetHeight() + "px");
panneauChargement.setVisible(true);
}
 
@Override
public void stopChargement() {
panneauChargement.setVisible(false);
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsVue.java
10,9 → 10,6
 
public class RechercheObservationsVue extends Composite implements RechercheObservationsPresenteur.Vue {
 
@UiField
Panel panneauChargement;
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, RechercheObservationsVue> {
}
19,48 → 16,20
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField Panel zoneRecherche, zoneObservations, zonePaginationHaut, zonePaginationBas;
@UiField
Panel zoneRecherche, zoneResultats;
 
public HasWidgets getZoneRecherche() {
return zoneRecherche;
}
 
// Constructeur de la vue
public RechercheObservationsVue() {
initWidget(binder.createAndBindUi(this));
}
 
@Override
public HasWidgets getZoneObservations() {
return zoneObservations;
public Panel getZoneResultats() {
return zoneResultats;
}
 
@Override
public HasWidgets getZonePaginationHaut() {
return zonePaginationHaut;
}
 
@Override
public HasWidgets getZonePaginationBas() {
return zonePaginationBas;
}
/**
* Nettoie et remet à zéro les composants du panneau qui doivent l'être
* */
@Override
public void nettoyer() {
zoneObservations.clear();
}
 
@Override
public void startChargement() {
panneauChargement.setHeight(zoneObservations.getOffsetHeight()+"px");
panneauChargement.setVisible(true);
}
 
@Override
public void stopChargement() {
panneauChargement.setVisible(false);
}
}
/trunk/src/org/tela_botanica/del/client/services/rest/ObservationServiceConcret.java
1,6 → 1,8
package org.tela_botanica.del.client.services.rest;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.InformationsRecherche;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
 
7,13 → 9,12
import com.google.gwt.http.client.RequestBuilder;
 
public class ObservationServiceConcret implements ObservationService {
 
private String serverUrl = "/del/jrest/";
 
@Override
public ObservationServiceResultat getObservations(
InformationsRecherche infos, int debut, int fin, ObservationsCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, serverUrl+"Observations"+assemblerChaineRequete(infos, debut, fin));
public ObservationServiceResultat getObservations(InformationsRecherche infos, int debut, int fin, ObservationsCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, serverUrl + "Observations" + assemblerChaineRequete(infos, debut, fin));
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
21,14 → 22,14
}
return null;
}
 
private String assemblerChaineRequete(InformationsRecherche infos, int debut, int fin) {
String chaineRequete = "?debut="+debut+"&limite="+(fin-debut);
if(infos != null && infos.getTaxon() != null && !infos.getTaxon().trim().isEmpty()) {
chaineRequete += "nom_taxon="+infos.getTaxon()+chaineRequete;
 
String chaineRequete = "?debut=" + debut + "&limite=" + (fin - debut);
if (infos != null && infos.getTaxon() != null && !infos.getTaxon().trim().isEmpty()) {
chaineRequete += "nom_taxon=" + infos.getTaxon() + chaineRequete;
}
 
return chaineRequete;
}
 
/trunk/src/org/tela_botanica/del/client/services/rest/ObservationService.java
1,6 → 1,7
package org.tela_botanica.del.client.services.rest;
 
import org.tela_botanica.del.client.modeles.InformationsRecherche;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
 
/trunk/src/org/tela_botanica/del/client/services/rest/ImageServiceConcret.java
6,15 → 6,17
import com.google.gwt.http.client.RequestBuilder;
 
public class ImageServiceConcret implements ImageService {
 
private String serverUrl = "/del/jrest/";
 
@Override
public void getImagesEfloreParTaxon(String taxon, ImagesParTaxonCallback callback) {
//RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, serverUrl+"ImagesEflore");
//adresse ajoutee temporairement le temps de faire fonctionner le service d'images eflore
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, serverUrl+"Images?nom_taxon="+taxon);
 
// RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,
// serverUrl+"ImagesEflore");
// adresse ajoutee temporairement le temps de faire fonctionner le
// service d'images eflore
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, serverUrl + "Images?nom_taxon=" + taxon);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
24,7 → 26,7
 
@Override
public void getImagesParTaxon(InformationsRecherche infos, int debut, int fin, ImagesParTaxonCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, serverUrl+"Images"+assemblerChaineRequete(infos, debut, fin));
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, serverUrl + "Images" + assemblerChaineRequete(infos, debut, fin));
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
31,14 → 33,19
// TODO: handle exception
}
}
 
public void getImagesParObservation(String observationId, ImagesParTaxonCallback callback) {
// TODO implementer avec une methode realiste
getImagesEfloreParTaxon("", callback);
}
 
private String assemblerChaineRequete(InformationsRecherche infos, int debut, int fin) {
String chaineRequete = "?debut="+debut+"&limite="+(fin-debut);
if(infos != null && infos.getTaxon() != null && !infos.getTaxon().trim().isEmpty()) {
chaineRequete += "nom_taxon="+infos.getTaxon()+chaineRequete;
 
String chaineRequete = "?debut=" + debut + "&limite=" + (fin - debut);
if (infos != null && infos.getTaxon() != null && !infos.getTaxon().trim().isEmpty()) {
chaineRequete += "nom_taxon=" + infos.getTaxon() + chaineRequete;
}
 
return chaineRequete;
}
}
/trunk/src/org/tela_botanica/del/client/services/rest/ImageService.java
5,8 → 5,10
 
public interface ImageService {
 
public abstract void getImagesEfloreParTaxon(String nomTaxon, ImagesParTaxonCallback callback);
public void getImagesEfloreParTaxon(String nomTaxon, ImagesParTaxonCallback callback);
 
public abstract void getImagesParTaxon(InformationsRecherche informationsRecherche, int debut, int fin, ImagesParTaxonCallback callback);
public void getImagesParTaxon(InformationsRecherche informationsRecherche, int debut, int fin, ImagesParTaxonCallback callback);
 
public void getImagesParObservation(String observationId, ImagesParTaxonCallback callback);
 
}
/trunk/src/org/tela_botanica/del/client/composants/moteurrecherche/MoteurRecherchePresenteur.java
65,11 → 65,9
public HasText getDate();
 
public void chargerValeursRecherchePrecedente(InformationsRecherche informationsRecherche);
public void chargerValeursRechercheSimplePrecedente(InformationsRecherche informationsRecherche);
 
public void focusSaisie();
 
public void nettoyer();
}
 
78,18 → 76,15
 
private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
 
public MoteurRecherchePresenteur(Vue vue, boolean pourRechercheImages,
boolean pourRechercheObservations) {
public MoteurRecherchePresenteur(Vue vue, boolean pourRechercheImages, boolean pourRechercheObservations) {
this.vue = vue;
this.pourRechercheImages = pourRechercheImages;
this.pourRechercheObservations = pourRechercheObservations;
 
autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(
UtilitairesAutoCompletionService.urlServiceCompletionNomLocale) {
autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(UtilitairesAutoCompletionService.urlServiceCompletionNomLocale) {
 
protected String effectuerPreTraitementChaineRequete(String requete) {
return UtilitairesAutoCompletionService
.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
// A décommenter lors de l'utilisation des web services eflore
// return
// RetourAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceEflore(requete);
97,8 → 92,7
 
@Override
protected String[] parserResultatRequete(Response response) {
return UtilitairesAutoCompletionService
.parserRetourSimple(response);
return UtilitairesAutoCompletionService.parserRetourSimple(response);
// A décommenter lors de l'utilisation des web services eflore
// return RetourAutoCompletionService.parserRetourOss(response);
}
125,7 → 119,7
vue.getBoutonRechercheSimple().addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
collecterInfosRecherche();
afficherRequeteEtLancerRechercheSimple();
afficherRequeteEtLancerRecherche();
}
});
 
141,10 → 135,10
 
@Override
public void onClick(ClickEvent event) {
 
autoCompletionNomTaxonsPresenteur.nettoyer();
vue.nettoyer();
 
InformationsRecherche infosRecherche = new InformationsRecherche();
if (isPourRechercheImages()) {
CacheClient.getInstance().setInformationsRechercheImage(infosRecherche);
167,7 → 161,7
public void onKeyPress(KeyPressEvent event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
collecterInfosRecherche();
afficherRequeteEtLancerRechercheSimple();
afficherRequeteEtLancerRecherche();
}
}
});
176,8 → 170,7
 
@Override
public void onClick(ClickEvent event) {
if (vue.getValeurRechercheSimple().equals(
vue.getLabelRecherche())) {
if (vue.getValeurRechercheSimple().equals(vue.getLabelRecherche())) {
vue.setValeurRechercheSimple("");
}
}
195,18 → 188,12
informationRecherche.setMotClef(vue.getMotCle().getText());
informationRecherche.setAuteur(vue.getAuteur().getText());
informationRecherche.setDate(vue.getDate().getText());
if (!vue.getRecherchePrincipale().getText()
.equals(vue.getLabelRecherche())) {
informationRecherche.setRechercheLibre(vue.getRecherchePrincipale()
.getText());
}
informationRecherche.setRechercheLibre(vue.getRecherchePrincipale().getText());
 
if (isPourRechercheImages()) {
CacheClient.getInstance().setInformationsRechercheImage(
informationRecherche);
CacheClient.getInstance().setInformationsRechercheImage(informationRecherche);
} else if (isPourRechercheObservations()) {
CacheClient.getInstance().setInformationsRechercheObservation(
informationRecherche);
CacheClient.getInstance().setInformationsRechercheObservation(informationRecherche);
}
}
 
214,20 → 201,11
if (isPourRechercheImages()) {
return CacheClient.getInstance().getInformationsRechercheImage();
} else if (isPourRechercheObservations()) {
return CacheClient.getInstance()
.getInformationsRechercheObservation();
return CacheClient.getInstance().getInformationsRechercheObservation();
}
return null;
}
 
public void afficherRequeteEtLancerRechercheSimple() {
InformationsRecherche informationsRecherche = getInformationsRechercheEnCache();
if (informationsRecherche != null) {
vue.chargerValeursRechercheSimplePrecedente(informationsRecherche);
}
lancerRecherche();
}
public void afficherRequeteEtLancerRecherche() {
InformationsRecherche informationsRecherche = getInformationsRechercheEnCache();
if (informationsRecherche != null) {
237,7 → 215,7
lancerRecherche();
}
 
public abstract void lancerRecherche();
public abstract void lancerRecherche();
 
public boolean isPourRechercheImages() {
return pourRechercheImages;
/trunk/src/org/tela_botanica/del/client/composants/moteurrecherche/MoteurRechercheVue.java
61,12 → 61,12
public HasClickHandlers getBoutonRechercheSimple() {
return boutonRecherche;
}
 
@Override
public HasClickHandlers getBoutonFermer() {
return boutonFermer;
}
 
@Override
public HasClickHandlers getBoutonVider() {
return boutonVider;
97,18 → 97,8
recherchePrincipale.setText(valeurRecherche);
}
 
public void chargerValeursRechercheSimplePrecedente(InformationsRecherche informationsRecherche) {
 
this.nettoyer();
if (informationsRecherche.getRechercheLibre() != null && !informationsRecherche.getRechercheLibre().equals("")) {
getRecherchePrincipale().setText(informationsRecherche.getRechercheLibre());
}
afficherLigneInfoRecherche(informationsRecherche);
}
 
public void chargerValeursRecherchePrecedente(InformationsRecherche informationsRecherche) {
informationsRecherche.setRechercheLibre(null);
getRecherchePrincipale().setText("");
getRecherchePrincipale().setText(informationsRecherche.getRechercheLibre());
getDepartement().setText(informationsRecherche.getDepartement());
getCommune().setText(informationsRecherche.getCommune());
getFamille().setText(informationsRecherche.getFamille());
117,7 → 107,7
getMotCle().setText(informationsRecherche.getMotClef());
getAuteur().setText(informationsRecherche.getAuteur());
getDate().setText(informationsRecherche.getDate());
 
afficherLigneInfoRecherche(informationsRecherche);
}
 
129,42 → 119,40
*/
private void afficherLigneInfoRecherche(InformationsRecherche informationRecherche) {
 
//tax dep com fam gen ta mo au date
// tax dep com fam gen ta mo au date
StringBuffer texteRecherchePrecedente = new StringBuffer();
if (informationRecherche.getRechercheLibre()!=null&&!informationRecherche.getRechercheLibre().equals("")) {
 
if (informationRecherche.getRechercheLibre() != null && !informationRecherche.getRechercheLibre().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().rechercheLibre() + ":" + informationRecherche.getRechercheLibre() + " ");
}
if (informationRecherche.getTaxon() != null&&!informationRecherche.getTaxon().equals("")) {
if (informationRecherche.getTaxon() != null && !informationRecherche.getTaxon().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().taxon() + ":" + informationRecherche.getTaxon() + " ");
}
if (informationRecherche.getDepartement()!=null && !informationRecherche.getDepartement().equals("")) {
if (informationRecherche.getDepartement() != null && !informationRecherche.getDepartement().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().departement() + ":" + informationRecherche.getDepartement() + " ");
}
if (informationRecherche.getCommune()!=null && !informationRecherche.getCommune().equals("")) {
if (informationRecherche.getCommune() != null && !informationRecherche.getCommune().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().commune() + ":" + informationRecherche.getCommune() + " ");
}
if (informationRecherche.getFamille()!=null && !informationRecherche.getFamille().equals("")) {
if (informationRecherche.getFamille() != null && !informationRecherche.getFamille().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().famille() + ":" + informationRecherche.getFamille() + " ");
}
if (informationRecherche.getGenre()!=null && !informationRecherche.getGenre().equals("")) {
if (informationRecherche.getGenre() != null && !informationRecherche.getGenre().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().genre() + ":" + informationRecherche.getGenre() + " ");
}
if (informationRecherche.getTag()!=null && !informationRecherche.getTag().equals("")) {
if (informationRecherche.getTag() != null && !informationRecherche.getTag().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().tag() + ":" + informationRecherche.getTag() + " ");
}
if (informationRecherche.getMotClef()!=null && !informationRecherche.getMotClef().equals("")) {
if (informationRecherche.getMotClef() != null && !informationRecherche.getMotClef().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().mot_clef() + ":" + informationRecherche.getMotClef() + " ");
}
if (informationRecherche.getAuteur()!=null && !informationRecherche.getAuteur().equals("")) {
if (informationRecherche.getAuteur() != null && !informationRecherche.getAuteur().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().auteur() + ":" + informationRecherche.getAuteur() + " ");
}
if (informationRecherche.getDate()!=null && !informationRecherche.getDate().equals("")) {
if (informationRecherche.getDate() != null && !informationRecherche.getDate().equals("")) {
texteRecherchePrecedente.append(I18n.getVocabulary().date() + ":" + informationRecherche.getDate() + " ");
}
 
recherchePrecedente.setText(texteRecherchePrecedente.toString());
}
 
171,7 → 159,7
public void nettoyer() {
chargerValeursRecherchePrecedente(new InformationsRecherche());
}
 
public HasText getRecherchePrincipale() {
return recherchePrincipale;
}
/trunk/src/org/tela_botanica/del/client/composants/pagination/PaginationPresenteur.java
1,5 → 1,11
package org.tela_botanica.del.client.composants.pagination;
 
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.pagination.EvenementChangementPage;
import org.tela_botanica.del.client.navigation.evenement.pagination.EvenementChangementPas;
import org.tela_botanica.del.client.navigation.evenement.pagination.GestionnaireEvenementChangementPage;
import org.tela_botanica.del.client.navigation.evenement.pagination.GestionnaireEvenementChangementPas;
 
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
21,7 → 27,6
public abstract class PaginationPresenteur {
 
public interface Vue extends IsWidget {
 
public HasWidgets getZoneLiens();
 
public int getNbWidgetsZoneLiens();
58,11 → 63,13
 
public int getPasSelectionne();
 
public void changerSelecteurPas(int index);
public void afficherPas(int pas);
 
public void mettreEnValeurPageActive(int pageActive);
}
 
private Vue vue;
private int nbPage;
private int nbPage = 1;
private int pageCourante = 1;
private int nbElementsTotal = 0;
private int pas = 10;
75,10 → 82,11
* @param pas
* : le nombre d'éléments à afficher par page
* */
public PaginationPresenteur(Vue vue, int nbElementsTotal, int pas) {
public PaginationPresenteur(Vue vue, int nbElementsTotal, int pas, int pageCourante) {
this.nbElementsTotal = nbElementsTotal;
this.vue = vue;
changerPas(this.pas);
this.pas = pas;
this.pageCourante = pageCourante;
}
 
/**
88,140 → 96,22
* : la vue ou éxécuter l'affichage
*/
public void go(HasWidgets container) {
gererEvenementsBoutonsStatiques();
actualiserLiens();
container.add(vue.asWidget());
gererEvenements();
actualiserLiensPagesPagination();
actualiserPas();
}
 
/** Met à jour le nombre de page en fonction du pas */
public void actualiserNbPage() {
Double nombrePages = Math.ceil((double) nbElementsTotal / (double) pas);
this.nbPage = nombrePages.intValue();
}
 
public void setNbPages(int nbPages) {
this.nbPage = nbPages;
}
 
public int getNbPages() {
return nbPage;
}
 
public Vue getVue() {
return vue;
}
 
/**
* Changer le pas de la pagination
*
* @param pas
* : le nombre d'éléments à afficher par page
*/
public void changerPas(int pas) {
int ancienPas = this.pas;
setPas(pas);
actualiserNbPage();
gererDecalagePageCourante(ancienPas, pas);
changerPage(pas * (pageCourante - 1), pas * pageCourante);
actualiserLiens();
actualiserPasCache(pas);
}
 
public void setPas(int pas) {
this.pas = pas;
switch (pas) {
case 5:
vue.changerSelecteurPas(0);
break;
case 10:
vue.changerSelecteurPas(1);
break;
case 15:
vue.changerSelecteurPas(2);
break;
case 20:
vue.changerSelecteurPas(3);
break;
default:
break;
}
}
 
private void gererDecalagePageCourante(int ancienPas, int nouveauPas) {
if (ancienPas != nouveauPas) {
double rapportPas = (double) ancienPas / (double) nouveauPas;
pageCourante = (int) (Math.ceil((double) pageCourante * (double) rapportPas));
}
}
 
/**
* Actualiser les liens pour n'afficher 5 avant et 5 après
* */
public void actualiserLiens() {
 
HasWidgets zoneLiens = vue.getZoneLiens();
zoneLiens.clear();
 
int pageDebut = pagesAvant();
int pageFin = pagesApres();
 
for (int i = pageDebut; i < pageFin; i++) {
vue.ajouterBoutonZoneLiens(i + "");
}
setBoutonActif();
gererEvenementsBoutonsDynamiques();
}
 
private int pagesAvant() {
int pageDebut = pageCourante - 5;
if (pageDebut < 1) {
pageDebut = 1;
}
if (pageCourante == 1) {
vue.masquerBoutonPrecedent();
} else {
vue.afficherBoutonPrecedent();
}
return pageDebut;
}
 
private int pagesApres() {
int pageFin = pageCourante + 5;
vue.afficherBoutonSuivant();
if (pageFin > nbPage) {
pageFin = nbPage;
}
if (pageCourante == nbPage - 1) {
vue.masquerBoutonSuivant();
} else {
vue.afficherBoutonSuivant();
}
 
return pageFin;
}
 
private void setBoutonActif() {
int nbLiens = vue.getNbWidgetsZoneLiens();
for (int i = 0; i < nbLiens; i++) {
HasText boutonCourant = vue.getWidgetZoneLiensAsText(i);
if (boutonCourant.getText().equals(String.valueOf(pageCourante))) {
vue.changerStyleBoutonZoneLiens(i, "actif");
} else {
vue.changerStyleBoutonZoneLiens(i, "inactif");
}
}
}
 
/**
* Gérer les évènements sur les boutons statiques (précédent, suivant et
* selecteur pas)
* */
public void gererEvenementsBoutonsStatiques() {
protected void gererEvenements() {
vue.getSelecteurPas().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
changerPas(vue.getPasSelectionne());
synchroniser();
chargerElements(0, vue.getPasSelectionne());
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPas(vue.getPasSelectionne()));
}
});
 
228,7 → 118,7
vue.getBoutonPrecedent().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
pagePrecedente();
allerALaPagePrecedente();
}
});
 
235,7 → 125,7
vue.getBoutonSuivant().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
pageSuivante();
allerALapageSuivante();
}
});
 
242,7 → 132,7
vue.getBoutonPremierePage().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
premierePage();
afficherLaPremierePage();
}
});
 
249,9 → 139,34
vue.getBoutonDernierePage().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
dernierePage();
afficherlaDernierePage();
}
});
 
BusEvenementiel.getInstance().addHandler(EvenementChangementPage.TYPE, new GestionnaireEvenementChangementPage() {
 
@Override
public void onChangementPage(EvenementChangementPage event) {
pageCourante = event.getPageAAfficher();
mettreEnValeurPageCourante();
}
});
 
BusEvenementiel.getInstance().addHandler(EvenementChangementPas.TYPE, new GestionnaireEvenementChangementPas() {
 
@Override
public void onChangementPas(EvenementChangementPas event) {
 
// remet la page a zero lors du changement de pas
pageCourante = 1;
 
// modifie le pas et les liens en fonction
pas = event.getPas();
actualiserPas();
actualiserLiensPagesPagination();
 
}
});
}
 
/**
258,7 → 173,7
* Gérer les évènements sur les boutons dynamiques (qui sont recréés à
* chaque fois)
* */
public void gererEvenementsBoutonsDynamiques() {
private void gererEvenementsBoutonsDynamiques() {
int nbLiens = vue.getNbWidgetsZoneLiens();
for (int i = 0; i < nbLiens; i++) {
HasClickHandlers boutonCourant = vue.getWidgetZoneLiensHasClickHandlers(i);
266,60 → 181,37
@Override
public void onClick(ClickEvent event) {
HasText boutonCourant = (HasText) event.getSource();
pageCourante = Integer.parseInt(boutonCourant.getText());
int debut = (Integer.parseInt(boutonCourant.getText()) - 1) * pas;
int fin = (debut + pas);
setBoutonActif();
changerPage(debut, fin);
actualiserLiens();
synchroniser();
int pageAAfficher = Integer.parseInt(boutonCourant.getText());
chargerElements(pas * (pageAAfficher - 1), pas * (pageAAfficher));
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher));
}
});
}
}
 
public void premierePage() {
if (pageCourante > 1) {
pageCourante = 1;
int debut = (pageCourante - 1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
synchroniser();
}
public void actualiserPas() {
actualiserPasCache(pas);
vue.afficherPas(pas);
}
 
public void dernierePage() {
if (pageCourante < nbPage - 1) {
pageCourante = nbPage - 1;
int debut = (pageCourante - 1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
synchroniser();
}
}
/**
* Actualiser les liens pour n'afficher 5 avant et 5 après
* */
public void actualiserLiensPagesPagination() {
 
public void pageSuivante() {
if (pageCourante < nbPage - 1) {
pageCourante++;
int debut = (pageCourante - 1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
synchroniser();
}
}
this.nbPage = calculerNbPage();
 
public void pagePrecedente() {
if (pageCourante > 1) {
pageCourante--;
int debut = (pageCourante - 1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
synchroniser();
HasWidgets zoneLiens = vue.getZoneLiens();
zoneLiens.clear();
 
int pageDebut = 1;
int pageFin = nbPage;
 
for (int i = pageDebut; i < pageFin; i++) {
vue.ajouterBoutonZoneLiens(i + "");
}
gererEvenementsBoutonsDynamiques();
mettreEnValeurPageCourante();
}
 
public int getPageCourante() {
334,15 → 226,63
this.pageCourante = pageCourante;
}
 
public abstract void changerPage(int debut, int fin);
public void allerALaPagePrecedente() {
if (pageCourante > 1) {
int pageAAfficher = pageCourante - 1;
chargerElements(pas * (pageAAfficher - 1), pas * (pageAAfficher));
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher));
}
 
}
 
public void allerALapageSuivante() {
if (pageCourante < nbPage - 1) {
int pageAAfficher = pageCourante + 1;
chargerElements(pas * (pageAAfficher - 1), pas * (pageAAfficher));
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher));
}
}
 
public void afficherLaPremierePage() {
int pageAAfficher = 1;
chargerElements(0, pas);
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher));
}
 
public void afficherlaDernierePage() {
int pageAAfficher = nbPage - 1;
chargerElements(pas * (pageAAfficher - 1), pas * (pageAAfficher));
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher));
}
 
/** calcule le nombre de page en fonction du pas */
private int calculerNbPage() {
Double nombrePages = Math.ceil((double) nbElementsTotal / (double) pas);
return nombrePages.intValue();
}
 
public void mettreEnValeurPageCourante() {
getVue().mettreEnValeurPageActive(getPageCourante());
}
 
public void setNbPages(int nbPages) {
this.nbPage = nbPages;
}
 
public int getNbPages() {
return nbPage;
}
 
public Vue getVue() {
return vue;
}
 
public abstract void chargerElements(int debut, int fin);
 
public abstract void actualiserPasCache(int pas);
 
public void synchroniser() {
setPas(getPas());
setPageCourante(getPageCourante());
setNbPages(getNbPages());
actualiserLiens();
public void setPas(int pas) {
this.pas = pas;
}
 
}
/trunk/src/org/tela_botanica/del/client/composants/pagination/PaginationVue.java
19,8 → 19,8
 
@UiField
ListBox selecteurPas;
@UiField
 
@UiField
Button boutonPrecedent, boutonSuivant, boutonPremierePage, boutonDernierePage;
 
interface MyUiBinder extends UiBinder<Widget, PaginationVue> {
32,22 → 32,58
initWidget(uiBinder.createAndBindUi(this));
}
 
public void afficherPas(int pas) {
switch (pas) {
case 5:
changerSelecteurPas(0);
break;
case 10:
changerSelecteurPas(1);
break;
case 15:
changerSelecteurPas(2);
break;
case 20:
changerSelecteurPas(3);
break;
default:
break;
}
}
 
public void mettreEnValeurPageActive(int pageActive) {
int nbLiens = getNbWidgetsZoneLiens();
for (int i = 0; i < nbLiens; i++) {
Button boutonCourant = (Button) zoneLiens.getWidget(i);
if (nbLiens - i > 5 && i < pageActive - 1 || i > pageActive + 3) {
boutonCourant.setVisible(false);
} else {
if (boutonCourant.getText().equals(String.valueOf(pageActive))) {
changerStyleBoutonZoneLiens(i, "actif");
} else {
changerStyleBoutonZoneLiens(i, "inactif");
}
boutonCourant.setVisible(true);
}
 
}
}
 
public void masquerBoutonPrecedent() {
boutonPremierePage.setVisible(false);
boutonPrecedent.setVisible(false);
}
 
public void afficherBoutonPrecedent() {
boutonPremierePage.setVisible(true);
boutonPrecedent.setVisible(true);
}
 
public void masquerBoutonSuivant() {
boutonDernierePage.setVisible(false);
boutonSuivant.setVisible(false);
}
 
public void afficherBoutonSuivant() {
boutonDernierePage.setVisible(true);
boutonSuivant.setVisible(true);
71,7 → 107,7
public HasClickHandlers getBoutonPrecedent() {
return boutonPrecedent;
}
 
@Override
public HasClickHandlers getBoutonPremierePage() {
return boutonPremierePage;
82,7 → 118,6
return boutonDernierePage;
}
 
@Override
public void changerSelecteurPas(int index) {
selecteurPas.setSelectedIndex(index);
}
94,12 → 129,12
 
@Override
public HasClickHandlers getWidgetZoneLiensHasClickHandlers(int index) {
return (Button)zoneLiens.getWidget(index);
return (Button) zoneLiens.getWidget(index);
}
 
@Override
public HasText getWidgetZoneLiensAsText(int index) {
return (Button)zoneLiens.getWidget(index);
return (Button) zoneLiens.getWidget(index);
}
 
@Override