Subversion Repositories eFlore/Applications.cel

Rev

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