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 : Sélectionner tout - Visualiser dans une fenêtre à part
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...