10,12 → 10,12 |
import com.google.gwt.user.client.ui.ListBox; |
|
/** |
* @author gregoire |
* Pagination GENERIQUE qui permet d'afficher un nombre donné d'éléments (pas) |
* La méthode changerPage est abstraite et doit être définie lors de l'instanciation |
* de la classe pagination pour permettre d'afficher la suite des éléments |
* La méthode actualiserPasCache est abstraite car le pas est différent en |
* fonction de la page où l'on se trouve |
* @author gregoire Pagination GENERIQUE qui permet d'afficher un nombre donné |
* d'éléments (pas) La méthode changerPage est abstraite et doit être |
* définie lors de l'instanciation de la classe pagination pour |
* permettre d'afficher la suite des éléments La méthode |
* actualiserPasCache est abstraite car le pas est différent en fonction |
* de la page où l'on se trouve |
* */ |
public abstract class PaginationPresenteur { |
|
24,18 → 24,32 |
private int pageCourante = 1; |
private int nbElementsTotal = 0; |
private int pas = 10; |
|
|
/** |
* Constructeur de l'application |
* @param nbElementsTotal : le nombre total des éléments à paginer |
* @param pas : le nombre d'éléments à afficher par page |
* |
* @param nbElementsTotal |
* : le nombre total des éléments à paginer |
* @param pas |
* : le nombre d'éléments à afficher par page |
* */ |
public PaginationPresenteur(int nbElementsTotal, int pas) { |
this.nbElementsTotal = nbElementsTotal; |
this.pas=pas; |
vue = new PaginationVue(); |
changerPas(pas); |
} |
|
|
/** |
* Methode go du modèle MVP |
* |
* @param container |
* : la vue ou éxécuter l'affichage |
*/ |
public void go(HasWidgets container) { |
actualiserLiens(); |
container.add(vue); |
} |
|
/** Met à jour le nombre de page en fonction du pas */ |
private void actualiserNbPage() { |
Double nombrePages = Math.ceil((double) nbElementsTotal / (double) pas); |
42,31 → 56,46 |
this.nbPage = nombrePages.intValue(); |
} |
|
/** Changer le pas de la pagination |
* @param pas : le nombre d'éléments à afficher par page */ |
/** |
* Changer le pas de la pagination |
* |
* @param pas |
* : le nombre d'éléments à afficher par page |
*/ |
public void changerPas(int pas) { |
this.pas = pas; |
actualiserNbPage(); |
changerPage(pas * pageCourante, pas * (pageCourante + 1)); |
switch (pas) { |
case 5: |
vue.getSelecteurPas().setSelectedIndex(0); |
break; |
case 10: |
vue.getSelecteurPas().setSelectedIndex(1); |
break; |
case 15: |
vue.getSelecteurPas().setSelectedIndex(2); |
break; |
case 20: |
vue.getSelecteurPas().setSelectedIndex(3); |
break; |
default: |
break; |
} |
actualiserPasCache(pas); |
} |
|
/** Methode Go du modèle MVP |
* @param container : la vue ou éxécuter l'affichage */ |
public void go(HasWidgets container) { |
actualiserLiens(); |
container.add(vue); |
} |
|
/** Actualiser les liens pour n'afficher 5 avant et 5 après |
|
/** |
* Actualiser les liens pour n'afficher 5 avant et 5 après |
* */ |
public void actualiserLiens() { |
|
HorizontalPanel zoneLiens = vue.zoneLiens; |
zoneLiens.clear(); |
|
|
|
int pageDebut = pagesAvant(); |
int pageFin = pagesApres(); |
|
|
for (int i = pageDebut; i < pageFin; i++) { |
Button bouton = new Button(String.valueOf(i)); |
zoneLiens.add(bouton); |
74,18 → 103,18 |
setBoutonActif(); |
gererEvenements(); |
} |
|
|
private int pagesAvant() { |
int pageDebut = pageCourante - 5; |
vue.afficherBoutonDebut(); |
if (pageDebut < 1) { |
pageDebut = 1; |
//Masquer le bouton de début |
// Masquer le bouton de début |
vue.masquerBoutonDebut(); |
} |
return pageDebut; |
} |
|
|
private int pagesApres() { |
int pageFin = pageCourante + 5; |
vue.afficherBoutonSuivant(); |
95,10 → 124,10 |
} |
return pageFin; |
} |
|
|
private void setBoutonActif() { |
int nbLiens = vue.zoneLiens.getWidgetCount(); |
for (int i=0; i < nbLiens; i++) { |
for (int i = 0; i < nbLiens; i++) { |
Button boutonCourant = (Button) vue.zoneLiens.getWidget(i); |
if (boutonCourant.getText().equals(String.valueOf(pageCourante))) { |
boutonCourant.setStyleName("actif"); |
108,7 → 137,8 |
} |
} |
|
/** Gérer les évènements sur les boutons |
/** |
* Gérer les évènements sur les boutons |
* */ |
public void gererEvenements() { |
vue.selecteurPas.addChangeHandler(new ChangeHandler() { |
120,7 → 150,7 |
} |
|
}); |
|
|
vue.boutonPrecedent.addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
134,10 → 164,9 |
pageSuivante(); |
} |
}); |
|
|
|
int nbLiens = vue.zoneLiens.getWidgetCount(); |
for (int i=0; i < nbLiens; i++) { |
for (int i = 0; i < nbLiens; i++) { |
Button boutonCourant = (Button) vue.zoneLiens.getWidget(i); |
|
boutonCourant.addClickHandler(new ClickHandler() { |
156,7 → 185,8 |
} |
} |
|
/** Retourne la limite supèrieur du nombre de pages à afficher |
/** |
* Retourne la limite supèrieur du nombre de pages à afficher |
* */ |
public void pageSuivante() { |
if (pageCourante < nbPage - 1) { |
167,8 → 197,9 |
actualiserLiens(); |
} |
} |
|
/** Retourne la limite infèrieure du nombre de pages à afficher |
|
/** |
* Retourne la limite infèrieure du nombre de pages à afficher |
* */ |
public void pagePrecedente() { |
if (pageCourante > 1) { |
179,12 → 210,13 |
actualiserLiens(); |
} |
} |
|
|
protected int getPageCourante() { |
return this.pageCourante; |
} |
|
public abstract void changerPage(int debut, int fin); |
|
public abstract void actualiserPasCache(int pas); |
|
} |