Subversion Repositories eFlore/Applications.cel

Rev

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

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