Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
12 david 1
package org.tela_botanica.client.vues;
2
 
3
 
4
 
13 david 5
import java.util.Iterator;
6
 
7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.ListeReferentielCommune;
20 david 9
import org.tela_botanica.client.modeles.ListeReferentielNom;
39 david 10
import org.tela_botanica.client.modeles.Observation;
13 david 11
import org.tela_botanica.client.modeles.ReferentielCommune;
20 david 12
import org.tela_botanica.client.modeles.ReferentielNom;
12 david 13
import org.tela_botanica.client.observation.ObservationMediateur;
14
 
15
 
13 david 16
import com.gwtext.client.core.EventCallback;
17
import com.gwtext.client.core.EventObject;
18
import com.gwtext.client.core.ListenerConfig;
12 david 19
import com.gwtext.client.core.Position;
13 david 20
import com.gwtext.client.data.ArrayReader;
21
import com.gwtext.client.data.FieldDef;
22
import com.gwtext.client.data.MemoryProxy;
23
import com.gwtext.client.data.RecordDef;
24
import com.gwtext.client.data.Store;
25
import com.gwtext.client.data.StringFieldDef;
12 david 26
import com.gwtext.client.widgets.Button;
27
import com.gwtext.client.widgets.Panel;
20 david 28
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
13 david 29
import com.gwtext.client.widgets.form.ComboBox;
12 david 30
import com.gwtext.client.widgets.form.DateField;
31
import com.gwtext.client.widgets.form.FormPanel;
32
import com.gwtext.client.widgets.form.TextField;
13 david 33
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
12 david 34
import com.gwtext.client.widgets.layout.ColumnLayout;
35
import com.gwtext.client.widgets.layout.ColumnLayoutData;
36
import com.gwtext.client.widgets.layout.FormLayout;
13 david 37
import com.gwtext.client.data.Record;
12 david 38
 
39
/**
40
 * Panneau contenant les infos, les métadonnées et l'arbre des mots clés, il implémente l'interface rafraichissable
41
 * @author aurelien
42
 *
43
 */
13 david 44
public class FormulaireSaisieObservationVue extends Panel implements Rafraichissable  {
12 david 45
 
46
 
47
	/**
48
	 * Le médiateur associé à la vue
49
	 */
50
	private ObservationMediateur	observationMediateur		= null;
51
 
52
 
20 david 53
 
13 david 54
	private DateField date = null;
12 david 55
	private TextField lieudit = null;
56
	private TextField station = null;
57
	private TextField milieu = null;
58
	private TextField comment = null;
13 david 59
	private ComboBox  commune = null;
39 david 60
	private String departement = null;
20 david 61
	private ComboBox  espece = null;
39 david 62
	private String numeroNom = null;
20 david 63
 
64
	private Button boutonOK = new Button("Ok");
65
	private Button boutonAnnuler = new Button("Annuler");
66
 
13 david 67
	private boolean selectionCommune=false;
20 david 68
	private boolean selectionEspece=false;
12 david 69
 
13 david 70
 
20 david 71
	private final int KEY_ALT = 18;
72
	private final int KEY_BACKSPACE = 8;
73
	private final int KEY_CTRL = 17;
74
	private final int KEY_DELETE = 46;
75
	private final int KEY_DOWN = 40;
76
	private final int KEY_END = 35;
77
	private final int KEY_ENTER = 13;
78
	private final int KEY_ESCAPE = 27;
79
	private final int KEY_HOME = 36;
80
	private final int KEY_LEFT = 37;
81
	private final int KEY_PAGEDOWN = 34;
82
	private final int KEY_PAGEUP = 33;
83
	private final int KEY_RIGHT = 39;
84
	private final int KEY_SHIFT = 16;
85
	private final int KEY_TAB = 9;
86
	private final int KEY_UP = 38;
13 david 87
 
88
 
20 david 89
 
13 david 90
 
12 david 91
	/**
92
	 * Booleen d'instanciation
93
	 */
94
	boolean estInstancie = false ;
95
 
96
	/**
97
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
98
	 */
99
	private FormulaireSaisieObservationVue()
100
	{
101
		super() ;
102
	}
103
 
104
	/**
105
	 * Constructeur avec argument
106
	 * @param im
107
	 */
108
	public FormulaireSaisieObservationVue(ObservationMediateur obs)
109
	{
110
 
111
 
112
		// on associe le médiateur
113
		observationMediateur = obs ;
114
 
115
 
53 david 116
		setHeader(true);
12 david 117
 
118
		FormPanel panneauFormulaire = new FormPanel(Position.RIGHT);
119
		panneauFormulaire.setBorder(false);
120
 
121
		// Panneau intermediaire qui contient deux colonnes de formulaire
122
 
123
		Panel panneauIntermediaire = new Panel();
124
		panneauIntermediaire.setLayout(new ColumnLayout());
125
		panneauIntermediaire.setBorder(false);
126
 
127
		//create first panel and add fields to it
128
		Panel panneauPremierColonne = new Panel();
129
		panneauPremierColonne.setLayout(new FormLayout());
130
		panneauPremierColonne.setBorder(false);
131
 
132
		//create second panel and add fields to it
133
	    Panel panneauSecondeColonne = new Panel();
134
		panneauSecondeColonne.setLayout(new FormLayout());
135
		panneauSecondeColonne.setBorder(false);
42 jpm 136
 
137
		this.setPaddings(5) ;
12 david 138
 
20 david 139
 
49 david 140
 
13 david 141
		commune=new ComboBox("Commune","commune",275 );
142
 
143
 
20 david 144
		final String resultTplCommune = "<div class=\"search-item-commune\">{commune}</div>";
13 david 145
 
146
 
20 david 147
		commune.setTpl(resultTplCommune);
13 david 148
		commune.setMode(ComboBox.REMOTE);
149
		// commune.setPageSize(10); // Ne fonctionne pas
20 david 150
		commune.setItemSelector("div.search-item-commune");
13 david 151
		commune.setTypeAhead(true);
152
		commune.setLoadingText("Recherche...");
153
 
154
		commune.setHideTrigger(true);
155
 
156
 
20 david 157
 
13 david 158
 
159
 
160
	    panneauPremierColonne.add(commune);
161
 
162
 
163
 
12 david 164
	    station = new TextField("Station", "station", 275);
165
	    station.setAllowBlank(true);
166
	    panneauPremierColonne.add(station);
167
 
168
	    date = new DateField("Date", "date", 100);
169
	    date.setAllowBlank(true);
20 david 170
	    date.setFormat("d/m/Y") ;
12 david 171
	    panneauPremierColonne.add(date);
20 david 172
 
173
 
174
		espece=new ComboBox("Espèce","nom",275 );
12 david 175
 
20 david 176
 
177
		final String resultTplEspece = "<div class=\"search-item-espece\">{nom}</div>";
178
 
179
 
180
		espece.setTpl(resultTplEspece);
181
		espece.setMode(ComboBox.REMOTE);
182
		// commune.setPageSize(10); // Ne fonctionne pas
183
		espece.setItemSelector("div.search-item-espece");
184
		espece.setTypeAhead(true);
185
		espece.setLoadingText("Recherche...");
186
 
187
		espece.setHideTrigger(true);
188
 
189
 
190
 
191
	    panneauPremierColonne.add(espece);
192
 
12 david 193
	    comment = new TextField("Notes", "comment", 275);
194
	    comment.setAllowBlank(true);
195
	    panneauPremierColonne.add(comment);
196
 
197
 
198
	    lieudit = new TextField("Lieu-dit", "lieudit", 275);
199
	    lieudit.setAllowBlank(true);
200
	    panneauSecondeColonne.add(lieudit);
201
 
202
 
203
	    milieu = new TextField("Milieu", "milieu", 275);
204
	    milieu.setAllowBlank(true);
205
	    panneauSecondeColonne.add(milieu);
206
 
13 david 207
 
12 david 208
 
209
		panneauIntermediaire.add(panneauPremierColonne, new ColumnLayoutData(.5));
210
		panneauIntermediaire.add(panneauSecondeColonne, new ColumnLayoutData(.5));
211
 
212
		panneauFormulaire.add(panneauIntermediaire);
213
 
20 david 214
 
12 david 215
		panneauFormulaire.addButton(boutonOK);
216
 
20 david 217
 
12 david 218
		panneauFormulaire.addButton(boutonAnnuler);
219
 
220
 
221
		this.add(panneauFormulaire) ;
222
 
223
 
224
		this.setAutoHeight(true);
225
 
226
 
227
		// on ajoute les listeners
228
		ajouterListeners() ;
229
 
230
 
231
 
232
	}
233
 
234
	private void ajouterListeners()
235
	{
20 david 236
 
237
 
238
		// Listener completion communne
239
 
240
		   commune.addListener(new ComboBoxListenerAdapter() {
241
	             public void onSelect(ComboBox comboBox, Record record, int index) {
242
	                 commune.setValue(record.getAsString("commune"));
39 david 243
	                 departement=record.getAsString("departement");
20 david 244
	                 selectionCommune=true;
245
	             }
246
	         });
247
 
248
 
249
			ListenerConfig listenerConfigCommune=new ListenerConfig();
250
			listenerConfigCommune.setDelay(10);
251
			listenerConfigCommune.setStopPropagation(false);
252
			listenerConfigCommune.setStopEvent(false);
253
 
254
 
255
 
256
		    commune.addKeyPressListener(new EventCallback()	{
257
 
258
		    	    public void execute(EventObject e) {
259
 
260
 
261
		    	    		  switch(e.getKey()) {
262
 
263
 
264
		    	    		  case KEY_ALT:
265
		    	    	      case KEY_CTRL:
266
		    	    	      case KEY_DOWN:
267
		    	    	      case KEY_END:
268
		    	    	      case KEY_ESCAPE:
269
		    	    	      case KEY_HOME:
270
		    	    	      case KEY_LEFT:
271
		    	    	      case KEY_PAGEDOWN:
272
		    	    	      case KEY_PAGEUP:
273
		    	    	      case KEY_RIGHT:
274
		    	    	      case KEY_SHIFT:
275
		    	    	      case KEY_TAB:
276
		    	    	      case KEY_UP:
277
 
278
		    	    	        break;
279
 
280
		    	    	      case KEY_ENTER:
281
 
282
		    	    	    	 if (selectionCommune) {
283
		    	    	    		 selectionCommune=false;
284
		    	    	    	 }
285
		    	    	    	 else {
286
		    	    	    		// lancer mise a jour
287
		    	    	    	 }
288
 
289
 
290
		    	    	    	  break;
291
 
292
		    	    	      default:
293
 
294
		    	    	    	  obtenirListeReferentielCommune();
295
 
296
		    	    	        break;
297
		    	    	    }
298
 
299
 
300
 
301
		     		}
302
 
303
		    		},    listenerConfigCommune
304
 
305
			);
306
 
307
			// Listener completion espece
308
 
309
 
310
			espece.addListener(new ComboBoxListenerAdapter() {
311
	             public void onSelect(ComboBox comboBox, Record record, int index) {
312
	            	 espece.setValue(record.getAsString("nom"));
39 david 313
	            	 numeroNom=record.getAsString("numeroNom");
20 david 314
	                 selectionEspece=true;
315
	             }
316
	         });
317
 
318
 
319
			ListenerConfig listenerConfigEspece=new ListenerConfig();
320
			listenerConfigEspece.setDelay(10);
321
			listenerConfigEspece.setStopPropagation(false);
322
			listenerConfigEspece.setStopEvent(false);
323
 
324
 
325
			espece.addKeyPressListener(new EventCallback()	{
326
 
327
		    	    public void execute(EventObject e) {
328
 
329
 
330
		    	    		  switch(e.getKey()) {
331
 
332
 
333
		    	    		  case KEY_ALT:
334
		    	    	      case KEY_CTRL:
335
		    	    	      case KEY_DOWN:
336
		    	    	      case KEY_END:
337
		    	    	      case KEY_ESCAPE:
338
		    	    	      case KEY_HOME:
339
		    	    	      case KEY_LEFT:
340
		    	    	      case KEY_PAGEDOWN:
341
		    	    	      case KEY_PAGEUP:
342
		    	    	      case KEY_RIGHT:
343
		    	    	      case KEY_SHIFT:
344
		    	    	      case KEY_TAB:
345
		    	    	      case KEY_UP:
346
 
347
		    	    	        break;
348
 
349
		    	    	      case KEY_ENTER:
350
 
351
		    	    	    	 if (selectionEspece) {
352
		    	    	    		 selectionEspece=false;
353
		    	    	    	 }
354
		    	    	    	 else {
355
		    	    	    		// lancer mise a jour
356
		    	    	    	 }
357
 
358
 
359
		    	    	    	  break;
360
 
361
		    	    	      default:
362
 
363
		    	    	    	  obtenirListeReferentielNom();
364
 
365
		    	    	        break;
366
		    	    	    }
367
 
368
 
369
 
370
		     		}
371
 
372
		    		},    listenerConfigEspece
373
 
374
			);
375
 
376
 
377
 
378
 
379
		boutonOK.addListener(new ButtonListenerAdapter() {
39 david 380
 
20 david 381
			public void onClick(Button button, EventObject e) {
39 david 382
 
383
				ajouterObservation();
384
 
20 david 385
			}
39 david 386
 
20 david 387
 
388
		});
389
 
12 david 390
		// on ajoute un écouteur
391
		/*validerInfo.addListener(new ButtonListenerAdapter() {
392
 
393
			// gestion du clic
394
 
395
			public void onClick(Button button, EventObject e) {
396
 
397
				// lors du clic sur le bouton valider on met à jour les commentaires et la date
398
		//	getIMediateur().mettreAJourInfo(commentaireGeneral.getText(), dateImage.getRawValue(), noteVue.getNote()) ;
399
 
400
			}
401
		});
402
		*/
403
 
404
 
405
	}
406
 
407
	/**
408
	 * Desactive visuellement ce panneau
409
	 */
410
	public void desactiverPanneau()
411
	{
412
		this.setDisabled(true) ;
413
	}
414
 
415
	/**
416
	 * Active visuellement ce panneau
417
	 */
418
	public void activerPanneau()
419
	{
420
		this.setDisabled(false) ;
421
	}
13 david 422
 
423
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
424
 
49 david 425
		// si l'on a reçu une liste du referentiel commune (completion referentiel commune)
13 david 426
			if(nouvelleDonnees instanceof ListeReferentielCommune)
427
			{
428
 
429
					ListeReferentielCommune data = (ListeReferentielCommune) nouvelleDonnees ;
430
					Object[][] communeData = new Object[data.size()][2];
431
					int i = 0 ;
432
 
433
					// on la parse et on récupère les informations quiç nous interessent
434
					for (Iterator it = data.keySet().iterator(); it.hasNext();)
435
					{
436
 
437
						ReferentielCommune ref=(ReferentielCommune) data.get(it.next());
438
 
439
						communeData[i][0]= ref.getCommune();
440
						communeData[i][1]= ref.getDepartement();
441
 
442
 
443
						i++ ;
444
					}
445
 
446
					   //	  creation du store
447
					FieldDef defCommune = new StringFieldDef("commune");
448
					FieldDef defDepartement = new StringFieldDef("departement");
449
 
450
 
451
					FieldDef[] defTab = { defCommune, defDepartement};
452
 
453
					RecordDef rd = new RecordDef(defTab);
454
 
455
					final MemoryProxy dataProxy = new MemoryProxy(communeData);
456
					final ArrayReader reader = new ArrayReader(rd);
457
 
20 david 458
					Store store=new Store(dataProxy,reader);
13 david 459
					store.load() ;
460
 
41 jpm 461
					commune.setStore(store);
13 david 462
 
463
			}
20 david 464
 
49 david 465
			//			 si l'on a reçu une liste du referentiel nom (complétion referentiel nom)
20 david 466
 
467
			if(nouvelleDonnees instanceof ListeReferentielNom)
468
			{
469
 
470
					ListeReferentielNom data = (ListeReferentielNom) nouvelleDonnees ;
471
					Object[][] nomData = new Object[data.size()][2];
472
					int i = 0 ;
473
 
474
					// on la parse et on récupère les informations quiç nous interessent
475
					for (Iterator it = data.keySet().iterator(); it.hasNext();)
476
					{
477
 
478
						ReferentielNom ref=(ReferentielNom) data.get(it.next());
479
 
480
						nomData[i][0]= ref.getNom();
481
						nomData[i][1]= ref.getNumeroNom();
482
 
483
 
484
						i++ ;
485
					}
486
 
487
					   //	  creation du store
488
					FieldDef defNom = new StringFieldDef("nom");
489
					FieldDef defNumeroNom = new StringFieldDef("numeroNom");
490
 
491
 
492
					FieldDef[] defTab = { defNom, defNumeroNom};
493
 
494
					RecordDef rd = new RecordDef(defTab);
495
 
496
					final MemoryProxy dataProxy = new MemoryProxy(nomData);
497
					final ArrayReader reader = new ArrayReader(rd);
498
 
499
					Store store=new Store(dataProxy,reader);
500
					store.load() ;
501
 
502
					espece.setStore(store);
503
 
504
 
505
 
506
			}
507
 
49 david 508
 
20 david 509
 
13 david 510
	}
12 david 511
 
512
 
13 david 513
	public void obtenirListeReferentielCommune() {
20 david 514
	 String com=commune.getText().replaceAll(" ","/");
515
	 com=com.replaceAll("%","");
516
 
517
	 observationMediateur.obtenirListeReferentielCommune(this,com);
13 david 518
 
519
	}
20 david 520
 
521
 
522
	public void obtenirListeReferentielNom() {
523
 
524
	  String esp=espece.getText().replaceAll(" ","/");
525
	  esp=esp.replaceAll("%","");
526
 
527
	  observationMediateur.obtenirListeReferentielNom(this,esp);
528
 
529
	}
530
 
531
 
39 david 532
	public void ajouterObservation() {
533
 
41 jpm 534
		Observation obs=new Observation(espece.getText(),numeroNom,commune.getText(),departement,lieudit.getText(),station.getText(),milieu.getText(), comment.getText(),date.getText());
46 david 535
		observationMediateur.ajouterObservation(obs);
39 david 536
	}
12 david 537
 
538
 
539
}