Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 435 → Rev 436

/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImagePresenteur.java
14,7 → 14,6
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImageVue;
 
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Panel;
23,26 → 22,35
 
public abstract interface Vue extends IsWidget {
public void startChargement();
 
public void nettoyer();
 
public void afficherPanneauxObservation(List<Panel> panneauxImagesAffichees);
 
public void creerPanneauxObservations(int size);
 
public void stopChargement();
 
public List<Panel> getPanneauxImages();
 
public HasWidgets getPanneauPagination();
 
public HasWidgets getPanneauPaginationHaut();
}
//new ResultatRechercheImageVue();
 
// new ResultatRechercheImageVue();
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
* 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;
108,7 → 116,7
this.paginationBasPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination()) {
@Override
public void changerPage(int debut, int fin) {
if(!requeteEnCours) {
if (!requeteEnCours) {
chargerEtAfficherImages(debut, fin);
}
CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
118,21 → 126,13
public void actualiserPasCache(int pas) {
CacheClient.getInstance().setPasPagination(pas);
}
@Override
public void synchroniser() {
paginationHautPresenteur.setPas(getPas());
paginationHautPresenteur.setPageCourante(getPageCourante());
paginationHautPresenteur.setNbPages(getNbPages());
paginationHautPresenteur.actualiserLiens();
}
};
 
this.paginationHautPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination()) {
 
@Override
public void changerPage(int debut, int fin) {
if(!requeteEnCours) {
if (!requeteEnCours) {
chargerEtAfficherImages(debut, fin);
}
CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
143,13 → 143,6
CacheClient.getInstance().setPasPagination(pas);
}
 
@Override
public void synchroniser() {
paginationBasPresenteur.setPas(getPas());
paginationBasPresenteur.setPageCourante(getPageCourante());
paginationBasPresenteur.setNbPages(getNbPages());
paginationBasPresenteur.actualiserLiens();
}
};
this.paginationBasPresenteur.go(vue.getPanneauPagination());
this.paginationHautPresenteur.go(vue.getPanneauPaginationHaut());
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationPresenteur.java
23,9 → 23,12
import org.tela_botanica.del.client.vues.plateformedetermination.vote.EnsembleVotesVue;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition.BarreRepartitionVotePresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition.BarreRepartitionVoteVue;
import org.tela_botanica.del.client.vues.rechercheobservations.observationimages.ObservationImagesPresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.observationimages.ObservationImagesVue;
 
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;
35,14 → 38,20
 
public abstract interface Vue extends IsWidget {
public VerticalPanel getForum();
 
public VerticalPanel getDetailImageObservation();
 
public VerticalPanel getFormulaireRechercheEflore();
public VerticalPanel getVote();
 
public VerticalPanel getVote();
 
public VerticalPanel getBarreRepartition();
 
public Button getBoutonAjoutProposition();
}
 
private Vue vue;
 
BarreRepartitionVotePresenteur barreRepartitionVotePresenteur;
 
public DeterminationPresenteur(Vue vue) {
50,9 → 59,11
}
 
public void go(HasWidgets composite) {
 
if (CacheClient.getInstance().getImageCourante() != null) {
new DetailImageObservationPresenteur(new DetailImageObservationVue()).go(vue.getDetailImageObservation());
// new DetailImageObservationPresenteur(new
// DetailImageObservationVue()).go(vue.getDetailImageObservation());
new ObservationImagesPresenteur(new ObservationImagesVue(), CacheClient.getInstance().getObservationCourante()).go(vue.getDetailImageObservation());
new EnsembleVotesPresenteur(new EnsembleVotesVue()).go(vue.getVote());
}
new ForumPresenteur(new ForumVue()).go(vue.getForum());
63,7 → 74,7
calculerEtAfficherVoteDeterminationPlusPopulaire();
 
composite.add(vue.asWidget());
 
gererEvenements();
}
 
74,7 → 85,7
barreRepartitionVotePresenteur.afficherVotes(votesOrdonnes.get(0));
}
}
 
public void gererEvenements() {
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
@Override
82,20 → 93,20
calculerEtAfficherVoteDeterminationPlusPopulaire();
}
});
vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() {
 
vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
 
ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue()));
}
});
 
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
 
@Override
public void onAjoutDetermination(EvenementAjoutDetermination event) {
if(fenetreModaleEstOuverte()) {
if (fenetreModaleEstOuverte()) {
fermerFenetreModale();
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observationdeterminations/observationdetermination.css
New file
0,0 → 1,0
.determination {padding : 10px; margin:0 1px 5px 0; height:150px}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observationdeterminations/ObservationDeterminationVue.ui.xml
New file
0,0 → 1,15
<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="observationdetermination.css" />
<g:HorizontalPanel>
<g:HTMLPanel>
<g:FlexTable styleName="{style.determination}" ui:field="tableauPropositions" />
</g:HTMLPanel>
</g:HorizontalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observationdeterminations/ObservationDeterminationPresenteur.java
New file
0,0 → 1,51
package org.tela_botanica.del.client.vues.rechercheobservations.observationdeterminations;
 
import java.util.List;
 
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.vues.rechercheobservations.detail.DetailVoteObservationPresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.detail.DetailVoteObservationVue;
 
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class ObservationDeterminationPresenteur {
 
public abstract interface Vue extends IsWidget {
public void setTexteTableau(int ligne, int colonne, String texte);
 
public void setElementTableau(int ligne, int colonne, IsWidget element);
}
 
private Vue vue;
 
private List<PropositionDetermination> propositions;
 
public ObservationDeterminationPresenteur(Vue vue, List<PropositionDetermination> propositions) {
this.propositions = propositions;
this.vue = vue;
}
 
public void chargerPropositions() {
 
int i = 0;
for (PropositionDetermination proposition : propositions) {
 
HTMLPanel panneau = new HTMLPanel("");
DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition);
presenteurVote.go(panneau);
vue.setElementTableau(i, 0, panneau);
vue.setTexteTableau(i, 1, String.valueOf(proposition.getListeCommentaires().size()) + " " + I18n.getVocabulary().commentaires());
i++;
}
 
}
 
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
chargerPropositions();
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observationdeterminations/ObservationDeterminationVue.java
New file
0,0 → 1,40
package org.tela_botanica.del.client.vues.rechercheobservations.observationdeterminations;
 
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.FlexTable;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
 
public class ObservationDeterminationVue extends Composite implements ObservationDeterminationPresenteur.Vue {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, ObservationDeterminationVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
protected FlexTable tableauPropositions;
 
public FlexTable getTableauPropositions() {
return tableauPropositions;
}
 
public ObservationDeterminationVue() {
initWidget(binder.createAndBindUi(this));
}
 
@Override
public void setTexteTableau(int ligne, int colonne, String texte) {
tableauPropositions.setText(ligne, colonne, texte);
}
 
@Override
public void setElementTableau(int ligne, int colonne, IsWidget element) {
tableauPropositions.setWidget(ligne, colonne, element.asWidget());
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observationimages/observationimages.css
New file
0,0 → 1,56
.photos {
border: solid 1px #EEE;
border-width: 0 1px 0 0;
width: 350px;
-moz-border-radius: 0px;
padding: 10px;
margin: 0 1px 5px 0;
height: 170px
}
 
.photos img {
float: left;
padding: 2px;
-moz-box-shadow: 2px 2px 2px #DDD;
cursor: pointer;
}
 
.photoPrincipale {
height: 300px;
float: left;
padding: 5px;
margin-bottom: 15px;
cursor: pointer
}
 
.miniatures img {
height: 30px
}
 
.observateur td {
font-size: 11px;
white-space: nowrap
}
 
.date {
}
 
.nomRetenu {
font-weight: bold
}
 
.dateObservation {
}
 
.groupeObservation img {
-moz-box-shadow: 4px 4px 2px #AAA
}
 
.detailObservation {
font-size: 11px;
color: white;
background: #333;
opacity: 0.8;
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observationimages/ObservationImagesVue.ui.xml
New file
0,0 → 1,24
<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" />
 
 
 
<g:HTMLPanel>
<g:VerticalPanel>
<g:Image ui:field="photoPrincipale" />
<g:Label ui:field="nomRetenu" styleName="sousTitre" />
<g:Label ui:field="famille" />
<g:Label ui:field="auteur" />
<g:Label ui:field="date" />
<g:Label ui:field="localite" />
<g:Label ui:field="motsClefs" />
<g:Label ui:field="numNomenclatural" />
</g:VerticalPanel>
 
<g:HTMLPanel ui:field="photos"></g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observationimages/ObservationImagesPresenteur.java
New file
0,0 → 1,79
package org.tela_botanica.del.client.vues.rechercheobservations.observationimages;
 
import java.util.List;
 
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImageVue;
 
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.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class ObservationImagesPresenteur extends Presenteur {
 
public abstract interface Vue extends IsWidget {
public HasClickHandlers getPhotoPrincipale();
 
public HasWidgets getPhotos();
 
public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image);
 
public void ajouterPhoto(Image image, ClickHandler gestionnaireClic);
 
public void chargerInformationsObservation(Observation observation);
}
 
private Vue vue;
 
private Observation observation;
 
private Image imagePrincipale;
 
public ObservationImagesPresenteur(Vue vue, Observation observation) {
this.observation = observation;
this.vue = vue;
}
 
public void chargerImagesObservation() {
 
vue.chargerInformationsObservation(observation);
 
List<org.tela_botanica.del.client.modeles.Image> images = observation.getImages();
 
if (images != null && images.size() > 0) {
imagePrincipale = images.get(0);
vue.chargerImagePrincipale(imagePrincipale);
}
 
for (final org.tela_botanica.del.client.modeles.Image imageCourante : images) {
if (imageCourante != imagePrincipale) {
 
ClickHandler gestionnaireClic = new ClickHandler() {
public void onClick(ClickEvent event) {
ouvrirFenetreModale(new DetailImagePresenteur(imageCourante, new DetailImageVue()));
}
};
vue.ajouterPhoto(imageCourante, gestionnaireClic);
}
}
}
 
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
chargerImagesObservation();
gererEvenements();
}
 
protected void gererEvenements() {
vue.getPhotoPrincipale().addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
ouvrirFenetreModale(new DetailImagePresenteur(imagePrincipale, new DetailImageVue()));
}
});
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observationimages/ObservationImagesVue.java
New file
0,0 → 1,108
package org.tela_botanica.del.client.vues.rechercheobservations.observationimages;
 
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Observation;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickHandler;
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.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class ObservationImagesVue extends Composite implements ObservationImagesPresenteur.Vue {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, ObservationImagesVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
protected Image photoPrincipale;
 
@UiField
protected Panel photos;
 
@UiField
protected Label auteur, date, famille, localite, motsClefs, nomRetenu, numNomenclatural;
 
public ObservationImagesVue() {
initWidget(binder.createAndBindUi(this));
}
 
public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image) {
setUrlImagePrincipale(image.getUrl());
setTitreImagePrincipale(image.getUrlFormat("L"));
setAltTextImagePrincipale(image.getObservation().getAuteur() + " - " + image.getObservation().getNomRetenu());
}
 
@Override
public void ajouterPhoto(org.tela_botanica.del.client.modeles.Image imageCourante, ClickHandler gestionnaireClic) {
Image photo = new Image();
photo.setUrl(imageCourante.getUrlFormat("CRX2S"));
photo.setTitle(imageCourante.getUrlFormat("L"));
photo.setAltText(imageCourante.getObservation().getAuteur() + " - " + imageCourante.getObservation().getNomRetenu());
photo.addClickHandler(gestionnaireClic);
getPhotos().add(photo);
}
 
public void chargerInformationsObservation(Observation observation) {
auteur.setText(observation.getAuteur());
nomRetenu.setText(observation.getNomRetenu());
famille.setText(observation.getFamille());
localite.setText(observation.getLocalite());
date.setText(observation.getDate());
 
List<String> motsCles = observation.getMotsClefs();
Iterator<String> itMotsCles = motsCles.iterator();
String motsClesChaine = "";
while (itMotsCles.hasNext()) {
String motCle = itMotsCles.next();
motsClesChaine += motCle;
if (itMotsCles.hasNext()) {
motsClesChaine += ", ";
}
}
motsClefs.setText(motsClesChaine);
numNomenclatural.setText(observation.getNumNomenclatural());
}
 
public void setUrlImagePrincipale(String url) {
photoPrincipale.setUrl(url);
}
 
public void setTitreImagePrincipale(String titre) {
photoPrincipale.setTitle(titre);
}
 
public void setAltTextImagePrincipale(String altText) {
photoPrincipale.setAltText(altText);
}
 
public String getUrlImagePrincipale() {
return photoPrincipale.getUrl();
}
 
public String getTitreImagePrincipale() {
return photoPrincipale.getTitle();
}
 
public String getAltTextImagePrincipale() {
return photoPrincipale.getAltText();
}
 
public Image getPhotoPrincipale() {
return photoPrincipale;
}
 
public Panel getPhotos() {
return photos;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/DetailImagePresenteur.java
1,6 → 1,7
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Image;
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
8,15 → 9,13
public class DetailImagePresenteur extends Presenteur {
 
public abstract interface Vue extends IsWidget {
public abstract void setUrlImage(String urlImage);
public abstract void setTexteAlternatif(String texteAlternatif);
public abstract void chargerImage(String urlGrangFormat, String texteAlternatif);
public abstract void chargerImage(Image image);
}
public Vue vue;
public DetailImagePresenteur(String urlGrandFormat, String texteAlternatif, Vue vue) {
public DetailImagePresenteur(Image image, Vue vue) {
this.vue = vue;
this.vue.chargerImage(urlGrandFormat, texteAlternatif);
this.vue.chargerImage(image);
}
 
@Override
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsPresenteur.java
6,7 → 6,6
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.i18n.I18n;
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;
14,53 → 13,49
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
 
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();
}
 
private Vue vue;
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 RechercheObservationsPresenteur(ObservationService serviceObs, Vue vue) {
 
this.vue = vue;
this.serviceObs = serviceObs;
}
 
public void go(HasWidgets composite) {
if (composite == null) {
composite = RootPanel.get();
}
 
composite.add(vue.asWidget());
ajouterMoteurRechercheAvancee();
 
ObservationsCallback callback = new ObservationsCallback() {
@Override
public void surObservationsRecues(
ObservationServiceResultat observationsRecues) {
creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
afficherObservations(observationsRecues);
public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
afficherObservations(observationsRecues);
}
};
serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), 0, CacheClient.getInstance().getPasPagination(),callback);
 
serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), 0, CacheClient.getInstance().getPasPagination(), callback);
}
 
protected void ajouterMoteurRechercheAvancee() {
82,14 → 77,12
vue.startChargement();
vue.nettoyer();
ObservationsCallback callback = new ObservationsCallback() {
 
@Override
public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
afficherObservations(observationsRecues);
requeteEnCours = false;
public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
afficherObservations(observationsRecues);
}
};
requeteEnCours = true;
serviceObs.getObservations(CacheClient.getInstance().getInformationsRechercheObservation(), debut, fin, callback);
}
 
103,7 → 96,7
}
 
private void creerWidgetPagination(int nbObservations) {
this.paginationHautPresenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
PaginationPresenteur paginationPresenteurHaut = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
 
@Override
public void changerPage(int debut, int fin) {
115,25 → 108,15
public void actualiserPasCache(int pas) {
CacheClient.getInstance().setPasPagination(pas);
}
@Override
public void synchroniser() {
paginationBasPresenteur.setPas(getPas());
paginationBasPresenteur.setPageCourante(getPageCourante());
paginationBasPresenteur.setNbPages(getNbPages());
paginationBasPresenteur.actualiserLiens();
}
 
};
paginationHautPresenteur.go(vue.getZonePaginationHaut());
this.paginationBasPresenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
 
PaginationPresenteur paginationPresenteurBas = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
 
@Override
public void changerPage(int debut, int fin) {
if(!requeteEnCours) {
chargerEtAfficherObservations(debut, fin);
CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
}
chargerEtAfficherObservations(debut, fin);
CacheClient.getInstance().setPageCouranteRechercheObservations(getPageCourante());
}
 
@Override
140,16 → 123,10
public void actualiserPasCache(int pas) {
CacheClient.getInstance().setPasPagination(pas);
}
@Override
public void synchroniser() {
paginationHautPresenteur.setPas(getPas());
paginationHautPresenteur.setPageCourante(getPageCourante());
paginationHautPresenteur.setNbPages(getNbPages());
paginationHautPresenteur.actualiserLiens();
}
 
};
paginationBasPresenteur.go(vue.getZonePaginationBas());
paginationPresenteurHaut.go(vue.getZonePaginationHaut());
paginationPresenteurBas.go(vue.getZonePaginationBas());
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/DetailImageVue.java
5,7 → 5,6
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
 
27,19 → 26,18
initWidget(binder.createAndBindUi(this));
}
 
@Override
public void chargerImage(org.tela_botanica.del.client.modeles.Image imageCourante) {
setUrlImage(imageCourante.getUrlFormat("L"));
setTitle(imageCourante.getUrlFormat("L"));
setTexteAlternatif(imageCourante.getObservation().getAuteur() + " - " + imageCourante.getObservation().getNomRetenu());
}
 
public void setUrlImage(String urlImage) {
photoPrincipale.setUrl(urlImage);
photoPrincipale.setUrl(urlImage);
}
 
@Override
public void setTexteAlternatif(String texteAlternatif) {
this.texteAlternatif.setText(texteAlternatif);
this.texteAlternatif.setText(texteAlternatif);
}
 
@Override
public void chargerImage(String urlGrandFormat, String texteAlternatif) {
setTexteAlternatif(texteAlternatif);
setUrlImage(urlGrandFormat);
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationVue.ui.xml
1,25 → 1,18
<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: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="observation.css" />
<g:HorizontalPanel styleName="{style.ligneObservation}">
<g:VerticalPanel styleName="{style.description}">
<g:Label ui:field="nomRetenu" styleName="sousTitre"/>
<g:Label ui:field="famille" />
<g:Label ui:field="auteur" /><g:Label ui:field="date" />
<g:Label ui:field="localite" />
<g:Label ui:field="motsClefs" />
<g:Label ui:field="numNomenclatural" />
</g:VerticalPanel>
<g:HTMLPanel styleName="{style.photos}">
<g:Image ui:field="photoPrincipale" styleName="{style.photoPrincipale}"/>
<g:HTMLPanel ui:field="photos" styleName="{style.miniatures}"></g:HTMLPanel>
</g:HTMLPanel>
<ui:style src="observation.css" />
<g:HorizontalPanel>
<g:HTMLPanel ui:field="imagesPanel" />
<g:HTMLPanel>
<g:Label ui:field="lienDeterminer" styleName="lien {style.lienDetermination}" text="{constants.proposerSaDetermination}" />
<g:FlexTable styleName="{style.determination}" ui:field="tableauPropositions" />
<g:Label ui:field="lienDeterminer" styleName="lien {style.lienDetermination}"
text="{constants.proposerSaDetermination}" />
<g:HTMLPanel ui:field="determinationsPanel" />
</g:HTMLPanel>
</g:HorizontalPanel>
</g:HorizontalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationPresenteur.java
1,51 → 1,35
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
import org.tela_botanica.del.client.vues.rechercheobservations.detail.DetailVoteObservationPresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.detail.DetailVoteObservationVue;
import org.tela_botanica.del.client.vues.rechercheobservations.observationdeterminations.ObservationDeterminationPresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.observationdeterminations.ObservationDeterminationVue;
import org.tela_botanica.del.client.vues.rechercheobservations.observationimages.ObservationImagesPresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.observationimages.ObservationImagesVue;
 
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.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class ObservationPresenteur extends Presenteur {
 
public abstract interface Vue extends IsWidget {
public void ajouterPhoto(String url, String titre, String alText, ClickHandler GestionnaireClic);
public HasText getAuteur();
public HasText getDate();
public HasText getFamille();
public HasText getLocalite();
public HasText getMotsClefs();
public HasText getNomRetenu();
public HasText getNumNomenclatural();
public HasClickHandlers getPhotoPrincipale();
public HasWidgets getPhotos();
public void setUrlImagePrincipale(String url);
public void setTitreImagePrincipale(String titre);
public void setAltTextImagePrincipale(String altText);
public String getUrlImagePrincipale();
public String getTitreImagePrincipale();
public String getAltTextImagePrincipale();
public void setTexteTableau(int ligne, int colonne, String texte);
public void setElementTableau(int ligne, int colonne, IsWidget element);
 
public HasClickHandlers getLienDeterminer();
 
public HasWidgets getDeterminationsPanel();
 
public HasWidgets getImagesPanel();
}
 
private Vue vue;
 
private Observation observation;
57,66 → 41,12
}
 
public void chargerObservation() {
HasText auteur = vue.getAuteur();
auteur.setText(observation.getAuteur());
vue.getDate().setText(observation.getDate());
vue.getFamille().setText(observation.getFamille());
vue.getLocalite().setText(observation.getLocalite());
 
List<String> motsCles = observation.getMotsClefs();
Iterator<String> itMotsCles = motsCles.iterator();
String motsClesChaine = "";
while (itMotsCles.hasNext()) {
String motCle = itMotsCles.next();
motsClesChaine += motCle;
if (itMotsCles.hasNext()) {
motsClesChaine += ", ";
}
}
vue.getMotsClefs().setText(motsClesChaine);
vue.getNomRetenu().setText(observation.getNomRetenu());
vue.getNumNomenclatural().setText(observation.getNumNomenclatural());
new ObservationImagesPresenteur(new ObservationImagesVue(), observation).go(vue.getImagesPanel());
new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionsDetermination()).go(vue.getDeterminationsPanel());
 
List<org.tela_botanica.del.client.modeles.Image> images = observation.getImages();
gererEvenements();
 
if (images != null && images.size() > 0) {
org.tela_botanica.del.client.modeles.Image imagePrincipale = images.get(0);
vue.setUrlImagePrincipale(imagePrincipale.getUrl());
vue.setTitreImagePrincipale(imagePrincipale.getUrlFormat("L"));
vue.setAltTextImagePrincipale(observation.getAuteur() + " - " + observation.getNomRetenu());
images.remove(0);
}
 
int nbImagesAffichees = 0;
for (final org.tela_botanica.del.client.modeles.Image imageCourante : images) {
nbImagesAffichees++;
if (nbImagesAffichees < 5) {
ClickHandler gestionnaireClic = new ClickHandler() {
public void onClick(ClickEvent event) {
ouvrirFenetreModale(new DetailImagePresenteur(imageCourante.getUrlFormat("L"), imageCourante.getObservation().getAuteur()+ " - " + imageCourante.getObservation().getNomRetenu(), new DetailImageVue()));
}
};
vue.ajouterPhoto(imageCourante.getUrlFormat("CRX2S"),
imageCourante.getUrlFormat("L"),
observation.getAuteur() + " - " + observation.getNomRetenu(),
gestionnaireClic);
}
}
 
List<PropositionDetermination> propositions = observation.getPropositionsDetermination();
int i = 0;
for (PropositionDetermination proposition : propositions) {
HTMLPanel panneau = new HTMLPanel("");
DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition);
presenteurVote.go(panneau);
vue.setElementTableau(i, 0, panneau);
vue.setTexteTableau(i, 1, String.valueOf(proposition.getListeCommentaires().size()) + " " +I18n.getVocabulary().commentaires());
i++;
}
 
gererEvenements();
// vue.propositions.setText(ch);
}
 
public void go(HasWidgets composite) {
124,14 → 54,9
}
 
protected void gererEvenements() {
vue.getPhotoPrincipale().addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
ouvrirFenetreModale(new DetailImagePresenteur(vue.getTitreImagePrincipale(), vue.getAltTextImagePrincipale(), new DetailImageVue()));
}
});
 
vue.getLienDeterminer().addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
List<Image> images = observation.getImages();
if (images.size() > 0) {
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationVue.java
1,15 → 1,10
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
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.FlexTable;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
23,113 → 18,32
private static Binder binder = GWT.create(Binder.class);
 
@UiField
protected Label auteur, date, famille, localite, motsClefs, nomRetenu, numNomenclatural, lienDeterminer;
protected Label lienDeterminer;
 
@UiField
protected FlexTable tableauPropositions;
protected Panel determinationsPanel;
 
public Label getAuteur() {
return auteur;
}
 
public Label getDate() {
return date;
}
 
public Label getFamille() {
return famille;
}
 
public Label getLocalite() {
return localite;
}
 
public Label getMotsClefs() {
return motsClefs;
}
 
public Label getNomRetenu() {
return nomRetenu;
}
 
public Label getNumNomenclatural() {
return numNomenclatural;
}
 
public FlexTable getTableauPropositions() {
return tableauPropositions;
}
 
public Image getPhotoPrincipale() {
return photoPrincipale;
}
 
public Panel getPhotos() {
return photos;
}
 
@UiField
protected Image photoPrincipale;
protected Panel imagesPanel;
 
@UiField
protected Panel photos;
 
public ObservationVue() {
initWidget(binder.createAndBindUi(this));
}
 
@Override
public void setUrlImagePrincipale(String url) {
photoPrincipale.setUrl(url);
public HasClickHandlers getLienDeterminer() {
return lienDeterminer;
}
 
@Override
public void setTitreImagePrincipale(String titre) {
photoPrincipale.setTitle(titre);
public Panel getDeterminationsPanel() {
return determinationsPanel;
}
 
@Override
public void setAltTextImagePrincipale(String altText) {
photoPrincipale.setAltText(altText);
public void setDeterminationsPanel(Panel determinationsPanel) {
this.determinationsPanel = determinationsPanel;
}
 
@Override
public String getUrlImagePrincipale() {
return photoPrincipale.getUrl();
public Panel getImagesPanel() {
return imagesPanel;
}
 
@Override
public String getTitreImagePrincipale() {
return photoPrincipale.getTitle();
}
 
@Override
public String getAltTextImagePrincipale() {
return photoPrincipale.getAltText();
}
 
@Override
public void setTexteTableau(int ligne, int colonne, String texte) {
tableauPropositions.setText(ligne, colonne, texte);
}
@Override
public void setElementTableau(int ligne, int colonne, IsWidget element) {
tableauPropositions.setWidget(ligne, colonne, element.asWidget());
}
 
@Override
public void ajouterPhoto(String url, String titre, String alText, ClickHandler gestionnaireClic) {
Image photo = new Image();
photo.setUrl(url);
photo.setTitle(titre);
photo.setAltText(alText);
photo.addClickHandler(gestionnaireClic);
getPhotos().add(photo);
}
 
@Override
public HasClickHandlers getLienDeterminer() {
return lienDeterminer;
}
}
/trunk/src/org/tela_botanica/del/client/composants/moteurrecherche/MoteurRecherchePresenteur.java
14,9 → 14,6
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
/trunk/src/org/tela_botanica/del/client/composants/pagination/PaginationPresenteur.java
6,10 → 6,10
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasChangeHandlers;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
/**
* @author gregoire Pagination GENERIQUE qui permet d'afficher un nombre donné
* d'éléments (pas) La méthode changerPage est abstraite et doit être
21,27 → 21,46
public abstract class PaginationPresenteur {
 
public interface Vue extends IsWidget {
 
public HasWidgets getZoneLiens();
 
public int getNbWidgetsZoneLiens();
 
public HasClickHandlers getWidgetZoneLiensHasClickHandlers(int index);
 
public HasText getWidgetZoneLiensAsText(int index);
 
public void changerStyleBoutonZoneLiens(int index, String style);
 
public void ajouterBoutonZoneLiens(String label);
 
public HasClickHandlers getBoutonSuivant();
 
public HasClickHandlers getBoutonPrecedent();
 
public HasClickHandlers getBoutonPremierePage();
 
public HasClickHandlers getBoutonDernierePage();
 
public void masquerBoutonPrecedent();
 
public void afficherBoutonPrecedent();
 
public void masquerBoutonSuivant();
 
public void afficherBoutonSuivant();
 
public boolean boutonPrecedentEstAffiche();
 
public boolean boutonSuivantEstAffiche();
 
public HasChangeHandlers getSelecteurPas();
 
public int getPasSelectionne();
 
public void changerSelecteurPas(int index);
}
 
private Vue vue;
private int nbPage;
private int pageCourante = 1;
56,7 → 75,7
* @param pas
* : le nombre d'éléments à afficher par page
* */
public PaginationPresenteur(PaginationPresenteur.Vue vue, int nbElementsTotal, int pas) {
public PaginationPresenteur(Vue vue, int nbElementsTotal, int pas) {
this.nbElementsTotal = nbElementsTotal;
this.vue = vue;
changerPas(this.pas);
79,15 → 98,15
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;
}
103,13 → 122,13
setPas(pas);
actualiserNbPage();
gererDecalagePageCourante(ancienPas, pas);
changerPage(pas * (pageCourante -1), pas * pageCourante);
changerPage(pas * (pageCourante - 1), pas * pageCourante);
actualiserLiens();
actualiserPasCache(pas);
}
public void setPas(int pas) {
this.pas = pas;
 
public void setPas(int pas) {
this.pas = pas;
switch (pas) {
case 5:
vue.changerSelecteurPas(0);
125,13 → 144,13
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));
 
private void gererDecalagePageCourante(int ancienPas, int nouveauPas) {
if (ancienPas != nouveauPas) {
double rapportPas = (double) ancienPas / (double) nouveauPas;
pageCourante = (int) (Math.ceil((double) pageCourante * (double) rapportPas));
}
}
 
147,7 → 166,7
int pageFin = pagesApres();
 
for (int i = pageDebut; i < pageFin; i++) {
vue.ajouterBoutonZoneLiens(i+"");
vue.ajouterBoutonZoneLiens(i + "");
}
setBoutonActif();
gererEvenementsBoutonsDynamiques();
158,7 → 177,7
if (pageDebut < 1) {
pageDebut = 1;
}
if(pageCourante == 1) {
if (pageCourante == 1) {
vue.masquerBoutonPrecedent();
} else {
vue.afficherBoutonPrecedent();
172,12 → 191,12
if (pageFin > nbPage) {
pageFin = nbPage;
}
if(pageCourante == nbPage - 1) {
if (pageCourante == nbPage - 1) {
vue.masquerBoutonSuivant();
} else {
vue.afficherBoutonSuivant();
}
 
return pageFin;
}
 
186,17 → 205,18
for (int i = 0; i < nbLiens; i++) {
HasText boutonCourant = vue.getWidgetZoneLiensAsText(i);
if (boutonCourant.getText().equals(String.valueOf(pageCourante))) {
vue.changerStyleBoutonZoneLiens(i,"actif");
vue.changerStyleBoutonZoneLiens(i, "actif");
} else {
vue.changerStyleBoutonZoneLiens(i,"inactif");
vue.changerStyleBoutonZoneLiens(i, "inactif");
}
}
}
 
/**
* Gérer les évènements sur les boutons statiques (précédent, suivant et selecteur pas)
* Gérer les évènements sur les boutons statiques (précédent, suivant et
* selecteur pas)
* */
public void gererEvenementsBoutonsStatiques() {
public void gererEvenementsBoutonsStatiques() {
vue.getSelecteurPas().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
218,7 → 238,7
pageSuivante();
}
});
 
vue.getBoutonPremierePage().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
233,9 → 253,10
}
});
}
 
/**
* Gérer les évènements sur les boutons dynamiques (qui sont recréés à chaque fois)
* Gérer les évènements sur les boutons dynamiques (qui sont recréés à
* chaque fois)
* */
public void gererEvenementsBoutonsDynamiques() {
int nbLiens = vue.getNbWidgetsZoneLiens();
244,7 → 265,7
boutonCourant.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
HasText boutonCourant = (HasText)event.getSource();
HasText boutonCourant = (HasText) event.getSource();
pageCourante = Integer.parseInt(boutonCourant.getText());
int debut = (Integer.parseInt(boutonCourant.getText()) - 1) * pas;
int fin = (debut + pas);
256,11 → 277,11
});
}
}
 
public void premierePage() {
if (pageCourante > 1) {
pageCourante = 1;
int debut = (pageCourante -1) * pas;
pageCourante = 1;
int debut = (pageCourante - 1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
267,11 → 288,11
synchroniser();
}
}
 
public void dernierePage() {
if (pageCourante < nbPage - 1) {
pageCourante = nbPage - 1;
int debut = (pageCourante -1) * pas;
int debut = (pageCourante - 1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
282,7 → 303,7
public void pageSuivante() {
if (pageCourante < nbPage - 1) {
pageCourante++;
int debut = (pageCourante -1) * pas;
int debut = (pageCourante - 1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
293,7 → 314,7
public void pagePrecedente() {
if (pageCourante > 1) {
pageCourante--;
int debut = (pageCourante -1) * pas;
int debut = (pageCourante - 1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
304,11 → 325,11
public int getPageCourante() {
return this.pageCourante;
}
 
public int getPas() {
return this.pas;
}
 
public void setPageCourante(int pageCourante) {
this.pageCourante = pageCourante;
}
316,7 → 337,12
public abstract void changerPage(int debut, int fin);
 
public abstract void actualiserPasCache(int pas);
public abstract void synchroniser();
 
public void synchroniser() {
setPas(getPas());
setPageCourante(getPageCourante());
setNbPages(getNbPages());
actualiserLiens();
}
 
}