Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 43 | Details | Compare with Previous | Last modification | View Log | RSS feed

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