Subversion Repositories eFlore/Applications.cel

Rev

Rev 31 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 31 Rev 36
1
package org.tela_botanica.client;
1
package org.tela_botanica.client;
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.modeles.Utilisateur;
5
import org.tela_botanica.client.modeles.Utilisateur;
6
 
6
 
7
import org.tela_botanica.client.observation.ObservationMediateur;
7
import org.tela_botanica.client.observation.ObservationMediateur;
8
import org.tela_botanica.client.vues.EtatConnexionVue;
8
import org.tela_botanica.client.vues.EtatConnexionVue;
9
import org.tela_botanica.client.vues.FormulaireDeConnexionVue;
9
import org.tela_botanica.client.vues.FormulaireDeConnexionVue;
10
 
10
 
11
import com.google.gwt.user.client.Timer;
11
import com.google.gwt.user.client.Timer;
12
import com.google.gwt.user.client.Window;
12
import com.google.gwt.user.client.Window;
13
import com.google.gwt.user.client.ui.TabPanel;
13
import com.google.gwt.user.client.ui.TabPanel;
14
import com.gwtext.client.widgets.Panel;
14
import com.gwtext.client.widgets.Panel;
15
import com.gwtext.client.widgets.layout.FitLayout;
15
import com.gwtext.client.widgets.layout.FitLayout;
-
 
16
import com.gwtext.client.widgets.layout.RowLayout;
-
 
17
import com.gwtext.client.widgets.layout.RowLayoutData;
16
import com.gwtext.client.widgets.layout.VerticalLayout;
18
import com.gwtext.client.widgets.layout.VerticalLayout;
17
 
19
 
18
/**
20
/**
19
 * Mediateur gérant les interactions entre vues et les echanges de données
21
 * Mediateur gérant les interactions entre vues et les echanges de données
20
 * C'est un singleton. 
22
 * C'est un singleton. 
21
 * @author david delon 
23
 * @author david delon 
22
 *
24
 *
23
 */
25
 */
24
 
26
 
25
public class CarnetEnLigneMediateur implements Rafraichissable {
27
public class CarnetEnLigneMediateur implements Rafraichissable {
26
	
28
	
27
	
29
	
28
	/**
30
	/**
29
	 * booleen qui verifie l'unicite de l'instance
31
	 * booleen qui verifie l'unicite de l'instance
30
	 */
32
	 */
31
	private static boolean estInstancie = false ;
33
	private static boolean estInstancie = false ;
32
 
34
 
33
	/**
35
	/**
34
	 * pointeur vers le médiateur lui même (pour le pattern singleton)
36
	 * pointeur vers le médiateur lui même (pour le pattern singleton)
35
	 */
37
	 */
36
	private static CarnetEnLigneMediateur thisMediateur = null ;  
38
	private static CarnetEnLigneMediateur thisMediateur = null ;  
37
		
39
		
38
	/**
40
	/**
39
	 * modele de données
41
	 * modele de données
40
	 */
42
	 */
41
	
43
	
42
	private  CarnetEnLigneModele carnetEnLigneModele=null;
44
	private  CarnetEnLigneModele carnetEnLigneModele=null;
43
 
45
 
44
	
46
	
45
	/**
47
	/**
46
	 * panneau principal de l'application "Carnet en ligne"
48
	 * panneau principal de l'application "Carnet en ligne"
47
	 */
49
	 */
48
 
50
 
49
	private Panel panneauPrincipalCarnetEnLigne= null ;
51
	private Panel panneauPrincipalCarnetEnLigne= null ;
50
	
52
	
51
	
53
	
52
	
54
	
53
	/**
55
	/**
54
	 * panneau a onglet pour les observation et les images
56
	 * panneau a onglet pour les observation et les images
55
	 */ 
57
	 */ 
56
	
58
	
57
	
59
	
58
	private com.gwtext.client.widgets.TabPanel ongletsObservationsImages=null;
60
	private com.gwtext.client.widgets.TabPanel ongletsObservationsImages=null;
59
	
61
	
60
	
62
	
61
	/**
63
	/**
62
	 * Indicateur d'etat de la connexion utilisateur
64
	 * Indicateur d'etat de la connexion utilisateur
63
	 */
65
	 */
64
	
66
	
65
	private EtatConnexionVue etatConnexionVue=null;
67
	private EtatConnexionVue etatConnexionVue=null;
66
	
68
	
67
	
69
	
68
	/**
70
	/**
69
	 * Texte d'invite connexion  
71
	 * Texte d'invite connexion  
70
	 */
72
	 */
71
	private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica"; 
73
	private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica"; 
72
 
74
 
73
	/**
75
	/**
74
	 * Boolean indiquant un essai de connexion
76
	 * Boolean indiquant un essai de connexion
75
	 */
77
	 */
76
	
78
	
77
	private boolean tentativeConnection=false;
79
	private boolean tentativeConnection=false;
78
	
80
	
79
 
81
 
80
	/**
82
	/**
81
	 *  Formulaire de connexion (lazy instantiation)
83
	 *  Formulaire de connexion (lazy instantiation)
82
	 *  
84
	 *  
83
	 */
85
	 */
84
	
86
	
85
	private FormulaireDeConnexionVue formulaireDeConnexionVue=null;
87
	private FormulaireDeConnexionVue formulaireDeConnexionVue=null;
86
 
88
 
87
	
89
	
88
	
90
	
89
	/**
91
	/**
90
	 * Mediateur Gestion des images
92
	 * Mediateur Gestion des images
91
	 */
93
	 */
92
	
94
	
93
	private ImageMediateur imageMediateur=null;
95
	private ImageMediateur imageMediateur=null;
94
	
96
	
95
	/**
97
	/**
96
	 * Mediateur Gestion des observations
98
	 * Mediateur Gestion des observations
97
	 */
99
	 */
98
	
100
	
99
	private ObservationMediateur observationMediateur=null;
101
	private ObservationMediateur observationMediateur=null;
100
	
102
	
101
 
103
 
102
 
104
 
103
	/**
105
	/**
104
	 * Utilisateur en cours
106
	 * Utilisateur en cours
105
	 */
107
	 */
106
 
108
 
107
		
109
		
108
	private Utilisateur utilisateur=null; 
110
	private Utilisateur utilisateur=null; 
109
	
111
	
110
 
112
 
111
	
113
	
112
	public static CarnetEnLigneMediateur Instance()
114
	public static CarnetEnLigneMediateur Instance()
113
	{
115
	{
114
			if(!estInstancie || thisMediateur==null)
116
			if(!estInstancie || thisMediateur==null)
115
			{
117
			{
116
				estInstancie = true ;
118
				estInstancie = true ;
117
				thisMediateur = new CarnetEnLigneMediateur() ;
119
				thisMediateur = new CarnetEnLigneMediateur() ;
118
			}
120
			}
119
			
121
			
120
			return thisMediateur ;
122
			return thisMediateur ;
121
			
123
			
122
	}
124
	}
123
	
125
	
124
	
126
	
125
	/**
127
	/**
126
	 * constructeur privé (on accède a la classe par la méthode getInstance
128
	 * constructeur privé (on accède a la classe par la méthode getInstance
127
	 */
129
	 */
128
	
130
	
129
	private CarnetEnLigneMediateur() {
131
	private CarnetEnLigneMediateur() {
130
	
132
	
131
		
133
		
132
		panneauPrincipalCarnetEnLigne = new Panel("Carnet en ligne");
134
		panneauPrincipalCarnetEnLigne = new Panel("Carnet en ligne");
133
		
135
		
134
//		Disposition 
136
//		Disposition 
135
		
137
		
136
		panneauPrincipalCarnetEnLigne.setLayout(new VerticalLayout());
138
		panneauPrincipalCarnetEnLigne.setLayout(new RowLayout());
137
 
139
 
138
		
140
		
139
//		On crée un modèle d'acces aux donnnes 
141
//		On crée un modèle d'acces aux donnnes 
140
		
142
		
141
		carnetEnLigneModele=CarnetEnLigneModele.Instance();
143
		carnetEnLigneModele=CarnetEnLigneModele.Instance();
142
		
144
		
143
			
145
			
144
		// La vue affichant le statut de la connexion 
146
		// La vue affichant le statut de la connexion 
145
 
147
 
146
		etatConnexionVue=new EtatConnexionVue(this);
148
		etatConnexionVue=new EtatConnexionVue(this);
-
 
149
		etatConnexionVue.setLayout(new FitLayout()) ;
147
		
150
		
148
		// Le panneau à onglet qui contient les 2 applications Observation et Images 
151
		// Le panneau à onglet qui contient les 2 applications Observation et Images 
149
		
152
		
150
		ongletsObservationsImages = new com.gwtext.client.widgets.TabPanel();
153
		ongletsObservationsImages = new com.gwtext.client.widgets.TabPanel();
151
		
154
		
152
		panneauPrincipalCarnetEnLigne.add(etatConnexionVue);
-
 
153
		
-
 
154
	
155
		panneauPrincipalCarnetEnLigne.add(etatConnexionVue,new RowLayoutData(20));
155
 
156
		
156
		//	on ajoute le panneau a onglet au panneau principal
157
		//	on ajoute le panneau a onglet au panneau principal
157
		
158
		
158
		panneauPrincipalCarnetEnLigne.add(ongletsObservationsImages);
159
		panneauPrincipalCarnetEnLigne.add(ongletsObservationsImages);
159
		
160
		
160
	
161
	
161
		// On ajoute les applications 		
162
		// On ajoute les applications 		
162
		observationMediateur = ObservationMediateur.Instance(this);
163
		observationMediateur = ObservationMediateur.Instance(this);
163
		imageMediateur= ImageMediateur.Instance(this);
164
		imageMediateur= ImageMediateur.Instance(this);
164
		
165
		
165
		panneauPrincipalCarnetEnLigne.setSize(Window.getClientWidth(), Window.getClientHeight() - etatConnexionVue.getHeight()) ;
166
		//panneauPrincipalCarnetEnLigne.setSize(Window.getClientWidth(), Window.getClientHeight() - etatConnexionVue.getHeight()) ;
166
		imageMediateur.getPanneauPrincipalImage().setSize(panneauPrincipalCarnetEnLigne.getWidth(),panneauPrincipalCarnetEnLigne.getHeight() - 20) ;
167
		imageMediateur.getPanneauPrincipalImage().setSize(panneauPrincipalCarnetEnLigne.getWidth(),panneauPrincipalCarnetEnLigne.getHeight() - 20) ;
167
		observationMediateur.getPanneauPrincipalObservation().setSize(panneauPrincipalCarnetEnLigne.getWidth(),panneauPrincipalCarnetEnLigne.getHeight() - 20) ;
168
		observationMediateur.getPanneauPrincipalObservation().setSize(panneauPrincipalCarnetEnLigne.getWidth(),panneauPrincipalCarnetEnLigne.getHeight() - 20) ;
168
		
169
		
169
		//	on ajoute les panneaux  principaux des applications au panneau à onglets
170
		//	on ajoute les panneaux  principaux des applications au panneau à onglets
170
		ongletsObservationsImages.add(imageMediateur.getPanneauPrincipalImage());
171
		ongletsObservationsImages.add(imageMediateur.getPanneauPrincipalImage());
171
		ongletsObservationsImages.add(observationMediateur.getPanneauPrincipalObservation());	
172
		ongletsObservationsImages.add(observationMediateur.getPanneauPrincipalObservation());	
172
		
173
		
173
	}
174
	}
174
	
175
	
175
	
176
	
176
	public void getEtatUtilisateur() { 
177
	public void getEtatUtilisateur() { 
177
		
178
		
178
			
179
			
179
		carnetEnLigneModele.getEtatUtilisateur(this); 
180
		carnetEnLigneModele.getEtatUtilisateur(this); 
180
				
181
				
181
		
182
		
182
	}
183
	}
183
 
184
 
184
 
185
 
185
	// Methode publiques
186
	// Methode publiques
186
	
187
	
187
	
188
	
188
	
189
	
189
	/**
190
	/**
190
	 * Recherche Identifiant utilisateur en cours et etat de connection
191
	 * Recherche Identifiant utilisateur en cours et etat de connection
191
	 * @return Utilisateur
192
	 * @return Utilisateur
192
	 */
193
	 */
193
	
194
	
194
	
195
	
195
	public Utilisateur getUtilisateur() {
196
	public Utilisateur getUtilisateur() {
196
		return utilisateur;
197
		return utilisateur;
197
	}
198
	}
198
 
199
 
199
	/**
200
	/**
200
	 * Deconnecte l'utilisateur passe en parametre
201
	 * Deconnecte l'utilisateur passe en parametre
201
	 */
202
	 */
202
    public void deconnecterUtilisateur() {
203
    public void deconnecterUtilisateur() {
203
 
204
 
204
			
205
			
205
		carnetEnLigneModele.deconnecterUtilisateur(this, utilisateur.getIdentifiant());
206
		carnetEnLigneModele.deconnecterUtilisateur(this, utilisateur.getIdentifiant());
206
 
207
 
207
		
208
		
208
		
209
		
209
	}
210
	}
210
 
211
 
211
	public void connecterUtilisateur(String login, String password) {
212
	public void connecterUtilisateur(String login, String password) {
212
	
213
	
213
		tentativeConnection=true;
214
		tentativeConnection=true;
214
		carnetEnLigneModele.connecterUtilisateur(this, login, password); 
215
		carnetEnLigneModele.connecterUtilisateur(this, login, password); 
215
				
216
				
216
 
217
 
217
		
218
		
218
	}
219
	}
219
 
220
 
220
 
221
 
221
	
222
	
222
	/**
223
	/**
223
	 *  Affichage etat de la connexion
224
	 *  Affichage etat de la connexion
224
	 */
225
	 */
225
	
226
	
226
	
227
	
227
	private void afficheEtatConnexion() {
228
	private void afficheEtatConnexion() {
228
		 
229
		 
229
		
230
		
230
		if (!utilisateur.isIdentifie()) {
231
		if (!utilisateur.isIdentifie()) {
231
			   etatConnexionVue.setEtat(texteDeconnexion,false);
232
			   etatConnexionVue.setEtat(texteDeconnexion,false);
232
		}
233
		}
233
		else {
234
		else {
234
		      etatConnexionVue.setEtat(utilisateur.getIdentifiant()+ " (deconnexion)",true);
235
		      etatConnexionVue.setEtat(utilisateur.getIdentifiant()+ " (deconnexion)",true);
235
		}
236
		}
236
		
237
		
237
	}
238
	}
238
 
239
 
239
	
240
	
240
	/**
241
	/**
241
	 * 
242
	 * 
242
	 * Affichage boite de connexion
243
	 * Affichage boite de connexion
243
	 *
244
	 *
244
	 */
245
	 */
245
	
246
	
246
	
247
	
247
	public void afficherDialogueConnexion() {
248
	public void afficherDialogueConnexion() {
248
		
249
		
249
		  if (formulaireDeConnexionVue==null) { 
250
		  if (formulaireDeConnexionVue==null) { 
250
			  formulaireDeConnexionVue= new FormulaireDeConnexionVue(this);
251
			  formulaireDeConnexionVue= new FormulaireDeConnexionVue(this);
251
		  }
252
		  }
252
		  
253
		  
253
		  // Position it roughly in the middle of the screen.
254
		  // Position it roughly in the middle of the screen.
254
		  int left = (Window.getClientWidth() - 512) / 2;
255
		  int left = (Window.getClientWidth() - 512) / 2;
255
		  int top = (Window.getClientHeight() - 256) / 2;
256
		  int top = (Window.getClientHeight() - 256) / 2;
256
		  
257
		  
257
		  
258
		  
258
		  formulaireDeConnexionVue.setPopupPosition(left, top);
259
		  formulaireDeConnexionVue.setPopupPosition(left, top);
259
		  formulaireDeConnexionVue.show();
260
		  formulaireDeConnexionVue.show();
260
		
261
		
261
	}
262
	}
262
 
263
 
263
 
264
 
264
	
265
	
265
 
266
 
266
	public Panel getPanneauPrincipalCarnetEnLigne() {
267
	public Panel getPanneauPrincipalCarnetEnLigne() {
267
		return panneauPrincipalCarnetEnLigne;
268
		return panneauPrincipalCarnetEnLigne;
268
	}
269
	}
269
 
270
 
270
	
271
	
271
//	 TODO : repandre rafraichissement
272
//	 TODO : repandre rafraichissement
272
 
273
 
273
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
274
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
274
 
275
 
275
			if (nouvelleDonnees instanceof Utilisateur) {
276
			if (nouvelleDonnees instanceof Utilisateur) {
276
							      
277
							      
277
				utilisateur = (Utilisateur) nouvelleDonnees;
278
				utilisateur = (Utilisateur) nouvelleDonnees;
278
								
279
								
279
				afficheEtatConnexion();
280
				afficheEtatConnexion();
280
				
281
				
281
				if ((tentativeConnection) && !utilisateur.isIdentifie()) {
282
				if ((tentativeConnection) && !utilisateur.isIdentifie()) {
282
			
283
			
283
					formulaireDeConnexionVue.afficherMessageAlerte();
284
					formulaireDeConnexionVue.afficherMessageAlerte();
284
				}
285
				}
285
				else {
286
				else {
286
					if ((tentativeConnection) && utilisateur.isIdentifie()) {						
287
					if ((tentativeConnection) && utilisateur.isIdentifie()) {						
287
						formulaireDeConnexionVue.hide();
288
						formulaireDeConnexionVue.hide();
288
					}
289
					}
289
				}
290
				}
290
				
291
				
291
 
292
 
292
				
293
				
293
			// On lance l'affichage des observations
294
			// On lance l'affichage des observations
294
				
295
				
295
				observationMediateur.obtenirNombreObservation();
296
				observationMediateur.obtenirNombreObservation();
296
 
297
 
297
			}
298
			}
298
 
299
 
299
	}
300
	}
300
 
301
 
301
		
302
		
302
 
303
 
303
}
304
}