Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 435 → Rev 436

/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();
}
 
}