Subversion Repositories eFlore/Applications.del

Compare Revisions

No changes between revisions

Ignore whitespace Rev 390 → Rev 391

/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImagePresenteur.java
6,6 → 6,7
 
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.modeles.Image;
import org.tela_botanica.del.client.modeles.ImageServiceResultat;
import org.tela_botanica.del.client.services.rest.ImageService;
32,7 → 33,7
}
//new ResultatRechercheImageVue();
private Vue vue;
private List<ImagePresenteur> observationPresenteurs = new ArrayList<ImagePresenteur>();
private List<ImagePresenteur> ImagePresenteurs = new ArrayList<ImagePresenteur>();
private ImageService imageService;
private PaginationPresenteur paginationHautPresenteur, paginationBasPresenteur;
95,7 → 96,7
ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant(), new ImageVue());
imagePresenteur.go(imagePanel);
panneauxImagesAffichees.add(imagePanel);
observationPresenteurs.add(imagePresenteur);
ImagePresenteurs.add(imagePresenteur);
}
 
vue.afficherPanneauxObservation(panneauxImagesAffichees);
104,7 → 105,7
 
private void creerWidgetPagination(int nbImages) {
 
this.paginationBasPresenteur = new PaginationPresenteur(nbImages, CacheClient.getInstance().getPasPagination()) {
this.paginationBasPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination()) {
@Override
public void changerPage(int debut, int fin) {
if(!requeteEnCours) {
115,21 → 116,19
 
@Override
public void actualiserPasCache(int pas) {
// TODO:Figer la hauteur du panel images selon le pas car pendant le chargement
// c'est moche ! (il est au moins facile de garder l'ancienne et ne changer
// la taille du panneau qu'à la fin du chargement)
CacheClient.getInstance().setPasPagination(pas);
}
@Override
public void synchroniser() {
paginationHautPresenteur.setPas(getPas());
paginationHautPresenteur.setPageCourante(getPageCourante());
paginationHautPresenteur.setNbPages(getNbPages());
paginationHautPresenteur.actualiserLiens();
paginationHautPresenteur.changerPas(getPas());
}
};
this.paginationHautPresenteur = new PaginationPresenteur(nbImages, CacheClient.getInstance().getPasPagination()) {
this.paginationHautPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination()) {
 
@Override
public void changerPage(int debut, int fin) {
137,26 → 136,22
chargerEtAfficherImages(debut, fin);
}
CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
}
 
@Override
public void actualiserPasCache(int pas) {
// TODO:Figer la hauteur du panel images selon le pas car pendant le chargement
// c'est moche ! (il est au moins facile de garder l'ancienne et ne changer
// la taille du panneau qu'à la fin du chargement)
CacheClient.getInstance().setPasPagination(pas);
}
 
@Override
public void synchroniser() {
paginationBasPresenteur.setPas(getPas());
paginationBasPresenteur.setPageCourante(getPageCourante());
paginationBasPresenteur.setNbPages(getNbPages());
paginationBasPresenteur.actualiserLiens();
paginationBasPresenteur.changerPas(getPas());
}
};
this.paginationBasPresenteur.go(vue.getPanneauPagination());
this.paginationHautPresenteur.go(vue.getPanneauPaginationHaut());
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsPresenteur.java
4,6 → 4,7
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.i18n.I18n;
import org.tela_botanica.del.client.modeles.Observation;
71,7 → 72,7
}
 
private void creerWidgetPagination(int nbObservations) {
this.paginationHautPresenteur = new PaginationPresenteur(nbObservations, CacheClient.getInstance().getPasPagination()) {
this.paginationHautPresenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
 
@Override
public void changerPage(int debut, int fin) {
86,14 → 87,15
@Override
public void synchroniser() {
paginationBasPresenteur.setPas(getPas());
paginationBasPresenteur.setPageCourante(getPageCourante());
paginationBasPresenteur.setNbPages(getNbPages());
paginationBasPresenteur.actualiserLiens();
paginationBasPresenteur.changerPas(getPas());
}
};
paginationHautPresenteur.go(vue.getZonePaginationHaut());
this.paginationBasPresenteur = new PaginationPresenteur(nbObservations, CacheClient.getInstance().getPasPagination()) {
this.paginationBasPresenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, CacheClient.getInstance().getPasPagination()) {
 
@Override
public void changerPage(int debut, int fin) {
108,9 → 110,10
@Override
public void synchroniser() {
paginationHautPresenteur.setPas(getPas());
paginationHautPresenteur.setPageCourante(getPageCourante());
paginationHautPresenteur.setNbPages(getNbPages());
paginationHautPresenteur.actualiserLiens();
paginationHautPresenteur.changerPas(getPas());
}
};
paginationBasPresenteur.go(vue.getZonePaginationBas());
/trunk/src/org/tela_botanica/del/client/composants/pagination/PaginationVue.java
1,15 → 1,18
package org.tela_botanica.del.client.composants.pagination;
 
import com.google.gwt.core.client.GWT;
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.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
 
public class PaginationVue extends Composite {
public class PaginationVue extends Composite implements PaginationPresenteur.Vue {
 
@UiField
HorizontalPanel zoneLiens;
18,7 → 21,7
ListBox selecteurPas;
@UiField
Button boutonPrecedent, boutonSuivant;
Button boutonPrecedent, boutonSuivant, boutonPremierePage, boutonDernierePage;
 
interface MyUiBinder extends UiBinder<Widget, PaginationVue> {
}
30,19 → 33,23
}
 
public void masquerBoutonDebut() {
boutonPremierePage.setVisible(false);
boutonPrecedent.setVisible(false);
}
public void afficherBoutonDebut() {
boutonPremierePage.setVisible(true);
boutonPrecedent.setVisible(true);
}
 
public void masquerBoutonSuivant() {
boutonDernierePage.setVisible(false);
boutonSuivant.setVisible(false);
}
public void afficherBoutonSuivant() {
boutonDernierePage.setVisible(true);
boutonSuivant.setVisible(true);
}
 
50,4 → 57,66
return selecteurPas;
}
 
@Override
public HasWidgets getZoneLiens() {
return zoneLiens;
}
 
@Override
public HasClickHandlers getBoutonSuivant() {
return boutonSuivant;
}
 
@Override
public HasClickHandlers getBoutonPrecedent() {
return boutonPrecedent;
}
@Override
public HasClickHandlers getBoutonPremierePage() {
return boutonPremierePage;
}
 
@Override
public HasClickHandlers getBoutonDernierePage() {
return boutonDernierePage;
}
 
@Override
public void changerSelecteurPas(int index) {
selecteurPas.setSelectedIndex(index);
}
 
@Override
public int getNbWidgetsZoneLiens() {
return zoneLiens.getWidgetCount();
}
 
@Override
public HasClickHandlers getWidgetZoneLiensHasClickHandlers(int index) {
return (Button)zoneLiens.getWidget(index);
}
 
@Override
public HasText getWidgetZoneLiensAsText(int index) {
return (Button)zoneLiens.getWidget(index);
}
 
@Override
public void changerStyleBoutonZoneLiens(int index, String style) {
zoneLiens.getWidget(index).setStyleName(style);
}
 
@Override
public void ajouterBoutonZoneLiens(String label) {
Button bouton = new Button(label);
zoneLiens.add(bouton);
}
 
@Override
public int getPasSelectionne() {
int index = selecteurPas.getSelectedIndex();
return Integer.parseInt(selecteurPas.getValue(index));
}
 
}
/trunk/src/org/tela_botanica/del/client/composants/pagination/pagination.css
5,5 → 5,7
.zoneLiens button:hover {background:#8EB533}
select {background:white}
 
.boutonPrecedent {width:20px; height:25px; background:url(./img/prev.png) no-repeat}
.boutonSuivant {width:20px; height:25px; background:url(./img/next.png) no-repeat}
.boutonPrecedent {border:solid 1px #8EB533; width:20px; height:20px; background:url(./img/prev.png) no-repeat}
.boutonSuivant {border:solid 1px #8EB533; width:20px; height:20px; background:url(./img/next.png) no-repeat}
.boutonPremierePage {width:20px; height:20px; background:url(./img/first.png) no-repeat}
.boutonDernierePage {width:20px; height:20px; background:url(./img/last.png) no-repeat}
/trunk/src/org/tela_botanica/del/client/composants/pagination/PaginationVue.ui.xml
3,10 → 3,12
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="pagination.css" />
<g:HorizontalPanel styleName="{style.pagination}">
<g:Button ui:field="boutonPremierePage" styleName="{style.boutonPremierePage}" text=" " />
<g:Button ui:field="boutonPrecedent" styleName="{style.boutonPrecedent}" text=" " />
<g:HorizontalPanel styleName="{style.zoneLiens}" ui:field="zoneLiens"/>
<g:HorizontalPanel />
<g:Button ui:field="boutonSuivant" styleName="{style.boutonSuivant}" text=" "/>
<g:Button ui:field="boutonDernierePage" styleName="{style.boutonDernierePage}" text=" " />
<g:ListBox ui:field="selecteurPas" styleName="{style.selecteurElements}">
<g:item value="5">5</g:item>
<g:item value="10">10</g:item>
/trunk/src/org/tela_botanica/del/client/composants/pagination/PaginationPresenteur.java
4,12 → 4,12
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
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.Button;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
 
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
20,7 → 20,27
* */
public abstract class PaginationPresenteur {
 
private final PaginationVue vue;
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 masquerBoutonDebut();
public void afficherBoutonDebut();
public void masquerBoutonSuivant();
public void afficherBoutonSuivant();
public HasChangeHandlers getSelecteurPas();
public int getPasSelectionne();
public void changerSelecteurPas(int index);
}
private Vue vue;
private int nbPage;
private int pageCourante = 1;
private int nbElementsTotal = 0;
34,9 → 54,9
* @param pas
* : le nombre d'éléments à afficher par page
* */
public PaginationPresenteur(int nbElementsTotal, int pas) {
public PaginationPresenteur(PaginationPresenteur.Vue vue, int nbElementsTotal, int pas) {
this.nbElementsTotal = nbElementsTotal;
vue = new PaginationVue();
this.vue = vue;
changerPas(this.pas);
}
 
49,14 → 69,22
public void go(HasWidgets container) {
gererEvenementsBoutonsStatiques();
actualiserLiens();
container.add(vue);
container.add(vue.asWidget());
}
 
/** Met à jour le nombre de page en fonction du pas */
private void actualiserNbPage() {
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;
}
 
/**
* Changer le pas de la pagination
66,28 → 94,32
*/
public void changerPas(int pas) {
int ancienPas = this.pas;
this.pas = pas;
setPas(pas);
actualiserNbPage();
gererDecalagePageCourante(ancienPas, pas);
changerPage(pas * (pageCourante -1), pas * pageCourante);
actualiserLiens();
changerPage(pas * (pageCourante -1), pas * pageCourante);
actualiserPasCache(pas);
}
public void setPas(int pas) {
this.pas = pas;
switch (pas) {
case 5:
vue.getSelecteurPas().setSelectedIndex(0);
vue.changerSelecteurPas(0);
break;
case 10:
vue.getSelecteurPas().setSelectedIndex(1);
vue.changerSelecteurPas(1);
break;
case 15:
vue.getSelecteurPas().setSelectedIndex(2);
vue.changerSelecteurPas(2);
break;
case 20:
vue.getSelecteurPas().setSelectedIndex(3);
vue.changerSelecteurPas(3);
break;
default:
break;
}
actualiserPasCache(pas);
}
}
private void gererDecalagePageCourante(int ancienPas, int nouveauPas) {
94,7 → 126,6
if(ancienPas != nouveauPas) {
double rapportPas = (double)ancienPas/(double)nouveauPas;
pageCourante = (int)(Math.ceil((double)pageCourante*(double)rapportPas));
synchroniser();
}
}
 
103,7 → 134,7
* */
public void actualiserLiens() {
 
HorizontalPanel zoneLiens = vue.zoneLiens;
HasWidgets zoneLiens = vue.getZoneLiens();
zoneLiens.clear();
 
int pageDebut = pagesAvant();
110,8 → 141,7
int pageFin = pagesApres();
 
for (int i = pageDebut; i < pageFin; i++) {
Button bouton = new Button(i+"");
zoneLiens.add(bouton);
vue.ajouterBoutonZoneLiens(i+"");
}
setBoutonActif();
gererEvenementsBoutonsDynamiques();
139,13 → 169,13
}
 
private void setBoutonActif() {
int nbLiens = vue.zoneLiens.getWidgetCount();
int nbLiens = vue.getNbWidgetsZoneLiens();
for (int i = 0; i < nbLiens; i++) {
Button boutonCourant = (Button) vue.zoneLiens.getWidget(i);
HasText boutonCourant = vue.getWidgetZoneLiensAsText(i);
if (boutonCourant.getText().equals(String.valueOf(pageCourante))) {
boutonCourant.setStyleName("actif");
vue.changerStyleBoutonZoneLiens(i,"actif");
} else {
boutonCourant.setStyleName("inactif");
vue.changerStyleBoutonZoneLiens(i,"inactif");
}
}
}
154,18 → 184,16
* Gérer les évènements sur les boutons statiques (précédent, suivant et selecteur pas)
* */
public void gererEvenementsBoutonsStatiques() {
vue.selecteurPas.addChangeHandler(new ChangeHandler() {
vue.getSelecteurPas().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
ListBox nbElements = (ListBox) event.getSource();
int index = nbElements.getSelectedIndex();
changerPas(Integer.parseInt(nbElements.getValue(index)));
changerPas(vue.getPasSelectionne());
synchroniser();
}
 
});
 
vue.boutonPrecedent.addClickHandler(new ClickHandler() {
vue.getBoutonPrecedent().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
pagePrecedente();
172,12 → 200,26
}
});
 
vue.boutonSuivant.addClickHandler(new ClickHandler() {
vue.getBoutonSuivant().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
pageSuivante();
}
});
vue.getBoutonPremierePage().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
premierePage();
}
});
 
vue.getBoutonDernierePage().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
dernierePage();
}
});
}
/**
184,15 → 226,13
* Gérer les évènements sur les boutons dynamiques (qui sont recréés à chaque fois)
* */
public void gererEvenementsBoutonsDynamiques() {
int nbLiens = vue.zoneLiens.getWidgetCount();
int nbLiens = vue.getNbWidgetsZoneLiens();
for (int i = 0; i < nbLiens; i++) {
Button boutonCourant = (Button) vue.zoneLiens.getWidget(i);
 
HasClickHandlers boutonCourant = vue.getWidgetZoneLiensHasClickHandlers(i);
boutonCourant.addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
Button boutonCourant = (Button) event.getSource();
HasText boutonCourant = (HasText)event.getSource();
pageCourante = Integer.parseInt(boutonCourant.getText());
int debut = (Integer.parseInt(boutonCourant.getText()) - 1) * pas;
int fin = (debut + pas);
204,10 → 244,29
});
}
}
public void premierePage() {
if (pageCourante > 1) {
pageCourante = 1;
int debut = (pageCourante -1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
synchroniser();
}
}
public void dernierePage() {
if (pageCourante < nbPage - 1) {
pageCourante = nbPage - 1;
int debut = (pageCourante -1) * pas;
int fin = debut + pas;
changerPage(debut, fin);
actualiserLiens();
synchroniser();
}
}
 
/**
* Retourne la limite supèrieure du nombre de pages à afficher
* */
public void pageSuivante() {
if (pageCourante < nbPage - 1) {
pageCourante++;
219,9 → 278,6
}
}
 
/**
* Retourne la limite infèrieure du nombre de pages à afficher
* */
public void pagePrecedente() {
if (pageCourante > 1) {
pageCourante--;
233,11 → 289,11
}
}
 
protected int getPageCourante() {
public int getPageCourante() {
return this.pageCourante;
}
protected int getPas() {
public int getPas() {
return this.pas;
}
/trunk/war/img/first.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/trunk/war/img/first.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/trunk/war/img/last.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/trunk/war/img/last.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property