5,7 → 5,6 |
import org.tela_botanica.del.client.navigation.evenement.pagination.EvenementChangementPas; |
import org.tela_botanica.del.client.navigation.evenement.pagination.GestionnaireEvenementChangementPage; |
import org.tela_botanica.del.client.navigation.evenement.pagination.GestionnaireEvenementChangementPas; |
|
import com.google.gwt.event.dom.client.ChangeEvent; |
import com.google.gwt.event.dom.client.ChangeHandler; |
import com.google.gwt.event.dom.client.ClickEvent; |
12,8 → 11,6 |
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; |
|
28,47 → 25,23 |
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 afficherPas(int pas); |
|
public void mettreEnValeurPageActive(int pageActive); |
|
public void mettreNbTotalPages(int nbPages); |
public HasChangeHandlers getSaisiePageCourante(); |
public int getPageSaisie(); |
public void setPageCourante(int pageCourante); |
} |
|
private Vue vue; |
92,6 → 65,7 |
this.vue = vue; |
this.pas = pas; |
this.pageCourante = pageCourante; |
vue.setPageCourante(pageCourante); |
this.nbPage = calculerNbPage(); |
} |
|
104,7 → 78,6 |
public void go(HasWidgets container) { |
container.add(vue.asWidget()); |
gererEvenements(); |
actualiserLiensPagesPagination(); |
actualiserPas(); |
actualiserAffichageBoutons(); |
} |
114,6 → 87,28 |
* selecteur pas) |
* */ |
protected void gererEvenements() { |
|
vue.getSaisiePageCourante().addChangeHandler(new ChangeHandler() { |
@Override |
public void onChange(ChangeEvent event) { |
int pageSaisie; |
try { |
pageSaisie = vue.getPageSaisie(); |
if (pageSaisie < 0) { |
pageSaisie = 1; |
} else if (pageSaisie > nbPage){ |
pageSaisie = nbPage; |
} |
} catch (NumberFormatException e) { |
pageSaisie = pageCourante; |
} |
pageCourante = pageSaisie; |
chargerElements(pas * (pageCourante - 1), pas * (pageCourante)); |
vue.setPageCourante(pageCourante); |
actualiserAffichageBoutons(); |
} |
}); |
|
vue.getSelecteurPas().addChangeHandler(new ChangeHandler() { |
@Override |
public void onChange(ChangeEvent event) { |
167,7 → 162,7 |
public void onChangementPage(EvenementChangementPage event) { |
if (event.getGroupePagination() == groupePagination) { |
pageCourante = event.getPageAAfficher(); |
mettreEnValeurPageCourante(); |
vue.setPageCourante(pageCourante); |
actualiserAffichageBoutons(); |
} |
} |
181,7 → 176,6 |
// modifie le pas et les liens en fonction |
pas = event.getPas(); |
actualiserPas(); |
actualiserLiensPagesPagination(); |
} |
} |
}); |
194,54 → 188,12 |
} |
} |
|
/** |
* Gérer les évènements sur les boutons dynamiques (qui sont recréés à |
* chaque fois) |
* */ |
private void gererEvenementsBoutonsDynamiques() { |
int nbLiens = vue.getNbWidgetsZoneLiens(); |
for (int i = 0; i < nbLiens; i++) { |
HasClickHandlers boutonCourant = vue.getWidgetZoneLiensHasClickHandlers(i); |
boutonCourant.addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
HasText boutonCourant = (HasText) event.getSource(); |
int pageAAfficher = Integer.parseInt(boutonCourant.getText()); |
pageCourante = pageAAfficher; |
chargerElements(pas * (pageAAfficher - 1), pas * (pageAAfficher)); |
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher, groupePagination)); |
} |
}); |
} |
} |
|
public void actualiserPas() { |
actualiserPasCache(pas); |
vue.afficherPas(pas); |
} |
|
/** |
* Actualiser les liens pour n'afficher 5 avant et 5 après |
* */ |
public void actualiserLiensPagesPagination() { |
|
this.nbPage = calculerNbPage(); |
|
vue.mettreNbTotalPages(nbPage); |
HasWidgets zoneLiens = vue.getZoneLiens(); |
zoneLiens.clear(); |
|
int pageDebut = 1; |
int pageFin = nbPage; |
|
for (int i = pageDebut; i <= pageFin; i++) { |
vue.ajouterBoutonZoneLiens(i + ""); |
} |
gererEvenementsBoutonsDynamiques(); |
mettreEnValeurPageCourante(); |
} |
|
public int getPageCourante() { |
public int getPageCourante() { |
return this.pageCourante; |
} |
|
304,10 → 256,6 |
return nombrePages.intValue(); |
} |
|
public void mettreEnValeurPageCourante() { |
getVue().mettreEnValeurPageActive(getPageCourante()); |
} |
|
public void setNbPages(int nbPages) { |
this.nbPage = nbPages; |
} |