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