Remplir Grid avec données Hibernate
Bonjour,
je réalise une petite application dans laquelle je récupère des données depuis ma base pour les insérer dans un Grid (planning). Jusque là tout va bien. Le seul petit soucis c'est que tout ça prend du temps, aussi j'aimerais bien afficher un petit Timer (ou icone de chargement) le temps que les données soient chargées, puis afficher mon planning.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
public class PremiersTestsGWTPage extends Page {
private List listeCellules; //liste des cellules contenues dans la base
private Grid titres; //la grille des titres
private GrilleGestionClics planning; //la grille planning (gestions des clics)
private String tabJours[] = {"Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"};
protected void createWidget(WidgetContainer container) {
AbsolutePanel abs = new AbsolutePanel();
//construction des titres
construireTitre();
//construction du planning
construirePlanning();
//récupération des cellules contenues dans la BDD
//et ajout dans la grille
recupCellulesTest();
//création du panel et ajout des widgets
FlowPanel listFlowPanel = new FlowPanel ();
listFlowPanel.add(titres);
listFlowPanel.add(planning);
listFlowPanel.setWidth("815px");
abs.add(listFlowPanel, 30,30);
container.add(abs);
}
/**
*construit la ligne de titre pour le planning
*
*/
private void construireTitre(){
//création de la ligne des titres
//pas d'intérêt pour ma question ;)
}
/**
*construit les cases du planning
*
*/
private void construirePlanning(){
planning = new GrilleGestionClics(11, 8);
planning.setCellSpacing(0);
planning.setCellPadding(0);
planning.setWidth("100%");
planning.setStyleName("stylePlanning");
//ajout des tranches horaires
for(int i=0; i<11; i++){
planning.setText(i, 0, (i+9)+"h00 - "+(i+10)+"h00");
planning.getCellFormatter().setWidth(i, 0, "115px");
}
}
/**
*recupere l'ensemble des cellules de tests contenues dans la BDD
* et remplit la grille
*/
private void recupCellulesTest(){
GestionCellulesTestAsync gestionCell = GestionCellulesTest.Util.getInstance();
AsyncCallback callback = new AsyncCallback() {
public void onSuccess(Object result) {
//ok
listeCellules = (List)result;
remplirPlanning();
}
public void onFailure(Throwable caught) {
// méthode exécutée en cas d'erreur
Window.alert("erreur de communication avec le serveur : "
+caught.getMessage());
}
};
gestionCell.getAllCellTest(callback);
}
/*
*Remplit la grille avec les cellules contenues dans la liste
*
*/
private void remplirPlanning(){
//ajout de cellules de test
//préparation de l'index de cellules, si nécessaire
int indexL=0;
//si la liste n'est pas null et pas vide :
if(listeCellules!=null && !listeCellules.isEmpty()){
for(int i=0; i<11; i++){
for(int j=1; j<8; j++){
//si liste pas null et pas vide
planning.setWidget(i, j, new CasePlanning((CelluleTest)listeCellules.get(indexL)));
indexL++;
}
}
}
//sinon, on crée une cellule vide et on l'ajoute à la base
else{
//là encore c'est pas le soucis...
}
} |
Merci d'avance
PS : n'hésitez pas s'il vous faut plus d'infos...