Subversion Repositories eFlore/Applications.cel

Rev

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

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