Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 9 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
8 ddelon 1
package org.tela_botanica.client.observation;
2
 
3
 
4
 
5
import net.mygwt.ui.client.event.BaseEvent;
6
import net.mygwt.ui.client.event.Listener;
7
import net.mygwt.ui.client.util.Observable;
8
 
9
import org.tela_botanica.client.CarnetEnLigneMediateur;
10
import org.tela_botanica.client.interfaces.iMediateur;
11
import org.tela_botanica.client.interfaces.iRetourObservation;
12
import org.tela_botanica.client.modeles.Observation;
13
 
14
import com.google.gwt.user.client.Window;
15
import com.google.gwt.user.client.ui.RootPanel;
16
import com.google.gwt.user.client.ui.VerticalPanel;
17
 
18
public class ObservationMediateur extends Observable implements iMediateur, Listener {
19
 
20
 
21
	// Evenenements
22
	final static public  int NOMBRE_OBSERVATION=1;
23
 
24
	final static public  int LISTE_OBSERVATION=2;
25
 
26
 
27
	private CarnetEnLigneMediateur carnetEnLigneMediateur=null;  // Mediateur General
28
	private final ObservationModele observationModele=new ObservationModele();
29
 
30
	private Observation observation=null;
31
 
32
	// Variable interne
33
	private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica";
34
 
35
	// Composants graphiques
36
 
37
	private EtatConnexionVue etatConnexionVue=null; // Vue Etat de la connexion utilisateur
38
	private FormulaireDeConnexionVue formulaireDeConnexionVue=null; // Formulaire de connexion utilisateur
39
	private ListeObservationsVue listeObservationsVue = null;  // Liste de releves
40
 
41
    //
42
 
43
 
44
	public ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur) {
45
 
46
 
47
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
48
 
49
		etatConnexionVue=new EtatConnexionVue(this);
50
		listeObservationsVue=new ListeObservationsVue(this);
51
 
52
		VerticalPanel panel=new VerticalPanel();
53
 
54
		panel.add(etatConnexionVue);
55
 
56
		panel.add(listeObservationsVue);
57
 
58
 
59
		RootPanel.get().add(panel);
60
 
61
		onInitialisation();
62
 
63
	}
64
 
65
 
66
	/// Methodes privees
67
 
68
	/**
69
	 *
70
	 * Initialisations
71
	 *
72
	 */
73
 
74
	private void onInitialisation() {
75
 
76
 
77
		afficheEtatConnexion();
78
		onFiltrageListeObservation("all","all","all");
79
 
80
 
81
	}
82
 
83
	// Filtre  selection lieu
84
 
85
	/**
86
	 * Action sur selection d'un lieu : affichage de la liste des taxons correspondants au filtrage
87
	 */
88
 
89
	public void onFiltrageListeObservation(String id_loc, String loc,String lieu) {
90
 
91
		// Positionnement Filtre affichage
92
		listeObservationsVue.setIdLocation(id_loc);
93
		listeObservationsVue.setLocalite(loc);
94
		listeObservationsVue.setLieudit(lieu);
95
		listeObservationsVue.initialiser();
96
 
97
		// Affichage des filtres
98
		listeObservationsVue.displayFilter();
99
 
100
 
101
	}
102
 
103
 
104
 
105
 
106
 
107
	/// UTILISATEUR
108
 
109
 
110
	/**
111
	 *  Affichage etat de la connexion
112
	 */
113
 
114
 
115
	private void afficheEtatConnexion() {
116
		 if (!carnetEnLigneMediateur.getUtilisateur().isIdentifie()) {
117
			    etatConnexionVue.setEtat(texteDeconnexion,false);
118
		 }
119
		 else {
120
		    etatConnexionVue.setEtat(carnetEnLigneMediateur.getUtilisateur().getIdentifiant()+ " (deconnexion)",true);
121
		 }
122
 
123
	}
124
 
125
 
126
	/**
127
	 *
128
	 * Affichage boite de connexion
129
	 *
130
	 */
131
 
132
	public void afficherDialogueConnexion() {
133
 
134
		  // TODO : singleton ?
135
		  formulaireDeConnexionVue = new FormulaireDeConnexionVue(this);
136
 
137
		  // Position it roughly in the middle of the screen.
138
		  int left = (Window.getClientWidth() - 512) / 2;
139
		  int top = (Window.getClientHeight() - 256) / 2;
140
		  formulaireDeConnexionVue.setPopupPosition(left, top);
141
		  formulaireDeConnexionVue.show();
142
 
143
	}
144
 
145
 
146
	/**
147
	 * Deconnexion de l'utilisateur en cours
148
	 */
149
 
150
	public void deconnecterUtilisateur() {
151
 
152
		carnetEnLigneMediateur.addListener(CarnetEnLigneMediateur.DECONNEXION,this);
153
		carnetEnLigneMediateur.deconnecterUtilisateur();
154
 
155
	}
156
 
157
 
158
	/**
159
	 * Tentative de connexion utilisateur
160
	 * @param login
161
	 * @param password
162
	 */
163
 
164
 
165
	public void connecterUtilisateur(String login, String password) {
166
 
167
		carnetEnLigneMediateur.addListener(CarnetEnLigneMediateur.CONNEXION,this);
168
		carnetEnLigneMediateur.connecterUtilisateur(login, password);
169
 
170
	}
171
 
172
 
173
 
174
	/// OBSERVATION
175
 
176
	/**
177
	 * Recherche nombre d'enregistrement pour l'utilisateur et la localite en cours
178
	 *
179
	 */
180
 
181
 
182
	public void getNombreObservation (String identifiantLocalite, String localite, String annee,  String mois,  String jour, String lieudit, String rechercheLibre ) {
183
 
184
 
185
		observationModele.getNombreObservation(
186
				new iRetourObservation() {
187
					public void onRetour(Observation obs) {
188
						observation=obs;
189
						fireEvent(NOMBRE_OBSERVATION);
190
					}
191
 
192
 
193
				}, carnetEnLigneMediateur.getUtilisateur().getIdentifiant(), identifiantLocalite, localite , annee, mois, jour, lieudit ,rechercheLibre
194
 
195
		);
196
 
197
 
198
 
199
	}
200
 
201
	 public void getListeObservation (String identifiantLocalite, String localite, String annee, String mois, String jour, String lieudit, String rechercheLibre, int debut, int longueur) {
202
 
203
 
204
			observationModele.getListeObservation(
205
					new iRetourObservation() {
206
						public void onRetour(Observation obs) {
207
							observation=obs;
208
							fireEvent(LISTE_OBSERVATION);
209
						}
210
 
211
 
212
					}, carnetEnLigneMediateur.getUtilisateur().getIdentifiant(), identifiantLocalite, localite , annee, mois, jour, lieudit ,rechercheLibre, debut, longueur
213
 
214
			);
215
 
216
	}
217
 
218
 
219
 
220
	 public Observation getObservation() {
221
			return observation;
222
	}
223
 
224
 
225
 
226
 
227
	/// EVENEMENTS
228
 
229
/**
230
 * Evenements
231
 *
232
 */
233
 
234
	public void handleEvent(BaseEvent be) {
235
		switch (be.type) {
236
			case CarnetEnLigneMediateur.DECONNEXION:
237
				afficheEtatConnexion();
238
				break;
239
			case CarnetEnLigneMediateur.CONNEXION:
240
				if (carnetEnLigneMediateur.getUtilisateur().isIdentifie()) {
241
					formulaireDeConnexionVue.hide();
242
					afficheEtatConnexion();
243
				}
244
				else {
245
					formulaireDeConnexionVue.afficherMessageAlerte(); // Erreur identification
246
				}
247
				break;
248
		}
249
	}
250
 
251
 
252
 
253
 
254
 
255
 
256
 
257
 
258
 
259
}