1,7 → 1,16 |
package org.tela_botanica.client.modeles; |
|
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.ListePaginable; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
|
import com.extjs.gxt.ui.client.Registry; |
import com.google.gwt.i18n.client.Dictionary; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONNumber; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONString; |
|
/** |
* Table de hachage composée d'informations sur les Valeurs des listes, renvoyé par un objet de type DAO |
10,10 → 19,13 |
* @author david delon |
* |
*/ |
public class PersonneListe extends aDonneeListe<Personne> { |
public class PersonneListe extends aDonneeListe<Personne> implements ListePaginable{ |
|
private static final long serialVersionUID = 2930530504922300155L; |
|
private int currentPage = 0; |
private int nbElementsPage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage")); |
private int nbElementsTotal; |
private Rafraichissable vueARafraichir; |
/** |
* Constructeur sans paramètres |
*/ |
45,6 → 57,88 |
this.put(personne.getId(), personne); |
} |
} |
} |
|
public PersonneListe(JSONArray personneListe, JSONNumber nbElements, Rafraichissable vueARafraichir) { |
super(personneListe.size()); |
|
this.nbElementsTotal = Integer.valueOf(nbElements.toString()); |
final int taillemax = personneListe.size(); |
for (int i = 0; i < taillemax; i++) { |
JSONObject personneCourante = personneListe.get(i).isObject() ; |
|
if (personneCourante != null) { |
Personne personne = new Personne(personneCourante); |
this.put(personne.getId(), personne); |
} |
} |
|
this.vueARafraichir = vueARafraichir; |
} |
|
public int[] getPageTable() { |
|
int[] page = new int[4]; |
|
//nombre de pages au total |
page[0] = calculerNbPages(); |
|
//Page En Cours |
page[1] = currentPage; |
|
//nbElementsParPage |
page[2] = nbElementsPage; |
|
// et le dernier le nombre total d'éléments |
page[3] = nbElementsTotal; |
|
return page; |
} |
|
/** |
* Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page |
* en cours |
* @return le nombre de pages |
*/ |
public int calculerNbPages() |
{ |
// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement |
// pour eviter qu'il arrondisse mal la division |
// nombre de pages = (nombre d'element / taille de la page) arrondie à l'entier superieur |
|
double nPage = (1.0*nbElementsTotal)/(1.0*nbElementsPage) ; |
double nPageRound = Math.ceil(nPage) ; |
Double nPageInt = new Double(nPageRound) ; |
|
// on convertit en entier |
return nPageInt.intValue() ; |
} |
|
@Override |
public void changerNumeroPage(int pageCourante) { |
|
currentPage = pageCourante; |
selectionnerPersonne(); |
} |
|
@Override |
public void changerTaillePage(int nouvelleTaillePage) { |
|
nbElementsPage = nouvelleTaillePage; |
selectionnerPersonne(); |
} |
|
|
public void setPageCourante(int pageCourante) { |
this.currentPage = pageCourante; |
|
}; |
|
|
public void selectionnerPersonne() { |
Mediateur mediateur =(Mediateur) Registry.get(RegistreId.MEDIATEUR); |
mediateur.selectionnerPersonne(vueARafraichir, null, null, currentPage, 15); |
} |
|
|
} |