Subversion Repositories eFlore/Applications.cel

Rev

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