Subversion Repositories eFlore/Applications.cel

Rev

Rev 50 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 aperonnet 1
package org.tela_botanica.client.observation;
2
 
12 david 3
 
2 aperonnet 4
import org.tela_botanica.client.CarnetEnLigneMediateur;
12 david 5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.modeles.ListeObservation;
2 aperonnet 7
import org.tela_botanica.client.modeles.Observation;
12 david 8
import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;
9
import org.tela_botanica.client.vues.ListeObservationVue;
53 david 10
 
11
import com.google.gwt.core.client.GWT;
41 jpm 12
import com.gwtext.client.core.EventObject;
53 david 13
import com.gwtext.client.core.RegionPosition;
12 david 14
import com.gwtext.client.widgets.Panel;
53 david 15
import com.gwtext.client.widgets.TabPanel;
16
import com.gwtext.client.widgets.layout.BorderLayout;
17
import com.gwtext.client.widgets.layout.BorderLayoutData;
18
import com.gwtext.client.widgets.layout.RowLayout;
2 aperonnet 19
 
48 david 20
 
12 david 21
/**
22
 * Mediateur gérant les interactions entre vues et les echanges de données
23
 * C'est un singleton.
24
 * @author aurelien
25
 *
26
 */
47 david 27
public class ObservationMediateur {
12 david 28
 
29
	/**
30
	 * booleen qui verifie l'unicite de l'instance (donc static)
31
	 */
31 jpm 32
	private static boolean estInstancie = false ;
33
 
34
	/**
35
	 * pointeur sur le médiateur (pour le pattern singleton)
36
	 */
37
	private static ObservationMediateur thisMediateur = null ;
12 david 38
 
39
	/** Mediateur general de l'application carnet en ligne
40
	 *
41
	 *
42
	 */
43
 
44
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
45
 
46
 
47
	/**
48
	 * modele de données
49
	 */
50
	private ObservationModele observationModele = null ;
51
 
52
 
53
	/**
54
	 * panneau principal des Observation (onglet "observation")
55
	 */
56
	private final Panel panneauPrincipalObservation = new Panel("Observation");
57
 
58
 
59
	/**
60
	 * liste détaillée des Observations
61
	 */
62
	private ListeObservationVue listeObservation = null ;
63
 
64
	/**
65
	 * Saisie des Observations
66
	 */
67
 
68
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
69
 
48 david 70
 
71
 
12 david 72
	/**
73
	 * booleen explicitant s'il y a une selection en cours
74
	 */
75
	private boolean selection = false ;
47 david 76
 
12 david 77
 
78
 
79
	/**
80
	 * La liste des observations affichées en cours (verifier utilité)
81
	 */
82
 
83
	private ListeObservation cacheObservation = new ListeObservation(0) ;
84
	/**
85
 
86
 
53 david 87
	/**
88
	 * panneau conteneur pour le panneau  des informations lies à l'observation
89
	 */
12 david 90
 
53 david 91
  	private Panel details = new Panel("Détails");
92
 
93
 
94
 
12 david 95
	/**
53 david 96
	 * panneau conteneur pour le panneau des filtres
97
	 */
98
 
99
  	private Panel filtres = new Panel("Filtres");
100
 
101
 
102
	/**
12 david 103
	 * constructeur privé (on accède a la classe par la méthode getInstance
104
	 */
105
 
106
 
107
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
108
	{
109
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
110
 
53 david 111
 
12 david 112
		// on crée un modèle
113
		observationModele = ObservationModele.Instance(this);
114
 
115
 
48 david 116
 
12 david 117
		listeObservation = new ListeObservationVue(this);
53 david 118
		listeObservation.setTitle("Observations");
12 david 119
 
53 david 120
		// quelques variables de position pour les borderlayouts
121
		final BorderLayoutData regionNord = new BorderLayoutData(
122
				RegionPosition.NORTH);
123
 
124
		final BorderLayoutData regionCentre = new BorderLayoutData(
125
				RegionPosition.CENTER);
126
 
127
 
128
		final BorderLayoutData regionEst = new BorderLayoutData(
129
				RegionPosition.EAST);
130
 
131
 
132
		if (GWT.isScript()) {  // FIXME : ne fonctionne pas en mode hosted
133
			regionEst.setSplit(true);
134
		}
135
 
136
		final BorderLayoutData regionOuest = new BorderLayoutData(
137
				RegionPosition.WEST);
12 david 138
 
53 david 139
		if (GWT.isScript()) {  // FIXME : ne fonctionne pas en mode hosted
140
			regionOuest.setSplit(true);
141
		}
142
 
143
		panneauPrincipalObservation.setLayout(new BorderLayout()) ;
144
 
145
 
12 david 146
		// Le formulaire de saisie / modification d'observation
147
 
148
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
53 david 149
		formulaireSaisieObservationVue.setTitle("Saisie");
150
		formulaireSaisieObservationVue.setTitleCollapse(true);
151
	 	formulaireSaisieObservationVue.setCollapsible(true) ;
152
 
2 aperonnet 153
 
53 david 154
		Panel centre = new Panel();
12 david 155
 
53 david 156
		centre.setLayout(new RowLayout());
157
 
158
 
159
		centre.add(formulaireSaisieObservationVue);
12 david 160
 
53 david 161
		centre.add(listeObservation);
12 david 162
 
53 david 163
 
2 aperonnet 164
 
53 david 165
		// on initialise le volet qui contient les details
166
		details.setWidth("15%");
167
		details.setTitleCollapse(true);
168
		details.setCollapsible(true);
169
 
170
		// on initialise le volet qui contient filtres
171
		filtres.setWidth("10%");
172
		filtres.setTitleCollapse(true);
173
		filtres.setCollapsible(true);
174
 
175
 
176
		panneauPrincipalObservation.add(details,regionEst);
177
		panneauPrincipalObservation.add(filtres,regionOuest);
178
		panneauPrincipalObservation.add(centre,regionCentre);
179
 
180
 
181
 
182
 
183
//		centre.doLayout();
184
 
12 david 185
	}
2 aperonnet 186
 
7 aperonnet 187
 
12 david 188
	/**
189
	 * Retourne une instance de manière unique
190
	 * @return l'instance unique du médiateur
191
	 */
192
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
193
	{
31 jpm 194
			if(!estInstancie || thisMediateur == null)
12 david 195
			{
196
				estInstancie = true ;
31 jpm 197
				thisMediateur = new ObservationMediateur(carnetEnLigneMediateur) ;
12 david 198
			}
31 jpm 199
 
200
			return thisMediateur ;
12 david 201
	}
202
 
203
 
204
 
205
	/**
206
	 * envoie au modèle une demande de mise a jour
207
	 */
2 aperonnet 208
 
7 aperonnet 209
 
12 david 210
	public void obtenirNombreObservation() {
211
 
212
 
213
			listeObservation.masquerChargement();
47 david 214
		    observationModele.obtenirNombreObservation(listeObservation) ;
12 david 215
 
2 aperonnet 216
	}
12 david 217
 
2 aperonnet 218
	/**
12 david 219
	 * envoie au modèle une demande de mise a jour
2 aperonnet 220
	 */
7 aperonnet 221
 
222
 
12 david 223
	public void obtenirListeObservation() {
224
 
7 aperonnet 225
 
47 david 226
			observationModele.obtenirListeObservation(listeObservation,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;
227
 
228
 
31 jpm 229
	}
12 david 230
 
2 aperonnet 231
	/**
12 david 232
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
233
	 * sous forme de tableau [nom, valeur]
234
	 * @return Les noms et valeurs des filtres
2 aperonnet 235
	 */
12 david 236
	public String[][] renvoyerFiltres()
237
	{
41 jpm 238
		String[][] valeursFiltres = { {"",""} } ;
12 david 239
 
240
 
241
		return valeursFiltres ;
242
	}
2 aperonnet 243
 
7 aperonnet 244
 
12 david 245
	public String getIdentifiant() {
246
 
247
		return carnetEnLigneMediateur.getUtilisateur().getIdentifiant();
248
 
249
	}
2 aperonnet 250
 
251
 
12 david 252
	public Panel getPanneauPrincipalObservation() {
253
		return panneauPrincipalObservation;
2 aperonnet 254
	}
12 david 255
 
2 aperonnet 256
 
257
 
48 david 258
 
2 aperonnet 259
	/**
13 david 260
	 *
261
	 * Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne
262
	 * @param r : la vue demandeuse de donnee
263
	 * @param critere : les criteres de selection
264
	 */
12 david 265
 
13 david 266
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
12 david 267
 
13 david 268
		observationModele.obtenirListeReferentielCommune(r,critere) ;
2 aperonnet 269
 
12 david 270
 
2 aperonnet 271
	}
20 david 272
 
273
	/**
274
	 *
275
	 * Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne
276
	 * @param r : la vue demandeuse de donnee
277
	 * @param critere : les criteres de selection
278
	 */
279
 
280
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
281
 
282
		observationModele.obtenirListeReferentielNom(r,critere) ;
2 aperonnet 283
 
20 david 284
 
285
	}
2 aperonnet 286
 
12 david 287
 
20 david 288
	/**
289
	 *
290
	 * Lance la creation d'une observation
291
	 * @param r : la vue demandeuse de donnee
292
	 * @param critere : les criteres de selection
293
	 */
294
 
47 david 295
	public void ajouterObservation(Observation obs) {
20 david 296
 
53 david 297
	  observationModele.ajouterObservation(listeObservation, obs) ;
20 david 298
 
299
	}
41 jpm 300
 
301
	public void clicListeObservation(int rowIndex) {
302
 
303
	}
2 aperonnet 304
 
41 jpm 305
 
306
	public void montrerContextMenu(EventObject e) {
307
 
308
 
309
 
310
	}
311
 
312
	public void doubleClicListeObservation(int rowIndex) {
313
 
314
 
315
	}
316
 
12 david 317
 
318
 
20 david 319
 
320
 
321
 
2 aperonnet 322
}