Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 37 Rev 38
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(observationMediateur.getPanneauPrincipalObservation());
171
		ongletsObservationsImages.add(observationMediateur.getPanneauPrincipalObservation());
172
		ongletsObservationsImages.add(imageMediateur.getPanneauPrincipalImage());	
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
		
207
		
208
	}
208
	}
209
 
209
 
210
	public void connecterUtilisateur(String login, String password) {
210
	public void connecterUtilisateur(String login, String password) {
211
	
211
	
212
		tentativeConnection=true;
212
		tentativeConnection=true;
213
		carnetEnLigneModele.connecterUtilisateur(this, login, password); 
213
		carnetEnLigneModele.connecterUtilisateur(this, login, password); 
214
				
-
 
215
 
-
 
216
		
214
		
217
	}
215
	}
218
 
216
 
219
 
217
 
220
	
218
	
221
	/**
219
	/**
222
	 *  Affichage etat de la connexion
220
	 *  Affichage etat de la connexion
223
	 */
221
	 */
224
	
222
	
225
	
223
	
226
	private void afficheEtatConnexion() {
224
	private void afficheEtatConnexion() {
227
		 
225
		 
228
		
226
		
229
		if (!utilisateur.isIdentifie()) {
227
		if (!utilisateur.isIdentifie()) {
230
			   etatConnexionVue.setEtat(texteDeconnexion,false);
228
			   etatConnexionVue.setEtat(texteDeconnexion,false);
231
		}
229
		}
232
		else {
230
		else {
233
		      etatConnexionVue.setEtat(utilisateur.getIdentifiant()+ " (deconnexion)",true);
231
		      etatConnexionVue.setEtat(utilisateur.getIdentifiant()+ " (deconnexion)",true);
234
		}
232
		}
235
		
233
		
236
	}
234
	}
237
 
235
 
238
	
236
	
239
	/**
237
	/**
240
	 * 
238
	 * 
241
	 * Affichage boite de connexion
239
	 * Affichage boite de connexion
242
	 *
240
	 *
243
	 */
241
	 */
244
	
242
	
245
	
243
	
246
	public void afficherDialogueConnexion() {
244
	public void afficherDialogueConnexion() {
247
		
245
		
248
		  if (formulaireDeConnexionVue==null) { 
246
		  if (formulaireDeConnexionVue==null) { 
249
			  formulaireDeConnexionVue= new FormulaireDeConnexionVue(this);
247
			  formulaireDeConnexionVue= new FormulaireDeConnexionVue(this);
250
		  }
248
		  }
251
		  
249
		  
252
		  // Position it roughly in the middle of the screen.
250
		  // Position it roughly in the middle of the screen.
253
		  int left = (Window.getClientWidth() - 512) / 2;
251
		  int left = (Window.getClientWidth() - 512) / 2;
254
		  int top = (Window.getClientHeight() - 256) / 2;
252
		  int top = (Window.getClientHeight() - 256) / 2;
255
		  
253
		  
256
		  
254
		  
257
		  formulaireDeConnexionVue.setPopupPosition(left, top);
255
		  formulaireDeConnexionVue.setPopupPosition(left, top);
258
		  formulaireDeConnexionVue.show();
256
		  formulaireDeConnexionVue.show();
259
		
257
		
260
	}
258
	}
261
 
259
 
262
 
260
 
263
	
261
	
264
 
262
 
265
	public Panel getPanneauPrincipalCarnetEnLigne() {
263
	public Panel getPanneauPrincipalCarnetEnLigne() {
266
		return panneauPrincipalCarnetEnLigne;
264
		return panneauPrincipalCarnetEnLigne;
267
	}
265
	}
268
 
266
 
269
	
267
	
270
//	 TODO : repandre rafraichissement
268
//	 TODO : repandre rafraichissement
271
 
269
 
272
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
270
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
273
 
271
 
274
			if (nouvelleDonnees instanceof Utilisateur) {
272
			if (nouvelleDonnees instanceof Utilisateur) {
275
							      
273
							      
276
				utilisateur = (Utilisateur) nouvelleDonnees;
274
				utilisateur = (Utilisateur) nouvelleDonnees;
-
 
275
				
-
 
276
				imageMediateur.connecterUtilisateur() ;
277
								
277
								
278
				afficheEtatConnexion();
278
				afficheEtatConnexion();
279
				
279
				
280
				if ((tentativeConnection) && !utilisateur.isIdentifie()) {
280
				if ((tentativeConnection) && !utilisateur.isIdentifie()) {
281
			
281
			
282
					formulaireDeConnexionVue.afficherMessageAlerte();
282
					//formulaireDeConnexionVue.afficherMessageAlerte();
283
				}
283
				}
284
				else {
284
				else {
285
					if ((tentativeConnection) && utilisateur.isIdentifie()) {						
285
					if ((tentativeConnection) && utilisateur.isIdentifie()) {						
286
						formulaireDeConnexionVue.hide();
286
						formulaireDeConnexionVue.hide();
287
					}
287
					}
288
				}
288
				}
289
				
289
				
290
 
290
 
291
				
291
				
292
			// On lance l'affichage des observations
292
			// On lance l'affichage des observations
293
				observationMediateur.obtenirNombreObservation();
293
				observationMediateur.obtenirNombreObservation();
294
 
294
 
295
			}
295
			}
296
 
296
 
297
	}
297
	}
298
 
298
 
299
		
299
		
300
 
300
 
301
}
301
}