Subversion Repositories eFlore/Applications.cel

Rev

Rev 1840 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1840 Rev 1914
Line 81... Line 81...
81
 
81
 
82
	/**
82
	/**
83
	 * Le médiateur associé à la vue
83
	 * Le médiateur associé à la vue
84
	 */
84
	 */
85
	private ObservationMediateur	observationMediateur		= null;
85
	private ObservationMediateur	observationMediateur		= null;
86
	
86
 
Line 87... Line 87...
87
	FormPanel panneauFormulaire = null;
87
	FormPanel panneauFormulaire = null;
88
 
88
 
89
	private DateField date = null;
89
	private DateField date = null;
Line 99... Line 99...
99
	private String codeInseeCommune = null;
99
	private String codeInseeCommune = null;
100
	private String referentielTaxo = null;
100
	private String referentielTaxo = null;
101
	private String referentielGeo = null;
101
	private String referentielGeo = null;
Line 102... Line 102...
102
 
102
 
103
	// Pour remise a zero partielle lors d'une validation
103
	// Pour remise a zero partielle lors d'une validation
104
	
104
 
105
	private  enum Champs {
105
	private  enum Champs {
106
	    DATE, LIEUDIT, STATION, MILIEU, COMMENT, COMMUNE, ESPECE, TOUT, LATITUDE, LONGITUDE, ALTITUDE, ABONDANCE, CERTITUDE, REFERENTIELTAXO, PHENOLOGIE;
106
	    DATE, LIEUDIT, STATION, MILIEU, COMMENT, COMMUNE, ESPECE, TOUT, LATITUDE, LONGITUDE, ALTITUDE, ABONDANCE, CERTITUDE, REFERENTIELTAXO, PHENOLOGIE;
107
	    
107
 
108
	    @Override
108
	    @Override
109
		public String toString() {
109
		public String toString() {
110
	    	
110
	    
111
	    	switch(this) {
111
	    	switch(this) {
112
	    	case DATE:
112
	    	case DATE:
113
	    		return "date";
113
	    		return "date";
114
	    		
114
	    
115
	    	case COMMUNE:
115
	    	case COMMUNE:
116
	    		return "commune";
116
	    		return "commune";
117
	    	
117
	    
118
    		case LIEUDIT:
118
    		case LIEUDIT:
119
    			return "lieu dit";
119
    			return "lieu dit";
120
	    	
120
	    
121
    		case STATION:
121
    		case STATION:
122
    			return "station";
122
    			return "station";
123
	    	
123
	    
124
    		case MILIEU:
124
    		case MILIEU:
125
    			return "milieu";
125
    			return "milieu";
126
	    	
126
	    
127
    		case COMMENT:
127
    		case COMMENT:
128
    			return "commentaire";
128
    			return "commentaire";
129
	    	
129
	    
130
	    	case ESPECE:
130
	    	case ESPECE:
131
	    		return "espèce";
131
	    		return "espèce";
132
	    		
132
	    
133
	    	case LATITUDE:
133
	    	case LATITUDE:
134
	    		return "latitude";
134
	    		return "latitude";
135
	    		
135
	    
136
	    	case LONGITUDE:
136
	    	case LONGITUDE:
137
	    		return "longitude";
137
	    		return "longitude";
138
	    		
138
	    
139
	    	case ALTITUDE:
139
	    	case ALTITUDE:
140
	    		return "altitude";
140
	    		return "altitude";
141
	    		
141
	    
142
	    	case ABONDANCE:
142
	    	case ABONDANCE:
143
	    		return "abondance";
143
	    		return "abondance";
144
	    		
144
	    
145
	    	case CERTITUDE:
145
	    	case CERTITUDE:
146
	    		return "identification";
146
	    		return "identification";
147
	    		
147
	    
148
	    	case REFERENTIELTAXO:
148
	    	case REFERENTIELTAXO:
149
	    		return "referentiel";
149
	    		return "referentiel";
150
	    	
150
	    
151
	    	case PHENOLOGIE:
151
	    	case PHENOLOGIE:
152
	    		return "phenologie";
152
	    		return "phenologie";
153
	    		
153
	    
154
	    	case TOUT:
154
	    	case TOUT:
155
	    		return "date, commune, lieu dit, station, milieu, espèce, commentaire, latitude, longitude, altitude, abondance, identification, referentiel, phenologie";
155
	    		return "date, commune, lieu dit, station, milieu, espèce, commentaire, latitude, longitude, altitude, abondance, identification, referentiel, phenologie";
156
	    	}
156
	    	}
157
			return TOUT.toString();
157
			return TOUT.toString();
158
	    }
158
	    }
159
	};
159
	};
160
	
160
 
161
	private String formatDate = null ;
161
	private String formatDate = null ;
162
	private Button boutonOK = new Button("Créer");
162
	private Button boutonOK = new Button("Créer");
163
	private Button boutonModifier = new Button("Modifier");
163
	private Button boutonModifier = new Button("Modifier");
164
	private Button boutonSupprimer = new Button("Supprimer");
164
	private Button boutonSupprimer = new Button("Supprimer");
Line 167... Line 167...
167
	private boolean selectionCommune=false;
167
	private boolean selectionCommune=false;
168
	private boolean selectionEspece=false;
168
	private boolean selectionEspece=false;
169
	private boolean selectionAbondance = false;
169
	private boolean selectionAbondance = false;
170
	private boolean selectionCertitude = false;
170
	private boolean selectionCertitude = false;
171
	private boolean selectionPhenologie = false;
171
	private boolean selectionPhenologie = false;
172
	
172
 
173
	private Toolbar bt = null ;
173
	private Toolbar bt = null ;
174
	
174
 
175
	private final String VALEURS_MULTIPLES = "(Valeurs multiples)";
175
	private final String VALEURS_MULTIPLES = "(Valeurs multiples)";
176
	private final String modeleMessageModif = "commune:lieu-dit:station:milieu:latitude:longitude:altitude:date:espece:commentaire:abondance:identification:referentiel:phenologie";
176
	private final String modeleMessageModif = "commune:lieu-dit:station:milieu:latitude:longitude:altitude:date:espece:commentaire:abondance:identification:referentiel:phenologie";
177
	private boolean communeModifiee = false;
177
	private boolean communeModifiee = false;
178
	private boolean lieuDitModifie = false;
178
	private boolean lieuDitModifie = false;
179
	private boolean stationModifiee = false;
179
	private boolean stationModifiee = false;
Line 183... Line 183...
183
	private boolean commModifie = false;
183
	private boolean commModifie = false;
184
	private boolean abondanceModifiee = false;
184
	private boolean abondanceModifiee = false;
185
	private boolean certitudeModifiee = false;
185
	private boolean certitudeModifiee = false;
186
	private boolean referentielTaxoModifie = false;
186
	private boolean referentielTaxoModifie = false;
187
	private boolean phenologieModifiee = false;;
187
	private boolean phenologieModifiee = false;;
188
	
188
 
189
	private final int KEY_ALT = 18;
189
	private final int KEY_ALT = 18;
190
	private final int KEY_BACKSPACE = 8;
190
	private final int KEY_BACKSPACE = 8;
191
	private final int KEY_CTRL = 17;
191
	private final int KEY_CTRL = 17;
192
	private final int KEY_DELETE = 46;
192
	private final int KEY_DELETE = 46;
193
	private final int KEY_DOWN = 40;
193
	private final int KEY_DOWN = 40;
Line 200... Line 200...
200
	private final int KEY_PAGEUP = 33;
200
	private final int KEY_PAGEUP = 33;
201
	private final int KEY_RIGHT = 39;
201
	private final int KEY_RIGHT = 39;
202
	private final int KEY_SHIFT = 16;
202
	private final int KEY_SHIFT = 16;
203
	private final int KEY_TAB = 9;
203
	private final int KEY_TAB = 9;
204
	private final int KEY_UP = 38;
204
	private final int KEY_UP = 38;
205
	
205
 
206
	/**
206
	/**
207
	 * Booleen d'instanciation
207
	 * Booleen d'instanciation
208
	 */
208
	 */
209
	boolean estInstancie = false ;
209
	boolean estInstancie = false ;
Line 215... Line 215...
215
	private Panel panneauSecondeColonne;
215
	private Panel panneauSecondeColonne;
Line 216... Line 216...
216
 
216
 
Line 217... Line 217...
217
	private TextField longitude;
217
	private TextField longitude;
218
 
218
 
219
	private TextField latitude;
219
	private TextField latitude;
220
	
220
 
221
	private TextField altitude;
221
	private TextField altitude;
Line 222... Line 222...
222
	
222
 
Line 223... Line 223...
223
	private MultiFieldPanel htmlCommunePanel = null;
223
	private MultiFieldPanel htmlCommunePanel = null;
224
 
224
 
225
	private MultiFieldPanel coordPanel;
225
	private MultiFieldPanel coordPanel;
Line 226... Line 226...
226
 
226
 
Line 227... Line 227...
227
	private TextField coordonnees;
227
	private TextField coordonnees;
228
	
228
 
229
	private Label lienSelectionCommune = null;
229
	private Label lienSelectionCommune = null;
Line 230... Line 230...
230
 
230
 
Line 231... Line 231...
231
	private HTML afficherFormulaireLatLon;
231
	private HTML afficherFormulaireLatLon;
232
 
232
 
233
	private HTML basculerverscarto;
233
	private HTML basculerverscarto;
Line 234... Line 234...
234
	
234
 
Line 235... Line 235...
235
	private boolean longlatAjoutee;
235
	private boolean longlatAjoutee;
236
 
236
 
237
	private boolean latModifiee;
237
	private boolean latModifiee;
238
 
238
 
239
	private boolean longModifiee;
239
	private boolean longModifiee;
240
	
240
 
241
	private boolean altModifiee;
241
	private boolean altModifiee;
242
 
242
 
243
	protected boolean rechercheCommuneEnCours = false;
243
	protected boolean rechercheCommuneEnCours = false;
244
 
244
 
245
	private Timer tCoord;
245
	private Timer tCoord;
246
	
246
 
247
	final String resultTplRefPerso = "<div class=\"search-item-commune\">{element_referentiel}</div>"; 
247
	final String resultTplRefPerso = "<div class=\"search-item-commune\">{element_referentiel}</div>";
248
	
248
 
249
	private ComboBox selecteurAbondance = null; 
249
	private ComboBox selecteurAbondance = null;
250
	
250
 
251
	private ComboBox selecteurCertitude = null; 
251
	private ComboBox selecteurCertitude = null;
252
	
252
 
253
	private ComboBox selecteurReferentielTaxo = null;
253
	private ComboBox selecteurReferentielTaxo = null;
254
	
254
 
255
	private ComboBox selecteurStadePheno = null;
255
	private ComboBox selecteurStadePheno = null;
256
	
256
 
257
	private boolean selectionMultiple = false;
257
	private boolean selectionMultiple = false;
258
	
258
 
259
	private HTML lienAfficherChampsEtendus = null;
259
	private HTML lienAfficherChampsEtendus = null;
260
	
260
 
261
	Panel conteneurChampEtenduGauche = null;
261
	Panel conteneurChampEtenduGauche = null;
262
	Panel conteneurChampEtenduDroite = null;
262
	Panel conteneurChampEtenduDroite = null;
263
	
263
 
264
	private boolean afficherChampsEtendus = false;
264
	private boolean afficherChampsEtendus = false;
265
	private boolean premierAffichage = true;
265
	private boolean premierAffichage = true;
266
	
266
 
267
	private Map<String, TextField> listeChampsEtendus;
267
	private Map<String, TextField> listeChampsEtendus;
268
	
268
 
269
	/**
269
	/**
270
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
270
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
271
	 */
271
	 */
272
	@SuppressWarnings("unused")
272
	@SuppressWarnings("unused")
273
	private FormulaireSaisieObservationVue()
273
	private FormulaireSaisieObservationVue()
274
	{
274
	{
275
		super() ;
275
		super() ;
276
	}
276
	}
277
	
277
 
278
	/**
278
	/**
279
	 * Constructeur avec argument
279
	 * Constructeur avec argument
280
	 * @param im
280
	 * @param im
281
	 */
281
	 */
282
	public FormulaireSaisieObservationVue(ObservationMediateur obs)
282
	public FormulaireSaisieObservationVue(ObservationMediateur obs)
283
	{		
283
	{
284
		super("Saisie");
284
		super("Saisie");
285
		// on associe le médiateur
285
		// on associe le médiateur
286
		observationMediateur = obs ;
286
		observationMediateur = obs ;
287
		
287
 
288
		referentielTaxo = obs.getRefTaxSelectionne().getCode();
288
		referentielTaxo = obs.getRefTaxSelectionne().getCode();
289
	     	
289
	     
290
		panneauFormulaire = new FormPanel(Position.RIGHT);
290
		panneauFormulaire = new FormPanel(Position.RIGHT);
291
		panneauFormulaire.setBorder(false);
291
		panneauFormulaire.setBorder(false);
292
		
292
 
293
		// Panneau intermediaire qui contient deux colonnes de formulaire
293
		// Panneau intermediaire qui contient deux colonnes de formulaire
Line 294... Line 294...
294
		panneauIntermediaire = new Panel();  
294
		panneauIntermediaire = new Panel();
295
		
295
 
296
		if (Window.getClientWidth()> Window.getClientHeight()) {
296
		if (Window.getClientWidth()> Window.getClientHeight()) {
297
			panneauIntermediaire.setLayout(new ColumnLayout()); 
297
			panneauIntermediaire.setLayout(new ColumnLayout());
Line 298... Line 298...
298
		}
298
		}
299
		else {
299
		else {
300
			panneauIntermediaire.setLayout(new RowLayout()); 
300
			panneauIntermediaire.setLayout(new RowLayout());
301
		}
301
		}
302
		
302
 
303
		panneauIntermediaire.setBorder(false);
303
		panneauIntermediaire.setBorder(false);
304
 
304
 
305
		//création du panneau formulaire de gauche auquels on ajoute les champs
305
		//création du panneau formulaire de gauche auquels on ajoute les champs
306
		panneauPremierColonne = new Panel();  
306
		panneauPremierColonne = new Panel();
307
		panneauPremierColonne.setLayout(new FormLayout());  
307
		panneauPremierColonne.setLayout(new FormLayout());
308
		panneauPremierColonne.setBorder(false);
308
		panneauPremierColonne.setBorder(false);
309
 
309
 
310
		//création du panneau formulaire de droite
310
		//création du panneau formulaire de droite
311
	    panneauSecondeColonne = new Panel();  
311
	    panneauSecondeColonne = new Panel();
312
		panneauSecondeColonne.setLayout(new FormLayout());  
312
		panneauSecondeColonne.setLayout(new FormLayout());
313
		panneauSecondeColonne.setBorder(false);
313
		panneauSecondeColonne.setBorder(false);
314
				
314
 
315
		this.setPaddings(5) ;
315
		this.setPaddings(5) ;
316
	
316
 
317
		// Accesskey pour debugging
317
		// Accesskey pour debugging
318
		commune=new ComboBox("Commune","commune\" accesskey=\"1");  
318
		commune=new ComboBox("Commune","commune\" accesskey=\"1");
319
		
319
 
320
		final String resultTplCommune = "<div class=\"search-item-commune\">{commune}</div>";  
320
		final String resultTplCommune = "<div class=\"search-item-commune\">{commune}</div>";
321
		commune.setTpl(resultTplCommune);
321
		commune.setTpl(resultTplCommune);
322
		commune.setMode(ComboBox.REMOTE);
322
		commune.setMode(ComboBox.REMOTE);
323
		commune.setItemSelector("div.search-item-commune");
323
		commune.setItemSelector("div.search-item-commune");
324
		commune.setTypeAhead(true);  
324
		commune.setTypeAhead(true);
325
		commune.setLoadingText("Recherche...");  
325
		commune.setLoadingText("Recherche...");
326
		commune.setHideTrigger(true);
326
		commune.setHideTrigger(true);
327
		
327
 
328
		  //création du lien "Accès carto" dans le formulaire	
328
		  //création du lien "Accès carto" dans le formulaire
329
		basculerverscarto = new HTML(" <a id=\"lien_carto\" href=\"#\" tabindex=\"2\">Localiser la commune</a>");
329
		basculerverscarto = new HTML(" <a id=\"lien_carto\" href=\"#\" tabindex=\"2\">Localiser la commune</a>");
330
		basculerverscarto.addStyleName("lien_actif");
330
		basculerverscarto.addStyleName("lien_actif");
Line 331... Line 331...
331
		
331
 
332
		//création info bulle sur le lien "accès carto"
332
		//création info bulle sur le lien "accès carto"
Line 333... Line 333...
333
		ToolTip tip2 = new ToolTip();  
333
		ToolTip tip2 = new ToolTip();
Line 334... Line 334...
334
		tip2.setHtml("Via une carte, obtenez les coordonnées (latitude/longitude) de votre observation ");  
334
		tip2.setHtml("Via une carte, obtenez les coordonnées (latitude/longitude) de votre observation ");
Line 354... Line 354...
354
			}
354
			}
Line 355... Line 355...
355
 
355
 
356
			@Override
356
			@Override
357
			public void onValidationSaisie() {
357
			public void onValidationSaisie() {
358
				validerSaisie(Champs.STATION);
358
				validerSaisie(Champs.STATION);
359
			}  	
359
			}  
360
	    };
360
	    };
361
	    panneauPremierColonne.add(station, new AnchorLayoutData("95%"));  
361
	    panneauPremierColonne.add(station, new AnchorLayoutData("95%"));
362
	    
362
 
363
		latitude = new TextField("Lat", "lat");
363
		latitude = new TextField("Lat", "lat");
364
		latitude.setGrowMax(70);
364
		latitude.setGrowMax(70);
365
		latitude.setAllowBlank(true);
365
		latitude.setAllowBlank(true);
366
	    
366
 
367
	    longitude = new TextField("Lon", "lon");
367
	    longitude = new TextField("Lon", "lon");
368
	    longitude.setGrowMax(70);
368
	    longitude.setGrowMax(70);
369
		longitude.setAllowBlank(true);
369
		longitude.setAllowBlank(true);
370
		
370
 
371
		altitude = new TextField("Alt (mètres)", "alt");
371
		altitude = new TextField("Alt (mètres)", "alt");
372
		altitude.setGrowMax(70);
372
		altitude.setGrowMax(70);
373
		altitude.setAllowBlank(true);
373
		altitude.setAllowBlank(true);
374
				
374
 
375
		lienSelectionCommune = new Label("");
375
		lienSelectionCommune = new Label("");
376
		
376
 
377
		
377
 
378
		lienSelectionCommune.setId("conteneur_selection_commune");
378
		lienSelectionCommune.setId("conteneur_selection_commune");
379
		lienSelectionCommune.setStyleName("conteneur_selection_commune");
379
		lienSelectionCommune.setStyleName("conteneur_selection_commune");
380
		lienSelectionCommune.addStyleName("lien_actif");
380
		lienSelectionCommune.addStyleName("lien_actif");
381
			
381
 
382
		// Panneau de type plusieurs champs de formulaire sur une meme ligne, où seront renseignés Lat/Lon
382
		// Panneau de type plusieurs champs de formulaire sur une meme ligne, où seront renseignés Lat/Lon
383
		coordPanel = new MultiFieldPanel(); 
383
		coordPanel = new MultiFieldPanel();
384
		coordPanel.setPaddings(0, 0, 0, 10);
384
		coordPanel.setPaddings(0, 0, 0, 10);
385
		coordPanel.setVisible(false);
385
		coordPanel.setVisible(false);
386
		
386
 
387
		final double largeur ;
387
		final double largeur ;
388
		largeur = 120;
388
		largeur = 120;
389
				
389
 
390
		coordPanel.addToRow(latitude, new ColumnLayoutData(largeur)); 
390
		coordPanel.addToRow(latitude, new ColumnLayoutData(largeur));
391
		coordPanel.addToRow(longitude, new ColumnLayoutData(largeur));  
391
		coordPanel.addToRow(longitude, new ColumnLayoutData(largeur));
392
		coordPanel.addToRow(lienSelectionCommune, new ColumnLayoutData(largeur)); 
392
		coordPanel.addToRow(lienSelectionCommune, new ColumnLayoutData(largeur));
393
		lienSelectionCommune.addClass("lien_decale");
393
		lienSelectionCommune.addClass("lien_decale");
394
		coordPanel.setBorder(false);
394
		coordPanel.setBorder(false);
395
		
395
 
396
		coordPanel.addToRow(altitude, new ColumnLayoutData(largeur));
396
		coordPanel.addToRow(altitude, new ColumnLayoutData(largeur));
397
		
397
 
398
		  //création du champs coordonnées	
398
		  //création du champs coordonnées
399
		referentielGeo = Configuration.getReferentielGeo();
399
		referentielGeo = Configuration.getReferentielGeo();
400
		
400
 
401
		coordonnees = new TextField("Coordonnées", "", 0);
401
		coordonnees = new TextField("Coordonnées", "", 0);
402
		coordonnees.setMaxLength(0);
402
		coordonnees.setMaxLength(0);
403
		coordonnees.setReadOnly(true);
403
		coordonnees.setReadOnly(true);
404
		coordonnees.setCls("fieldname");
404
		coordonnees.setCls("fieldname");
405
		
405
 
406
		//création du lien "saisie X/Y" dans le formulaire
406
		//création du lien "saisie X/Y" dans le formulaire
407
		afficherFormulaireLatLon = new HTML("<span style=\"padding-left:30px;\" class=\"conteneur_lien_afficher_lat_lon\">" +
407
		afficherFormulaireLatLon = new HTML("<span style=\"padding-left:30px;\" class=\"conteneur_lien_afficher_lat_lon\">" +
408
				"<a title=\"Lat / Lon sont les latitudes / longitudes, à remplir en degrés décimaux\" class=\"lien_actif\" id=\"lien_coord\" href=\"#\" tabindex=\"6\">Saisie Lat/Lon ("+referentielGeo+")</a>" +
408
				"<a title=\"Lat / Lon sont les latitudes / longitudes, à remplir en degrés décimaux\" class=\"lien_actif\" id=\"lien_coord\" href=\"#\" tabindex=\"6\">Saisie Lat/Lon ("+referentielGeo+")</a>" +
409
				"<span><span style=\"padding-left:20px\" class=\"conteneur_lien_localiser_lat_lon\">"+
409
				"<span><span style=\"padding-left:20px\" class=\"conteneur_lien_localiser_lat_lon\">"+
410
				"<a title=\"Cliquez pour obtenir les coordonnées de votre observation à partir de la carte\" class=\"lien_actif\" id=\"lien_carto_coord\" href=\"#\" tabindex=\"7\">Localiser sur la carte</a>"+
410
				"<a title=\"Cliquez pour obtenir les coordonnées de votre observation à partir de la carte\" class=\"lien_actif\" id=\"lien_carto_coord\" href=\"#\" tabindex=\"7\">Localiser sur la carte</a>"+
411
				"</span>");
411
				"</span>");
412
						
412
 
413
			//ajout d'un listener sur le lien "saisie X/Y"	
413
			//ajout d'un listener sur le lien "saisie X/Y"
414
			coordPanel.addListener(new PanelListenerAdapter() {
414
			coordPanel.addListener(new PanelListenerAdapter() {
415
				
415
 
416
				@Override
416
				@Override
417
				public void onAfterLayout(Container c) {
417
				public void onAfterLayout(Container c) {
418
					surPremierAffichageCoordPanel(largeur);
418
					surPremierAffichageCoordPanel(largeur);
419
				}
419
				}
420
			});
420
			});
421
						
421
 
422
		//Sur une meme ligne, ajout de plusieurs champs
422
		//Sur une meme ligne, ajout de plusieurs champs
423
		final MultiFieldPanel htmlPanel = new MultiFieldPanel();  
423
		final MultiFieldPanel htmlPanel = new MultiFieldPanel();
424
		
424
 
425
		htmlPanel.addToRow(coordonnees, 100); 
425
		htmlPanel.addToRow(coordonnees, 100);
426
		htmlPanel.addToRow(afficherFormulaireLatLon, new ColumnLayoutData(0.9)); 
426
		htmlPanel.addToRow(afficherFormulaireLatLon, new ColumnLayoutData(0.9));
427
		htmlPanel.setBorder(false);
427
		htmlPanel.setBorder(false);
428
		htmlPanel.setId("x-coord-panel");
428
		htmlPanel.setId("x-coord-panel");
429
			
429
 
430
		panneauPremierColonne.add(htmlPanel);
430
		panneauPremierColonne.add(htmlPanel);
431
		panneauPremierColonne.add(coordPanel);
431
		panneauPremierColonne.add(coordPanel);
432
	    
432
 
433
	    date = new DateField("Date", "date", 250);  
433
	    date = new DateField("Date", "date", 250);
434
	    date.setAllowBlank(true);
434
	    date.setAllowBlank(true);
435
	    formatDate = "d/m/Y";
435
	    formatDate = "d/m/Y";
436
	    date.setFormat(formatDate) ;
436
	    date.setFormat(formatDate) ;
437
	    date.setTitle("Date de l'observation au format jj/mm/aaaa");
437
	    date.setTitle("Date de l'observation au format jj/mm/aaaa");
438
	    date.setMaxValue(new Date());
438
	    date.setMaxValue(new Date());
439
	    //date.setTabIndex(5);
439
	    //date.setTabIndex(5);
440
	    panneauPremierColonne.add(date, new AnchorLayoutData("55%"));  
440
	    panneauPremierColonne.add(date, new AnchorLayoutData("55%"));
441
 	
441
 
442
	    
442
 
443
	    final String champsListeTpl = "<div class=\"x-combo-list-item search-item-tpl\" title=\"{label}\">{label}</div>"; 
443
	    final String champsListeTpl = "<div class=\"x-combo-list-item search-item-tpl\" title=\"{label}\">{label}</div>";
444
 	
444
 
445
	    // Selection d'un référentiel par défaut (le premier spécifié dans la config)
445
	    // Selection d'un référentiel par défaut (le premier spécifié dans la config)
446
	    referentielTaxo = Configuration.getReferentielsDispos().get(0).getCode();
446
	    referentielTaxo = Configuration.getReferentielsDispos().get(0).getCode();
447
	    selecteurReferentielTaxo = new ComboBox();
447
	    selecteurReferentielTaxo = new ComboBox();
448
	    selecteurReferentielTaxo.setCls("champ-separation");
448
	    selecteurReferentielTaxo.setCls("champ-separation");
Line 453... Line 453...
453
	    selecteurReferentielTaxo.setValueField("valeur");
453
	    selecteurReferentielTaxo.setValueField("valeur");
454
	    selecteurReferentielTaxo.setEditable(false);
454
	    selecteurReferentielTaxo.setEditable(false);
455
	    selecteurReferentielTaxo.setHideTrigger(false);
455
	    selecteurReferentielTaxo.setHideTrigger(false);
456
	    selecteurReferentielTaxo.setForceSelection(true);
456
	    selecteurReferentielTaxo.setForceSelection(true);
457
	    selecteurReferentielTaxo.setTpl(champsListeTpl);
457
	    selecteurReferentielTaxo.setTpl(champsListeTpl);
458
	    	    
458
	    
459
		espece=new ComboBox("Espèce","nom");  
459
		espece=new ComboBox("Espèce","nom");
460
		final String resultTplEspece = "<div class=\"search-item-espece {indicateurNomRetenu}\">{nom}</div>";  
460
		final String resultTplEspece = "<div class=\"search-item-espece {indicateurNomRetenu}\">{nom}</div>";
-
 
461
 
Line 461... Line -...
461
 
-
 
462
		
462
 
463
		espece.setTpl(resultTplEspece);
463
		espece.setTpl(resultTplEspece);
464
		espece.setMode(ComboBox.REMOTE);
464
		espece.setMode(ComboBox.REMOTE);
465
		espece.setItemSelector("div.search-item-espece");
465
		espece.setItemSelector("div.search-item-espece");
466
		espece.setTypeAhead(true);  
466
		espece.setTypeAhead(true);
467
		espece.setLoadingText("Recherche...");  
467
		espece.setLoadingText("Recherche...");
468
		  
468
 
Line 469... Line 469...
469
		espece.setHideTrigger(true);
469
		espece.setHideTrigger(true);
470
 
470
 
471
	    Panel panelSeparationPp = new Panel();
471
	    Panel panelSeparationPp = new Panel();
472
	    panelSeparationPp.setHeight(15);
472
	    panelSeparationPp.setHeight(15);
473
	    panelSeparationPp.setBorder(false);
473
	    panelSeparationPp.setBorder(false);
474
	    
474
 
475
	    panneauPremierColonne.add(panelSeparationPp);
475
	    panneauPremierColonne.add(panelSeparationPp);
476
	    panneauPremierColonne.add(selecteurReferentielTaxo, new AnchorLayoutData("85%")); 
476
	    panneauPremierColonne.add(selecteurReferentielTaxo, new AnchorLayoutData("85%"));
477
	    panneauPremierColonne.add(espece, new AnchorLayoutData("95%"));   
477
	    panneauPremierColonne.add(espece, new AnchorLayoutData("95%"));
478
	    
478
 
479
	    selecteurAbondance = new ComboBox();
479
	    selecteurAbondance = new ComboBox();
480
	    selecteurAbondance.setCls("champ-separation");
480
	    selecteurAbondance.setCls("champ-separation");
481
	    selecteurAbondance.setLabel("Abondance");
481
	    selecteurAbondance.setLabel("Abondance");
482
	    selecteurAbondance.setStore(Ontologies.getValeursAbondance());
482
	    selecteurAbondance.setStore(Ontologies.getValeursAbondance());
483
	    selecteurAbondance.setDisplayField("label") ;
483
	    selecteurAbondance.setDisplayField("label") ;
484
	    selecteurAbondance.setValueField("valeur");
484
	    selecteurAbondance.setValueField("valeur");
485
	    selecteurAbondance.setEditable(true);
485
	    selecteurAbondance.setEditable(true);
486
	    selecteurAbondance.setHideTrigger(false);
486
	    selecteurAbondance.setHideTrigger(false);
487
	    selecteurAbondance.setForceSelection(false);
487
	    selecteurAbondance.setForceSelection(false);
488
	    selecteurAbondance.setTpl(champsListeTpl);
488
	    selecteurAbondance.setTpl(champsListeTpl);
489
	    panneauPremierColonne.add(selecteurAbondance,  new AnchorLayoutData("95%"));   
489
	    panneauPremierColonne.add(selecteurAbondance,  new AnchorLayoutData("95%"));
Line 490... Line 490...
490
	    	    
490
	    
491
	    lieudit = new AutoCompletionRefComboBox("Lieu-dit", "lieudit",observationMediateur,TypesReferentiels.REFERENTIEL_LIEU_DIT) {
491
	    lieudit = new AutoCompletionRefComboBox("Lieu-dit", "lieudit",observationMediateur,TypesReferentiels.REFERENTIEL_LIEU_DIT) {
492
 
492
 
493
			@Override
493
			@Override
Line 494... Line 494...
494
			public void onModificationValeur() {
494
			public void onModificationValeur() {
495
				lieuDitModifie = true;			
495
				lieuDitModifie = true;
496
			}
496
			}
497
 
497
 
498
			@Override
498
			@Override
499
			public void onValidationSaisie() {
499
			public void onValidationSaisie() {
500
				validerSaisie(Champs.LIEUDIT);
500
				validerSaisie(Champs.LIEUDIT);
501
			}
501
			}
Line 502... Line 502...
502
	    };
502
	    };
503
	    panneauSecondeColonne.add(lieudit,  new AnchorLayoutData("95%"));  
503
	    panneauSecondeColonne.add(lieudit,  new AnchorLayoutData("95%"));
504
	       	    
504
	       
Line 511... Line 511...
511
 
511
 
512
			@Override
512
			@Override
513
			public void onValidationSaisie() {
513
			public void onValidationSaisie() {
514
				validerSaisie(Champs.MILIEU);
514
				validerSaisie(Champs.MILIEU);
515
			}
515
			}
516
	    	
516
	    
517
	    };
517
	    };
518
	    panneauSecondeColonne.add(milieu,  new AnchorLayoutData("95%"));
518
	    panneauSecondeColonne.add(milieu,  new AnchorLayoutData("95%"));
519
	    
519
 
520
	    comment = new TextArea("Notes", "comment");  
520
	    comment = new TextArea("Notes", "comment");
521
	    comment.setAllowBlank(true);
521
	    comment.setAllowBlank(true);
522
	    comment.setHeight(50);
522
	    comment.setHeight(50);
523
	    
523
 
524
	    panneauSecondeColonne.add(comment, new AnchorLayoutData("95%") );
524
	    panneauSecondeColonne.add(comment, new AnchorLayoutData("95%") );
525
	    
525
 
526
	    Panel panelSeparationPs = new Panel();
526
	    Panel panelSeparationPs = new Panel();
527
	    panelSeparationPs.setHeight(39);
527
	    panelSeparationPs.setHeight(39);
528
	    panelSeparationPs.setBorder(false);
528
	    panelSeparationPs.setBorder(false);
529
	    
529
 
530
	    panneauSecondeColonne.add(panelSeparationPs);
530
	    panneauSecondeColonne.add(panelSeparationPs);
531
	    
531
 
532
	    selecteurCertitude = new ComboBox();
532
	    selecteurCertitude = new ComboBox();
533
	    selecteurCertitude.setLabel("Identification");
533
	    selecteurCertitude.setLabel("Identification");
534
	    selecteurCertitude.setStore(Ontologies.getValeursCertitude());
534
	    selecteurCertitude.setStore(Ontologies.getValeursCertitude());
535
	    selecteurCertitude.setDisplayField("label") ;
535
	    selecteurCertitude.setDisplayField("label") ;
536
	    selecteurCertitude.setValueField("valeur");
536
	    selecteurCertitude.setValueField("valeur");
537
	    selecteurCertitude.setEditable(true);
537
	    selecteurCertitude.setEditable(true);
538
	    selecteurCertitude.setHideTrigger(false);
538
	    selecteurCertitude.setHideTrigger(false);
539
	    selecteurCertitude.setForceSelection(false);
539
	    selecteurCertitude.setForceSelection(false);
540
	    selecteurCertitude.setTpl(champsListeTpl);
540
	    selecteurCertitude.setTpl(champsListeTpl);
541
	    panneauSecondeColonne.add(selecteurCertitude, new AnchorLayoutData("95%"));   
541
	    panneauSecondeColonne.add(selecteurCertitude, new AnchorLayoutData("95%"));
542
	    
542
 
543
	    selecteurStadePheno = new ComboBox();
543
	    selecteurStadePheno = new ComboBox();
544
	    selecteurStadePheno.setLabel("Phénologie");
544
	    selecteurStadePheno.setLabel("Phénologie");
545
	    selecteurStadePheno.setStore(Ontologies.getValeursPhenologie());
545
	    selecteurStadePheno.setStore(Ontologies.getValeursPhenologie());
546
	    selecteurStadePheno.setDisplayField("label") ;
546
	    selecteurStadePheno.setDisplayField("label") ;
547
	    selecteurStadePheno.setValueField("valeur");
547
	    selecteurStadePheno.setValueField("valeur");
548
	    selecteurStadePheno.setEditable(true);
548
	    selecteurStadePheno.setEditable(true);
549
	    selecteurStadePheno.setHideTrigger(false);
549
	    selecteurStadePheno.setHideTrigger(false);
550
	    selecteurStadePheno.setForceSelection(false);
550
	    selecteurStadePheno.setForceSelection(false);
551
	    selecteurStadePheno.setTpl(champsListeTpl);
551
	    selecteurStadePheno.setTpl(champsListeTpl);
552
	    panneauSecondeColonne.add(selecteurStadePheno, new AnchorLayoutData("95%"));   
552
	    panneauSecondeColonne.add(selecteurStadePheno, new AnchorLayoutData("95%"));
553
	    
553
 
554
	    if (Window.getClientWidth() > Window.getClientHeight() || Window.getClientWidth() < 800) {
554
	    if (Window.getClientWidth() > Window.getClientHeight() || Window.getClientWidth() < 800) {
555
			panneauIntermediaire.add(panneauPremierColonne, new ColumnLayoutData(.5));
555
			panneauIntermediaire.add(panneauPremierColonne, new ColumnLayoutData(.5));
556
			panneauIntermediaire.add(panneauSecondeColonne, new ColumnLayoutData(.5));
556
			panneauIntermediaire.add(panneauSecondeColonne, new ColumnLayoutData(.5));
557
	    }
557
	    }
558
	    else {
558
	    else {
559
			panneauIntermediaire.add(panneauPremierColonne);
559
			panneauIntermediaire.add(panneauPremierColonne);
560
			panneauIntermediaire.add(panneauSecondeColonne);   	
560
			panneauIntermediaire.add(panneauSecondeColonne);   
561
	    }
561
	    }
562
			
562
 
563
		panneauFormulaire.add(panneauIntermediaire);
563
		panneauFormulaire.add(panneauIntermediaire);
564
					
564
 
565
		if (Ext.isIE()) {
565
		if (Ext.isIE()) {
566
			panneauPremierColonne.setButtonAlign(Position.RIGHT);
566
			panneauPremierColonne.setButtonAlign(Position.RIGHT);
567
			panneauPremierColonne.addButton(boutonOK);
567
			panneauPremierColonne.addButton(boutonOK);
568
			panneauPremierColonne.addButton(boutonModifier);
568
			panneauPremierColonne.addButton(boutonModifier);
569
			panneauPremierColonne.addButton(boutonSupprimer);
569
			panneauPremierColonne.addButton(boutonSupprimer);
570
			panneauSecondeColonne.setButtonAlign(Position.LEFT);
570
			panneauSecondeColonne.setButtonAlign(Position.LEFT);
571
			panneauPremierColonne.addButton(boutonAnnuler);
571
			panneauPremierColonne.addButton(boutonAnnuler);
572
		}
572
		}
573
		else {	
573
		else {
574
			panneauFormulaire.addButton(boutonOK);
574
			panneauFormulaire.addButton(boutonOK);
575
			panneauFormulaire.addButton(boutonModifier);
575
			panneauFormulaire.addButton(boutonModifier);
576
			panneauFormulaire.addButton(boutonSupprimer);
576
			panneauFormulaire.addButton(boutonSupprimer);
577
			panneauFormulaire.addButton(boutonAnnuler);		
577
			panneauFormulaire.addButton(boutonAnnuler);
578
		}
578
		}
579
		
579
 
580
		this.add(panneauFormulaire) ;
580
		this.add(panneauFormulaire) ;
581
		
581
 
582
		this.setAutoScroll(true);
582
		this.setAutoScroll(true);
583
	
583
 
584
		
584
 
585
		panneauFormulaire.addListener(new PanelListenerAdapter() {
585
		panneauFormulaire.addListener(new PanelListenerAdapter() {
586
	        @Override
586
	        @Override
587
			public void onResize(BoxComponent component, int adjWidth, int adjHeight, int rawWidth, int rawHeight) {
587
			public void onResize(BoxComponent component, int adjWidth, int adjHeight, int rawWidth, int rawHeight) {
588
	        	panneauIntermediaire.setWidth(rawWidth);
588
	        	panneauIntermediaire.setWidth(rawWidth);
589
	        	panneauIntermediaire.setHeight(rawHeight);
589
	        	panneauIntermediaire.setHeight(rawHeight);
590
	        	
590
	        
591
	        	panneauPremierColonne.doLayout();
591
	        	panneauPremierColonne.doLayout();
592
	        	panneauSecondeColonne.doLayout();
592
	        	panneauSecondeColonne.doLayout();
593
	        		        	
593
	        		        
594
	        	htmlCommunePanel.doLayout();
594
	        	htmlCommunePanel.doLayout();
595
	        	htmlPanel.doLayout();
595
	        	htmlPanel.doLayout();
596
	        	
596
	        
597
	        	doLayout();
597
	        	doLayout();
598
	        }
598
	        }
599
	    });
599
	    });
600
		
600
 
601
		lienAfficherChampsEtendus = new HTML("Afficher les champs étendus");
601
		lienAfficherChampsEtendus = new HTML("Afficher les champs étendus");
602
		lienAfficherChampsEtendus.setStyleName("img-curseur-depl");
602
		lienAfficherChampsEtendus.setStyleName("img-curseur-depl");
603
		lienAfficherChampsEtendus.setStyleName("lienAfficherChampsEtendus");
603
		lienAfficherChampsEtendus.setStyleName("lienAfficherChampsEtendus");
Line 611... Line 611...
611
					if(conteneurChampEtenduGauche != null && conteneurChampEtenduDroite != null) {
611
					if(conteneurChampEtenduGauche != null && conteneurChampEtenduDroite != null) {
612
						conteneurChampEtenduGauche.hide();
612
						conteneurChampEtenduGauche.hide();
613
						conteneurChampEtenduDroite.hide();
613
						conteneurChampEtenduDroite.hide();
614
					}
614
					}
615
					lienAfficherChampsEtendus.setText("Afficher les champs étendus");
615
					lienAfficherChampsEtendus.setText("Afficher les champs étendus");
616
					
616
 
617
				} else {
617
				} else {
618
					afficherChampsEtendus = true;
618
					afficherChampsEtendus = true;
619
					if(conteneurChampEtenduGauche != null && conteneurChampEtenduDroite != null) {
619
					if(conteneurChampEtenduGauche != null && conteneurChampEtenduDroite != null) {
620
						conteneurChampEtenduGauche.show();
620
						conteneurChampEtenduGauche.show();
621
						conteneurChampEtenduDroite.show();
621
						conteneurChampEtenduDroite.show();
Line 637... Line 637...
637
 
637
 
638
		ajouterListeners() ;
638
		ajouterListeners() ;
639
		ajouterToolTipsBoutons();
639
		ajouterToolTipsBoutons();
640
		saisieTabindex();
640
		saisieTabindex();
641
	}
641
	}
642
	
642
 
643
	private void ajouterToolTipsBoutons() {
643
	private void ajouterToolTipsBoutons() {
644
		boutonOK.setTitle("Crée une nouvelle observation à partir des champs saisis dans le formulaire");
644
		boutonOK.setTitle("Crée une nouvelle observation à partir des champs saisis dans le formulaire");
645
		boutonModifier.setTitle("Modifie la ou les observations sélectionnées");
645
		boutonModifier.setTitle("Modifie la ou les observations sélectionnées");
646
		boutonSupprimer.setTitle("Supprime la ou les observations sélectionnées");
646
		boutonSupprimer.setTitle("Supprime la ou les observations sélectionnées");
647
		boutonAnnuler.setTitle("Vide tous les champs du formulaire");		
647
		boutonAnnuler.setTitle("Vide tous les champs du formulaire");
648
	}
648
	}
649
	
649
 
650
	private void surPremierAffichageCoordPanel(final double largeur) {
650
	private void surPremierAffichageCoordPanel(final double largeur) {
651
		ExtElement lienCoord = Ext.get("lien_coord");
651
		ExtElement lienCoord = Ext.get("lien_coord");
652
		lienCoord.removeAllListeners();
652
		lienCoord.removeAllListeners();
653
		lienCoord.addListener("click", new EventCallback() {
653
		lienCoord.addListener("click", new EventCallback() {
654
			@Override
654
			@Override
655
			public void execute(EventObject e) {
655
			public void execute(EventObject e) {
656
				
656
 
657
				coordPanel.setVisible(!coordPanel.isVisible());
657
				coordPanel.setVisible(!coordPanel.isVisible());
658
				
658
 
659
				if(Ext.isIE()) {
659
				if(Ext.isIE()) {
660
					latitude.focus();
660
					latitude.focus();
661
				}
661
				}
662
				
662
 
663
				CarnetEnLigneMediateur.fireResize();
663
				CarnetEnLigneMediateur.fireResize();
664
			}
664
			}
665
		}) ;
665
		}) ;
666
		
666
 
667
		ExtElement lienCartoCoord = Ext.get("lien_carto_coord");
667
		ExtElement lienCartoCoord = Ext.get("lien_carto_coord");
668
		lienCartoCoord.removeAllListeners();
668
		lienCartoCoord.removeAllListeners();
669
		lienCartoCoord.addListener("click", new EventCallback() {
669
		lienCartoCoord.addListener("click", new EventCallback() {
670
			@Override
670
			@Override
671
			public void execute(EventObject e) {
671
			public void execute(EventObject e) {
672
				obtenirInformationCoord();
672
				obtenirInformationCoord();
673
			}
673
			}
674
		}) ;
674
		}) ;
675
	
675
 
676
		ExtElement lienCarto = Ext.get("lien_carto");
676
		ExtElement lienCarto = Ext.get("lien_carto");
677
		lienCarto.removeAllListeners();
677
		lienCarto.removeAllListeners();
Line 678... Line 678...
678
		lienCarto.addListener("click", new EventCallback() {
678
		lienCarto.addListener("click", new EventCallback() {
679
 
679
 
680
			@Override
680
			@Override
681
			public void execute(EventObject e) {
681
			public void execute(EventObject e) {
682
				
682
 
683
				if(commune.getValue() != null && !commune.getValue().equals("") && !getDepartement().equals("")) {
683
				if(commune.getValue() != null && !commune.getValue().equals("") && !getDepartement().equals("")) {
684
					obtenirInformationCommune();
684
					obtenirInformationCommune();
685
					longlatAjoutee = true;
685
					longlatAjoutee = true;
686
		
686
 
687
				} else {
687
				} else {
688
					Window.alert("Veuillez renseigner une commune et un numéro de département sous la forme : Commune (departement)");
688
					Window.alert("Veuillez renseigner une commune et un numéro de département sous la forme : Commune (departement)");
689
				}
689
				}
690
			}
690
			}
691
		});
691
		});
692
		
692
 
693
		if(!Ext.isIE() && Window.getClientWidth() < 1200) {
693
		if(!Ext.isIE() && Window.getClientWidth() < 1200) {
694
			
694
 
695
			int largeurN = (int)largeur;
695
			int largeurN = (int)largeur;
696
			
696
 
697
			latitude.setWidth(largeurN+"px");
697
			latitude.setWidth(largeurN+"px");
698
			longitude.setWidth(largeurN+"px");
698
			longitude.setWidth(largeurN+"px");
699
			lienSelectionCommune.setWidth(largeurN+"px");						
699
			lienSelectionCommune.setWidth(largeurN+"px");
700
		}
700
		}
701
	}
701
	}
702
			
702
 
703
	private void ajouterListeners()
703
	private void ajouterListeners()
704
	{	
704
	{
705
		// Listener completion communne 
705
		// Listener completion communne
706
		final Rafraichissable r = this;
706
		final Rafraichissable r = this;
707
		  	        
707
		  
708
		ListenerConfig listenerConfigCommune=new ListenerConfig();
708
		ListenerConfig listenerConfigCommune=new ListenerConfig();
709
		listenerConfigCommune.setDelay(200);
709
		listenerConfigCommune.setDelay(200);
Line 715... Line 715...
715
			@Override
715
			@Override
716
			public void onSelect(DatePicker dataPicker, Date date) {
716
			public void onSelect(DatePicker dataPicker, Date date) {
717
				dateModifiee = true;
717
				dateModifiee = true;
718
			}
718
			}
719
	    });
719
	    });
720
	    
720
 
721
	    ListenerConfig listenerConfigAutocompletion=new ListenerConfig();
721
	    ListenerConfig listenerConfigAutocompletion=new ListenerConfig();
722
	    listenerConfigAutocompletion.setDelay(200);
722
	    listenerConfigAutocompletion.setDelay(200);
723
	    listenerConfigAutocompletion.setStopPropagation(false);
723
	    listenerConfigAutocompletion.setStopPropagation(false);
724
	    listenerConfigAutocompletion.setStopEvent(false);
724
	    listenerConfigAutocompletion.setStopEvent(false);
725
	    
725
 
726
		ListenerConfig listenerConfigEspece=new ListenerConfig();
726
		ListenerConfig listenerConfigEspece=new ListenerConfig();
727
		listenerConfigEspece.setDelay(10);
727
		listenerConfigEspece.setDelay(10);
728
		listenerConfigEspece.setStopPropagation(false);
728
		listenerConfigEspece.setStopPropagation(false);
729
		listenerConfigEspece.setStopEvent(false);
729
		listenerConfigEspece.setStopEvent(false);
730
			
730
 
731
		tCoord = new Timer() {
731
		tCoord = new Timer() {
Line 732... Line 732...
732
 
732
 
733
			@Override
733
			@Override
734
			public void run() {
734
			public void run() {
Line 737... Line 737...
737
	        		rechercheCommuneEnCours = true;
737
	        		rechercheCommuneEnCours = true;
738
	        		Ext.get(lienSelectionCommune.getElement()).mask("recherche");
738
	        		Ext.get(lienSelectionCommune.getElement()).mask("recherche");
739
	        		observationMediateur.obtenirInformationCoord(r,LatLng.newInstance(coord[0], coord[1]));
739
	        		observationMediateur.obtenirInformationCoord(r,LatLng.newInstance(coord[0], coord[1]));
740
	        	}
740
	        	}
741
			}
741
			}
742
			
742
 
743
		};
743
		};
744
		
744
 
745
		ajouterListenerChampEvenementsClavier(commune, listenerConfigCommune);
745
		ajouterListenerChampEvenementsClavier(commune, listenerConfigCommune);
746
	    ajouterListenerChampEvenementsClavier(date);
746
	    ajouterListenerChampEvenementsClavier(date);
747
		ajouterListenerChampEvenementsClavier(selecteurReferentielTaxo);
747
		ajouterListenerChampEvenementsClavier(selecteurReferentielTaxo);
748
		ajouterListenerChampEvenementsClavier(espece, listenerConfigEspece);
748
		ajouterListenerChampEvenementsClavier(espece, listenerConfigEspece);
749
		ajouterListenerChampEvenementsClavier(comment);
749
		ajouterListenerChampEvenementsClavier(comment);
750
		ajouterListenerChampEvenementsClavier(latitude);
750
		ajouterListenerChampEvenementsClavier(latitude);
751
		ajouterListenerChampEvenementsClavier(longitude);
751
		ajouterListenerChampEvenementsClavier(longitude);
752
		ajouterListenerChampEvenementsClavier(altitude);
752
		ajouterListenerChampEvenementsClavier(altitude);
753
		ajouterListenerChampEvenementsClavier(selecteurAbondance);			
753
		ajouterListenerChampEvenementsClavier(selecteurAbondance);
754
		ajouterListenerChampEvenementsClavier(selecteurCertitude);			
754
		ajouterListenerChampEvenementsClavier(selecteurCertitude);
755
		ajouterListenerChampEvenementsClavier(selecteurStadePheno);
755
		ajouterListenerChampEvenementsClavier(selecteurStadePheno);
756
		ajouterListenerChampsCombobox();
756
		ajouterListenerChampsCombobox();
757
		
757
 
758
		boutonOK.addListener(new ButtonListenerAdapter() {
758
		boutonOK.addListener(new ButtonListenerAdapter() {
759
			@Override
759
			@Override
760
			public void onClick(Button button, EventObject e) {	
760
			public void onClick(Button button, EventObject e) {
761
				ajouterObservation();
761
				ajouterObservation();
762
			}			
762
			}
763
		});
763
		});
764
		
764
 
765
		boutonModifier.addListener(new ButtonListenerAdapter() {
765
		boutonModifier.addListener(new ButtonListenerAdapter() {
766
			@Override
766
			@Override
767
			public void onClick(Button button, EventObject e) {	
767
			public void onClick(Button button, EventObject e) {
768
				if(selectionMultiple) {
768
				if(selectionMultiple) {
769
						modifierObservationEnMasse(null);
769
						modifierObservationEnMasse(null);
770
				} else {
770
				} else {
771
					modifierObservation() ;
771
					modifierObservation() ;
772
				}
772
				}
773
			}		
773
			}
774
		});
774
		});
775
		
775
 
776
		boutonSupprimer.addListener(new ButtonListenerAdapter() {
776
		boutonSupprimer.addListener(new ButtonListenerAdapter() {
777
			@Override
777
			@Override
778
			public void onClick(Button button, EventObject e) {	
778
			public void onClick(Button button, EventObject e) {
779
				if(!selectionMultiple) {
779
				if(!selectionMultiple) {
780
					supprimerObservation();
780
					supprimerObservation();
781
				} else {
781
				} else {
782
					observationMediateur.supprimerObservations();
782
					observationMediateur.supprimerObservations();
783
				}
783
				}
784
			}			
784
			}
785
		});
785
		});
786
	
786
 
787
		boutonAnnuler.addListener(new ButtonListenerAdapter() {	
787
		boutonAnnuler.addListener(new ButtonListenerAdapter() {
788
			@Override
788
			@Override
789
			public void onClick(Button button, EventObject e) {		
789
			public void onClick(Button button, EventObject e) {
790
					setSelectionMultiple(false);
790
					setSelectionMultiple(false);
791
					raz();
791
					raz();
792
			}	
792
			}
793
		});
793
		});
794
	
794
 
795
		this.addListener(new ContainerListenerAdapter() {
795
		this.addListener(new ContainerListenerAdapter() {
796
			@Override
796
			@Override
797
			public void onAfterLayout(Container self) {
797
			public void onAfterLayout(Container self) {
798
				commune.focus();
798
				commune.focus();
799
			}
799
			}
800
		});		
800
		});
801
	}
801
	}
802
	
802
 
803
	private void ajouterListenerChampsCombobox() {
803
	private void ajouterListenerChampsCombobox() {
804
		commune.addListener(new ComboBoxListenerAdapter() {  
804
		commune.addListener(new ComboBoxListenerAdapter() {
805
            @Override
805
            @Override
806
			public void onSelect(ComboBox comboBox, Record record, int index) {  
806
			public void onSelect(ComboBox comboBox, Record record, int index) {
807
                commune.setValue(record.getAsString("commune"));
807
                commune.setValue(record.getAsString("commune"));
808
                departement=record.getAsString("departement");
808
                departement=record.getAsString("departement");
809
                codeInseeCommune=record.getAsString("codeInsee");
809
                codeInseeCommune=record.getAsString("codeInsee");
810
                selectionCommune=true;
810
                selectionCommune=true;
811
                commune.collapse();
811
                commune.collapse();
812
            }  
812
            }
813
            
813
 
814
            @Override
814
            @Override
815
			public void onExpand(ComboBox comboBox) {
815
			public void onExpand(ComboBox comboBox) {
816
           	 comboBox.focus();
816
           	 comboBox.focus();
817
            }
817
            }
818
        }); 
818
        });
819
		 
819
 
820
		selecteurReferentielTaxo.addListener(new ComboBoxListenerAdapter() {  
820
		selecteurReferentielTaxo.addListener(new ComboBoxListenerAdapter() {
821
             @Override
821
             @Override
822
			public void onSelect(ComboBox comboBox, Record record, int index) {
822
			public void onSelect(ComboBox comboBox, Record record, int index) {
823
            	 referentielTaxo = record.getAsString("valeur");
823
            	 referentielTaxo = record.getAsString("valeur");
824
                 observationMediateur.setRefTaxSelectionne(index);
824
                 observationMediateur.setRefTaxSelectionne(index);
825
                 referentielTaxoModifie = true;
825
                 referentielTaxoModifie = true;
826
             }  
826
             }
827
         });  
827
         });
828
		
828
 
829
		espece.addListener(new ComboBoxListenerAdapter() {  
829
		espece.addListener(new ComboBoxListenerAdapter() {
830
             @Override
830
             @Override
831
			public void onSelect(ComboBox comboBox, Record record, int index) {  
831
			public void onSelect(ComboBox comboBox, Record record, int index) {
832
            	 espece.setValue(record.getAsString("nom"));
832
            	 espece.setValue(record.getAsString("nom"));
833
            	 numeroNom=record.getAsString("numeroNom");
833
            	 numeroNom=record.getAsString("numeroNom");
834
                 selectionEspece=true;
834
                 selectionEspece=true;
835
                 observationMediateur.obtenirImageInformationExternes(referentielTaxo, numeroNom);
835
                 observationMediateur.obtenirImageInformationExternes(referentielTaxo, numeroNom);
836
             }  
836
             }
837
         });  
837
         });
838
		
838
 
839
		selecteurAbondance.addListener(new ComboBoxListenerAdapter() {  
839
		selecteurAbondance.addListener(new ComboBoxListenerAdapter() {
840
			@Override
840
			@Override
841
			public void onSelect(ComboBox comboBox, Record record, int index) {  
841
			public void onSelect(ComboBox comboBox, Record record, int index) {
842
                 selectionAbondance=true;
842
                 selectionAbondance=true;
843
                 abondanceModifiee = true;
843
                 abondanceModifiee = true;
844
             }
844
             }
845
         });
845
         });
846
		
846
 
847
		selecteurCertitude.addListener(new ComboBoxListenerAdapter() {  
847
		selecteurCertitude.addListener(new ComboBoxListenerAdapter() {
Line 848... Line 848...
848
 
848
 
849
			@Override
849
			@Override
850
			public void onSelect(ComboBox comboBox, Record record, int index) {  
850
			public void onSelect(ComboBox comboBox, Record record, int index) {
851
                 selectionCertitude=true;
851
                 selectionCertitude=true;
852
                 certitudeModifiee = true;
852
                 certitudeModifiee = true;
853
             }
853
             }
854
         }); 
854
         });
855
		
855
 
856
		selecteurStadePheno.addListener(new ComboBoxListenerAdapter() {  
856
		selecteurStadePheno.addListener(new ComboBoxListenerAdapter() {
857
			@Override
857
			@Override
858
			public void onSelect(ComboBox comboBox, Record record, int index) {  
858
			public void onSelect(ComboBox comboBox, Record record, int index) {
859
                 selectionPhenologie=true;
859
                 selectionPhenologie=true;
860
                 phenologieModifiee = true;
860
                 phenologieModifiee = true;
861
             }
861
             }
862
         });  
862
         });
863
	}
863
	}
864
	
864
 
865
	private void ajouterListenerChampEvenementsClavier(final TextField champ) {
865
	private void ajouterListenerChampEvenementsClavier(final TextField champ) {
866
		champ.addKeyPressListener(new EventCallback() {
866
		champ.addKeyPressListener(new EventCallback() {
867
			@Override
867
			@Override
868
			public void execute(EventObject e) {
868
			public void execute(EventObject e) {
869
				surEvenementClavier(e, champ);
869
				surEvenementClavier(e, champ);
870
			}
870
			}
871
	    });
871
	    });
872
	}
872
	}
873
	
873
 
874
	
874
 
875
	private void ajouterListenerChampEvenementsClavier(final TextField champ, final ListenerConfig config) {
875
	private void ajouterListenerChampEvenementsClavier(final TextField champ, final ListenerConfig config) {
876
		champ.addKeyPressListener(new EventCallback() {
876
		champ.addKeyPressListener(new EventCallback() {
877
			@Override
877
			@Override
878
			public void execute(EventObject e) {
878
			public void execute(EventObject e) {
879
				surEvenementClavier(e, champ);
879
				surEvenementClavier(e, champ);
880
			}
880
			}
881
	    }, config);
881
	    }, config);
882
	}
882
	}
883
	
883
 
884
	private void surEvenementClavier(EventObject e, TextField champ) {
884
	private void surEvenementClavier(EventObject e, TextField champ) {
885
		switch(e.getKey()) { 
885
		switch(e.getKey()) {
886
			case KEY_ALT:
886
			case KEY_ALT:
887
			case KEY_CTRL:
887
			case KEY_CTRL:
888
			case KEY_DOWN:
888
			case KEY_DOWN:
889
			case KEY_END:
889
			case KEY_END:
Line 895... Line 895...
895
			case KEY_RIGHT:
895
			case KEY_RIGHT:
896
			case KEY_SHIFT:
896
			case KEY_SHIFT:
897
			case KEY_TAB:
897
			case KEY_TAB:
898
			case KEY_UP:
898
			case KEY_UP:
899
	        break;
899
	        break;
900
	        
900
 
901
		    case KEY_ENTER:
901
		    case KEY_ENTER:
902
		    	surEvenementClavierToucheEntree(champ);
902
		    	surEvenementClavierToucheEntree(champ);
903
		    	break;
903
		    	break;
904
	
904
 
905
	        default:
905
	        default:
906
	        	gererEvenementClavierDefaut(champ);
906
	        	gererEvenementClavierDefaut(champ);
907
	        break;
907
	        break;
908
		}
908
		}
909
	}
909
	}
910
	
910
 
911
	private void surEvenementClavierToucheEntree(TextField champ) {
911
	private void surEvenementClavierToucheEntree(TextField champ) {
912
		//TODO: faire un switch ou une enum
912
		//TODO: faire un switch ou une enum
913
		if(champ.equals(selecteurStadePheno)) {
913
		if(champ.equals(selecteurStadePheno)) {
914
			if(!selectionPhenologie) {	
914
			if(!selectionPhenologie) {
915
  	    		validerSaisie(Champs.PHENOLOGIE); 	
915
  	    		validerSaisie(Champs.PHENOLOGIE); 
916
	    	} else {
916
	    	} else {
917
	    		selectionPhenologie = false;
917
	    		selectionPhenologie = false;
918
	    	}
918
	    	}
919
		}
919
		}
920
		
920
 
921
		if(champ.equals(selecteurCertitude)) {
921
		if(champ.equals(selecteurCertitude)) {
922
			if(!selectionCertitude) {	
922
			if(!selectionCertitude) {
923
		    		validerSaisie(Champs.CERTITUDE); 	
923
		    		validerSaisie(Champs.CERTITUDE); 
924
	    	} else {
924
	    	} else {
925
	    		selectionCertitude = false;
925
	    		selectionCertitude = false;
926
	    	}
926
	    	}
927
		}
927
		}
928
		
928
 
929
		if(champ.equals(selecteurAbondance)) {
929
		if(champ.equals(selecteurAbondance)) {
930
			if(!selectionAbondance) {	
930
			if(!selectionAbondance) {
931
		    	validerSaisie(Champs.ABONDANCE); 	
931
		    	validerSaisie(Champs.ABONDANCE); 
932
	    	} else {
932
	    	} else {
933
	    		selectionAbondance = false;
933
	    		selectionAbondance = false;
934
	    	}
934
	    	}
935
		}
935
		}
936
		
936
 
937
		if(champ.equals(longitude)) {
937
		if(champ.equals(longitude)) {
938
			validerSaisie(Champs.LONGITUDE);
938
			validerSaisie(Champs.LONGITUDE);
939
		}
939
		}
940
		
940
 
941
		if(champ.equals(latitude)) {  	    	    	  
941
		if(champ.equals(latitude)) {  	    	    
942
	    	validerSaisie(Champs.LATITUDE); 
942
	    	validerSaisie(Champs.LATITUDE);
943
		}
943
		}
944
		
944
 
945
		if(champ.equals(altitude)) {  	    	    	  
945
		if(champ.equals(altitude)) {  	    	    
946
	    	validerSaisie(Champs.ALTITUDE); 
946
	    	validerSaisie(Champs.ALTITUDE);
947
		}
947
		}
948
		
948
 
949
		if(champ.equals(espece)) {
949
		if(champ.equals(espece)) {
950
			if(selectionEspece) {
950
			if(selectionEspece) {
951
	    		especeModifiee = true;
951
	    		especeModifiee = true;
952
	    		selectionEspece=false;
952
	    		selectionEspece=false;
953
	    	}
953
	    	}
954
	    	else {
954
	    	else {
955
	    		validerSaisie(Champs.ESPECE); 	    	    		 
955
	    		validerSaisie(Champs.ESPECE); 	    	    
956
	    	}
956
	    	}
957
		}
957
		}
958
		
958
 
959
		if(champ.equals(selecteurReferentielTaxo)) {
959
		if(champ.equals(selecteurReferentielTaxo)) {
960
			validerSaisie(Champs.REFERENTIELTAXO); 
960
			validerSaisie(Champs.REFERENTIELTAXO);
961
		}
961
		}
962
		
962
 
963
		if(champ.equals(date)) {
963
		if(champ.equals(date)) {
964
			validerSaisie(Champs.DATE); 
964
			validerSaisie(Champs.DATE);
965
		}
965
		}
966
		
966
 
967
		if(champ.equals(commune)) {		
967
		if(champ.equals(commune)) {
968
			if(champ.equals(commune)) {
968
			if(champ.equals(commune)) {
969
				if (selectionCommune) {
969
				if (selectionCommune) {
970
		    		 communeModifiee= true;
970
		    		 communeModifiee= true;
971
		    		 selectionCommune=false;
971
		    		 selectionCommune=false;
972
		    	 }
972
		    	 }
973
		    	else {
973
		    	else {
974
		    		validerSaisie(Champs.COMMUNE);    	    	    		 
974
		    		validerSaisie(Champs.COMMUNE);
975
		    	 }
975
		    	 }
976
			}
976
			}
977
		}
977
		}
978
	}
978
	}
979
	
979
 
980
	private void gererEvenementClavierDefaut(TextField champ) {
980
	private void gererEvenementClavierDefaut(TextField champ) {
981
		//TODO: faire un switch ou une enum
981
		//TODO: faire un switch ou une enum
982
		if(champ.equals(selecteurStadePheno)) {
982
		if(champ.equals(selecteurStadePheno)) {
983
			selecteurStadePheno.setRawValue(selecteurStadePheno.getRawValue());
983
			selecteurStadePheno.setRawValue(selecteurStadePheno.getRawValue());
984
			selecteurStadePheno.setValue(selecteurStadePheno.getRawValue());
984
			selecteurStadePheno.setValue(selecteurStadePheno.getRawValue());
985
			phenologieModifiee = true;
985
			phenologieModifiee = true;
986
			selectionPhenologie = false;
986
			selectionPhenologie = false;
987
		}
987
		}
988
		
988
 
989
		if(champ.equals(selecteurCertitude)) {
989
		if(champ.equals(selecteurCertitude)) {
990
			selecteurCertitude.setRawValue(selecteurCertitude.getRawValue());
990
			selecteurCertitude.setRawValue(selecteurCertitude.getRawValue());
991
	    	selecteurCertitude.setValue(selecteurCertitude.getRawValue());
991
	    	selecteurCertitude.setValue(selecteurCertitude.getRawValue());
992
	    	certitudeModifiee = true;
992
	    	certitudeModifiee = true;
993
	    	selectionCertitude = false;
993
	    	selectionCertitude = false;
994
		}
994
		}
995
		
995
 
996
		if(champ.equals(selecteurAbondance)) {
996
		if(champ.equals(selecteurAbondance)) {
997
			selecteurAbondance.setRawValue(selecteurAbondance.getRawValue());
997
			selecteurAbondance.setRawValue(selecteurAbondance.getRawValue());
998
	    	selecteurAbondance.setValue(selecteurAbondance.getRawValue());
998
	    	selecteurAbondance.setValue(selecteurAbondance.getRawValue());
999
	    	abondanceModifiee = true;
999
	    	abondanceModifiee = true;
1000
	    	selectionAbondance = false;
1000
	    	selectionAbondance = false;
1001
		}
1001
		}
1002
		
1002
 
1003
		if(champ.equals(longitude)) {
1003
		if(champ.equals(longitude)) {
1004
			longModifiee = true;
1004
			longModifiee = true;
1005
        	tCoord.cancel();
1005
        	tCoord.cancel();
1006
        	tCoord.schedule(250);
1006
        	tCoord.schedule(250);
1007
		}
1007
		}
1008
		
1008
 
1009
		if(champ.equals(latitude)) {  	    	    	  
1009
		if(champ.equals(latitude)) {  	    	    
1010
			latModifiee = true;
1010
			latModifiee = true;
1011
	      	tCoord.cancel();
1011
	      	tCoord.cancel();
1012
	      	tCoord.schedule(250);
1012
	      	tCoord.schedule(250);
1013
		}
1013
		}
1014
		
1014
 
1015
		if(champ.equals(altitude)) {  	    	    	  
1015
		if(champ.equals(altitude)) {  	    	    
1016
			altModifiee = true;  	
1016
			altModifiee = true;  
1017
		}
1017
		}
1018
		
1018
 
1019
		if(champ.equals(comment)) {
1019
		if(champ.equals(comment)) {
1020
			commModifie = true;
1020
			commModifie = true;
1021
		}
1021
		}
1022
		
1022
 
1023
		if(champ.equals(espece)) {
1023
		if(champ.equals(espece)) {
1024
			numeroNom="";
1024
			numeroNom="";
1025
	    	obtenirListeReferentielNom();
1025
	    	obtenirListeReferentielNom();
1026
	    	especeModifiee = true;
1026
	    	especeModifiee = true;
1027
		}
1027
		}
1028
		
1028
 
1029
		if(champ.equals(selecteurReferentielTaxo)) {
1029
		if(champ.equals(selecteurReferentielTaxo)) {
1030
			referentielTaxoModifie = true;
1030
			referentielTaxoModifie = true;
1031
		}
1031
		}
1032
		
1032
 
1033
		if(champ.equals(date)) {
1033
		if(champ.equals(date)) {
1034
			dateModifiee = true;
1034
			dateModifiee = true;
1035
		}
1035
		}
1036
		
1036
 
1037
		if(champ.equals(commune)) {
1037
		if(champ.equals(commune)) {
1038
			departement="";
1038
			departement="";
1039
	    	commune.collapse();	
1039
	    	commune.collapse();
1040
	    	obtenirListeReferentielCommune();
1040
	    	obtenirListeReferentielCommune();
1041
	    	communeModifiee= true;	
1041
	    	communeModifiee= true;
1042
		}
1042
		}
1043
	}
1043
	}
Line 1044... Line 1044...
1044
 
1044
 
1045
	/**
1045
	/**
1046
	 * Validation de la saisie 
1046
	 * Validation de la saisie
1047
	 */
1047
	 */
1048
	
1048
 
1049
	private void validerSaisie(Champs champs) {
1049
	private void validerSaisie(Champs champs) {
1050
		if(!selectionMultiple) {
1050
		if(!selectionMultiple) {
1051
			ajouterObservation();
1051
			ajouterObservation();
1052
			raz(champs);
1052
			raz(champs);
1053
		} else {
1053
		} else {
1054
			modifierObservationEnMasse(champs);
1054
			modifierObservationEnMasse(champs);
1055
		}
1055
		}
1056
	}
1056
	}
1057
	
1057
 
1058
	/**
1058
	/**
1059
	 * Desactive visuellement ce panneau
1059
	 * Desactive visuellement ce panneau
1060
	 */
1060
	 */
1061
	public void desactiverPanneau()
1061
	public void desactiverPanneau()
1062
	{
1062
	{
1063
		this.setDisabled(true) ;
1063
		this.setDisabled(true) ;
1064
	}
1064
	}
1065
	
1065
 
1066
	/**
1066
	/**
1067
	 * Active visuellement ce panneau
1067
	 * Active visuellement ce panneau
1068
	 */
1068
	 */
1069
	public void activerPanneau()
1069
	public void activerPanneau()
1070
	{
1070
	{
1071
		this.setDisabled(false) ;
1071
		this.setDisabled(false) ;
Line 1072... Line 1072...
1072
	}
1072
	}
1073
 
1073
 
1074
	@Override
1074
	@Override
1075
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
1075
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
1076
		
1076
 
1077
		// si l'on a reçu une liste du referentiel commune (completion referentiel commune)
1077
		// si l'on a reçu une liste du referentiel commune (completion referentiel commune)
1078
		if(nouvelleDonnees instanceof ListeReferentielCommune)
1078
		if(nouvelleDonnees instanceof ListeReferentielCommune)
1079
		{
1079
		{
1080
			ListeReferentielCommune data = (ListeReferentielCommune) nouvelleDonnees ;
1080
			ListeReferentielCommune data = (ListeReferentielCommune) nouvelleDonnees ;
1081
			Object[][] communeData = new Object[data.size()][3];
1081
			Object[][] communeData = new Object[data.size()][3];
1082
			int i = 0 ;
1082
			int i = 0 ;
1083
		
1083
 
1084
			// on la parse et on récupère les informations quiç nous interessent
1084
			// on la parse et on récupère les informations quiç nous interessent
1085
			for (Iterator it = data.keySet().iterator(); it.hasNext();) 
1085
			for (Iterator it = data.keySet().iterator(); it.hasNext();)
1086
			{					
1086
			{
1087
				ReferentielCommune ref=data.get(it.next());
1087
				ReferentielCommune ref=data.get(it.next());
1088
				
1088
 
1089
				communeData[i][0]= ref.getCommune();
1089
				communeData[i][0]= ref.getCommune();
1090
				communeData[i][1]= ref.getDepartement();
1090
				communeData[i][1]= ref.getDepartement();
1091
				communeData[i][2]= ref.getCodeInsee();
1091
				communeData[i][2]= ref.getCodeInsee();
1092
				i++ ;
1092
				i++ ;
1093
			}
1093
			}
1094
			
1094
 
1095
			// creation du store
1095
			// creation du store
1096
			FieldDef defCommune = new StringFieldDef("commune");
1096
			FieldDef defCommune = new StringFieldDef("commune");
1097
			FieldDef defDepartement = new StringFieldDef("departement");
1097
			FieldDef defDepartement = new StringFieldDef("departement");
1098
			FieldDef defCodeInsee = new StringFieldDef("codeInsee");
1098
			FieldDef defCodeInsee = new StringFieldDef("codeInsee");
1099
						
1099
 
1100
			FieldDef[] defTab = { defCommune, defDepartement, defCodeInsee};
1100
			FieldDef[] defTab = { defCommune, defDepartement, defCodeInsee};
1101
			
1101
 
1102
			RecordDef rd = new RecordDef(defTab);
1102
			RecordDef rd = new RecordDef(defTab);
1103
			
1103
 
1104
			final MemoryProxy dataProxy = new MemoryProxy(communeData);
1104
			final MemoryProxy dataProxy = new MemoryProxy(communeData);
1105
			final ArrayReader reader = new ArrayReader(rd);		
1105
			final ArrayReader reader = new ArrayReader(rd);
1106
							
1106
 
1107
			Store store=new Store(dataProxy,reader);	
1107
			Store store=new Store(dataProxy,reader);
1108
			commune.setStore(store);
1108
			commune.setStore(store);
1109
			store.load();
1109
			store.load();
1110
			
1110
 
1111
		}
1111
		}
1112
		
1112
 
1113
		// si l'on a reçu une liste du référentiel nom (complétion referentiel nom)
1113
		// si l'on a reçu une liste du référentiel nom (complétion referentiel nom)
1114
		if(nouvelleDonnees instanceof ListeReferentielNom)
1114
		if(nouvelleDonnees instanceof ListeReferentielNom)
1115
		{
1115
		{
1116
			ListeReferentielNom data = (ListeReferentielNom) nouvelleDonnees ;
1116
			ListeReferentielNom data = (ListeReferentielNom) nouvelleDonnees ;
Line 1117... Line 1117...
1117
			Object[][] nomData = new Object[data.size()][3];
1117
			Object[][] nomData = new Object[data.size()][3];
1118
			int i = 0 ;
1118
			int i = 0 ;
1119
 
1119
 
1120
			// on la parse et on récupère les informations qui nous interessent
1120
			// on la parse et on récupère les informations qui nous interessent
1121
			for (Iterator it = data.keySet().iterator(); it.hasNext();) 
1121
			for (Iterator it = data.keySet().iterator(); it.hasNext();)
1122
			{
1122
			{
1123
				
1123
 
1124
				ReferentielNom ref=data.get(it.next());
1124
				ReferentielNom ref=data.get(it.next());
1125
				
1125
 
1126
				nomData[i][0]= ref.getNom();
1126
				nomData[i][0]= ref.getNom();
1127
				nomData[i][1]= ref.getNumeroNom();
1127
				nomData[i][1]= ref.getNumeroNom();
1128
				if (ref.getStatut().equals("3")) {
1128
				if (ref.getStatut().equals("3")) {
1129
					nomData[i][2]="nom_retenu";
1129
					nomData[i][2]="nom_retenu";
1130
				}
1130
				}
1131
				else {
1131
				else {
1132
					nomData[i][2]="";
1132
					nomData[i][2]="";
Line 1133... Line 1133...
1133
				}														
1133
				}
1134
				i++ ;
1134
				i++ ;
1135
			}
1135
			}
1136
 
1136
 
1137
			FieldDef defNom = new StringFieldDef("nom");
1137
			FieldDef defNom = new StringFieldDef("nom");
1138
			FieldDef defNumeroNom = new StringFieldDef("numeroNom");
1138
			FieldDef defNumeroNom = new StringFieldDef("numeroNom");
1139
			FieldDef indicateurNomRetenu = new StringFieldDef("indicateurNomRetenu");
1139
			FieldDef indicateurNomRetenu = new StringFieldDef("indicateurNomRetenu");
1140
					
1140
 
1141
			FieldDef[] defTab = { defNom, defNumeroNom, indicateurNomRetenu};
1141
			FieldDef[] defTab = { defNom, defNumeroNom, indicateurNomRetenu};
1142
			
1142
 
1143
			RecordDef rd = new RecordDef(defTab);
1143
			RecordDef rd = new RecordDef(defTab);
1144
			
1144
 
1145
			final MemoryProxy dataProxy = new MemoryProxy(nomData);
1145
			final MemoryProxy dataProxy = new MemoryProxy(nomData);
1146
			final ArrayReader reader = new ArrayReader(rd);		
1146
			final ArrayReader reader = new ArrayReader(rd);
1147
			
1147
 
1148
			Store store=new Store(dataProxy,reader);	
1148
			Store store=new Store(dataProxy,reader);
1149
			espece.setStore(store);
1149
			espece.setStore(store);
1150
			store.load() ;
1150
			store.load() ;
1151
		}
1151
		}
1152
		
1152
 
1153
		// On recoit une observation dont on veut afficher le detail 
1153
		// On recoit une observation dont on veut afficher le detail
1154
		
1154
 
1155
		if(nouvelleDonnees instanceof Observation)
1155
		if(nouvelleDonnees instanceof Observation)
1156
		{
1156
		{
1157
			Observation obs = (Observation)nouvelleDonnees ;
1157
			Observation obs = (Observation)nouvelleDonnees ;
1158
			setSelectionMultiple(false);
1158
			setSelectionMultiple(false);
1159
			afficherDetailsObservation(obs) ;
1159
			afficherDetailsObservation(obs) ;
1160
		}
1160
		}
1161
		
1161
 
1162
		if(nouvelleDonnees instanceof ListeObservation) {
1162
		if(nouvelleDonnees instanceof ListeObservation) {
1163
			
1163
 
1164
			ListeObservation listeObs = (ListeObservation)nouvelleDonnees;
1164
			ListeObservation listeObs = (ListeObservation)nouvelleDonnees;
1165
			setSelectionMultiple(true);
1165
			setSelectionMultiple(true);
1166
			calculerAfficherDifferences(listeObs);
1166
			calculerAfficherDifferences(listeObs);
1167
		}
1167
		}
1168
		
1168
 
1169
		if(nouvelleDonnees instanceof String)
1169
		if(nouvelleDonnees instanceof String)
1170
		{
1170
		{
1171
			String str = (String)nouvelleDonnees ;
1171
			String str = (String)nouvelleDonnees ;
1172
			observationMediateur.obtenirNombreObservation() ;
1172
			observationMediateur.obtenirNombreObservation() ;
1173
		}
1173
		}
1174
		
1174
 
1175
		if(nouvelleDonnees instanceof String[]) {
1175
		if(nouvelleDonnees instanceof String[]) {
1176
			String[] anumNom = (String[])nouvelleDonnees ;
1176
			String[] anumNom = (String[])nouvelleDonnees ;
1177
			numeroNom = anumNom[1];
1177
			numeroNom = anumNom[1];
1178
			espece.setValue(anumNom[0]);
1178
			espece.setValue(anumNom[0]);
1179
		}
1179
		}
1180
		
1180
 
1181
		if(nouvelleDonnees instanceof EntiteGeographiqueObservation)
1181
		if(nouvelleDonnees instanceof EntiteGeographiqueObservation)
1182
		{
1182
		{
1183
			EntiteGeographiqueObservation infosComm = (EntiteGeographiqueObservation)nouvelleDonnees ;
1183
			EntiteGeographiqueObservation infosComm = (EntiteGeographiqueObservation)nouvelleDonnees ;
1184
			if(rechercheCommuneEnCours) {
1184
			if(rechercheCommuneEnCours) {
1185
				afficherIndicationCommune(infosComm);
1185
				afficherIndicationCommune(infosComm);
1186
			} else {
1186
			} else {
1187
				rafraichirCommuneEtCoord(infosComm);
1187
				rafraichirCommuneEtCoord(infosComm);
1188
			}
1188
			}
1189
		}
1189
		}
1190
	}
1190
	}
1191
	
1191
 
1192
	private void afficherIndicationCommune(
1192
	private void afficherIndicationCommune(
1193
			final EntiteGeographiqueObservation infosCom) {
1193
			final EntiteGeographiqueObservation infosCom) {
1194
		
1194
 
1195
		String nCommune = "";
1195
		String nCommune = "";
1196
		if(infosCom != null && !infosCom.getZoneGeo().trim().equals("")){
1196
		if(infosCom != null && !infosCom.getZoneGeo().trim().equals("")){
1197
			nCommune += infosCom.getZoneGeo();
1197
			nCommune += infosCom.getZoneGeo();
1198
			if(!infosCom.getIdZoneGeo().trim().equals(""))
1198
			if(!infosCom.getIdZoneGeo().trim().equals(""))
1199
			nCommune += " ("+Util.convertirChaineZoneGeoVersDepartement(infosCom.getIdZoneGeo())+")";
1199
			nCommune += " ("+Util.convertirChaineZoneGeoVersDepartement(infosCom.getIdZoneGeo())+")";
1200
			
1200
 
1201
			lienSelectionCommune.setHtml("<a id=\"lien_selection_commune\" tabindex=\"9\">"+nCommune+"</a>");
1201
			lienSelectionCommune.setHtml("<a id=\"lien_selection_commune\" tabindex=\"9\">"+nCommune+"</a>");
1202
			lienSelectionCommune.setStyleName("img-curseur-depl");
1202
			lienSelectionCommune.setStyleName("img-curseur-depl");
1203
			
1203
 
1204
			Ext.get("lien_selection_commune").addListener("click",new EventCallback() {
1204
			Ext.get("lien_selection_commune").addListener("click",new EventCallback() {
1205
				@Override
1205
				@Override
1206
				public void execute(EventObject e) {
1206
				public void execute(EventObject e) {
1207
					rafraichirCommune(infosCom);
1207
					rafraichirCommune(infosCom);
1208
				}			
1208
				}
1209
			});
1209
			});
1210
			
1210
 
1211
			Ext.get("lien_selection_commune").addListener("keypress",new EventCallback() {
1211
			Ext.get("lien_selection_commune").addListener("keypress",new EventCallback() {
1212
				@Override
1212
				@Override
1213
				public void execute(EventObject e) {
1213
				public void execute(EventObject e) {
1214
					if(e.getCharCode() == KEY_ENTER) {
1214
					if(e.getCharCode() == KEY_ENTER) {
1215
						rafraichirCommune(infosCom);
1215
						rafraichirCommune(infosCom);
1216
					}
1216
					}
1217
				}			
1217
				}
1218
			});
1218
			});
1219
			
1219
 
1220
			Ext.get("lien_selection_commune").addListener("focus",new EventCallback() {
1220
			Ext.get("lien_selection_commune").addListener("focus",new EventCallback() {
1221
				@Override
1221
				@Override
1222
				public void execute(EventObject e) {
1222
				public void execute(EventObject e) {
1223
					Ext.get("lien_selection_commune").toggleClass("lien_sel");
1223
					Ext.get("lien_selection_commune").toggleClass("lien_sel");
1224
				}			
1224
				}
1225
			});
1225
			});
1226
			
1226
 
1227
			Ext.get("lien_selection_commune").addListener("blur",new EventCallback() {
1227
			Ext.get("lien_selection_commune").addListener("blur",new EventCallback() {
1228
				@Override
1228
				@Override
1229
				public void execute(EventObject e) {
1229
				public void execute(EventObject e) {
1230
					Ext.get("lien_selection_commune").toggleClass("lien_sel");
1230
					Ext.get("lien_selection_commune").toggleClass("lien_sel");
1231
				}			
1231
				}
1232
			});
1232
			});
1233
			
1233
 
1234
		} else {
1234
		} else {
Line 1240... Line 1240...
1240
		}
1240
		}
Line 1241... Line 1241...
1241
 
1241
 
1242
		Ext.get(lienSelectionCommune.getElement()).unmask();
1242
		Ext.get(lienSelectionCommune.getElement()).unmask();
1243
		rechercheCommuneEnCours = false;
1243
		rechercheCommuneEnCours = false;
1244
	}
1244
	}
1245
	
1245
 
1246
	private void rafraichirCommune(EntiteGeographiqueObservation infosCom) {
1246
	private void rafraichirCommune(EntiteGeographiqueObservation infosCom) {
1247
		String nCommune = "";
1247
		String nCommune = "";
1248
	
1248
 
1249
		if(infosCom.getZoneGeo() != null && !infosCom.getZoneGeo().equals("")) {
1249
		if(infosCom.getZoneGeo() != null && !infosCom.getZoneGeo().equals("")) {
1250
			nCommune += infosCom.getZoneGeo();
1250
			nCommune += infosCom.getZoneGeo();
1251
		}
1251
		}
1252
		
1252
 
1253
		if(infosCom.getIdZoneGeo() != null && !infosCom.getIdZoneGeo().equals("")) {
1253
		if(infosCom.getIdZoneGeo() != null && !infosCom.getIdZoneGeo().equals("")) {
1254
			String codeGeoFormate = Util.convertirChaineZoneGeoVersDepartement(infosCom.getIdZoneGeo());
1254
			String codeGeoFormate = Util.convertirChaineZoneGeoVersDepartement(infosCom.getIdZoneGeo());
1255
			nCommune += " ("+codeGeoFormate+")";
1255
			nCommune += " ("+codeGeoFormate+")";
1256
			departement = Util.convertirChaineZoneGeoVersDepartement(infosCom.getIdZoneGeo());
1256
			departement = Util.convertirChaineZoneGeoVersDepartement(infosCom.getIdZoneGeo());
Line 1261... Line 1261...
1261
 
1261
 
1262
	private void rafraichirCommuneEtCoord(EntiteGeographiqueObservation infosCom) {
1262
	private void rafraichirCommuneEtCoord(EntiteGeographiqueObservation infosCom) {
1263
		// on ne remplace la commune que si le champ était vide
1263
		// on ne remplace la commune que si le champ était vide
1264
		if(commune.getRawValue() == null || commune.getRawValue().equals("")) {
1264
		if(commune.getRawValue() == null || commune.getRawValue().equals("")) {
1265
			rafraichirCommune(infosCom);
1265
			rafraichirCommune(infosCom);
Line 1266... Line 1266...
1266
		} 
1266
		}
1267
 
1267
 
1268
		if(infosCom.getLat() != null && !infosCom.getLat().equals("")) {
1268
		if(infosCom.getLat() != null && !infosCom.getLat().equals("")) {
Line 1269... Line 1269...
1269
			latitude.setValue(infosCom.getLat());
1269
			latitude.setValue(infosCom.getLat());
1270
		}
1270
		}
1271
 
1271
 
1272
		if(infosCom.getLon() != null && !infosCom.getLon().equals("")) {
1272
		if(infosCom.getLon() != null && !infosCom.getLon().equals("")) {
1273
			longitude.setValue(infosCom.getLon());
1273
			longitude.setValue(infosCom.getLon());
1274
		}
1274
		}
1275
		
1275
 
1276
		latModifiee = true;
1276
		latModifiee = true;
1277
		longModifiee = true;
1277
		longModifiee = true;
Line 1278... Line 1278...
1278
		
1278
 
1279
		coordPanel.setVisible(true);
1279
		coordPanel.setVisible(true);
1280
	}
1280
	}
1281
 
1281
 
1282
	public void obtenirListeReferentielCommune() {
1282
	public void obtenirListeReferentielCommune() {
1283
		
1283
 
1284
	 String com=commune.getText();
1284
	 String com=commune.getText();
1285
	 com=com.replaceAll("%","");
1285
	 com=com.replaceAll("%","");
1286
		  
1286
 
1287
	 observationMediateur.obtenirListeReferentielCommune(this,com);
1287
	 observationMediateur.obtenirListeReferentielCommune(this,com);
1288
	 
1288
 
1289
	}
1289
	}
1290
	
1290
 
1291
	public void obtenirListeReferentielNom() {	 
1291
	public void obtenirListeReferentielNom() {
1292
	  String esp=espece.getText().replaceAll(" ","/*");
1292
	  String esp=espece.getText().replaceAll(" ","/*");
1293
	  esp=esp.replaceAll("%","");
1293
	  esp=esp.replaceAll("%","");
1294
	  String referentiel = this.referentielTaxo;
1294
	  String referentiel = this.referentielTaxo;
1295
		
1295
 
1296
	  observationMediateur.obtenirListeReferentielNom(this,referentiel ,esp);	 
1296
	  observationMediateur.obtenirListeReferentielNom(this,referentiel ,esp);
1297
	}
1297
	}
1298
		
1298
 
1299
	protected void obtenirReferentielStation() {		
1299
	protected void obtenirReferentielStation() {
1300
		observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_STATION,station.getText());
1300
		observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_STATION,station.getText());
1301
	}
1301
	}
Line 1302... Line 1302...
1302
	
1302
 
1303
	protected void obtenirListeReferentielMilieu() {
1303
	protected void obtenirListeReferentielMilieu() {
1304
		observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_MILIEU,milieu.getText());
1304
		observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_MILIEU,milieu.getText());
1305
	}
1305
	}
1306
 
1306
 
1307
	protected void obtenirReferentielLieuDit() {
1307
	protected void obtenirReferentielLieuDit() {
1308
		observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_LIEU_DIT,lieudit.getText());
1308
		observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_LIEU_DIT,lieudit.getText());
1309
	}
1309
	}
1310
   
1310
 
1311
	public void ajouterObservation() {
1311
	public void ajouterObservation() {
1312
		
1312
 
1313
		if(date.getRawValue() != null && !date.getRawValue().equals("") && !Util.verifierDateFormatCel(date.getRawValue())) {
1313
		if(date.getRawValue() != null && !date.getRawValue().equals("") && !Util.verifierDateFormatCel(date.getRawValue())) {
1314
			Window.alert("Attention la date saisie est invalide, la date doit être au format jj/mm/aaaa");
1314
			Window.alert("Attention la date saisie est invalide, la date doit être au format jj/mm/aaaa");
1315
			date.setInvalidText("Date invalide");
1315
			date.setInvalidText("Date invalide");
1316
			return;
1316
			return;
1317
		}
1317
		}
1318
		
1318
 
1319
		if(departement != null) {
1319
		if(departement != null) {
1320
			if(departement.equals("000null") || departement.equals("")) {
1320
			if(departement.equals("000null") || departement.equals("")) {
1321
				String[] depCom = commune.getText().split(" ");
1321
				String[] depCom = commune.getText().split(" ");
1322
				if(depCom.length > 1) {
1322
				if(depCom.length > 1) {
1323
					String dep = depCom[1].replace('(', ' ');
1323
					String dep = depCom[1].replace('(', ' ');
1324
					dep =dep.replace(')', ' ');
1324
					dep =dep.replace(')', ' ');
1325
					dep = dep.trim();
1325
					dep = dep.trim();
1326
					dep = dep.replace('\\',' ');
1326
					dep = dep.replace('\\',' ');
1327
					dep = dep.trim();
1327
					dep = dep.trim();
1328
					
1328
 
Line 1341... Line 1341...
1341
			}
1341
			}
1342
		}
1342
		}
Line 1343... Line 1343...
1343
 
1343
 
Line 1344... Line 1344...
1344
		String dateObs = Util.remplacerSeparateursDateFormatCel(date.getRawValue());
1344
		String dateObs = Util.remplacerSeparateursDateFormatCel(date.getRawValue());
1345
 
1345
 
1346
		Observation obs=new Observation(espece.getText(),numeroNom,commune.getText(),departement,lieudit.getText(),station.getText(),milieu.getText(), comment.getText(),dateObs);	
1346
		Observation obs=new Observation(espece.getText(),numeroNom,commune.getText(),departement,lieudit.getText(),station.getText(),milieu.getText(), comment.getText(),dateObs);
1347
		
1347
 
1348
		String[] coords = getValeurCoordonnees();
1348
		String[] coords = getValeurCoordonnees();
1349
		obs.setLatitude(coords[0]);
1349
		obs.setLatitude(coords[0]);
Line 1350... Line 1350...
1350
		obs.setLongitude(coords[1]);
1350
		obs.setLongitude(coords[1]);
1351
		obs.setAltitude(altitude.getText());
1351
		obs.setAltitude(altitude.getText());
1352
 
1352
 
1353
		obs.setAbondance(getAbondance());
1353
		obs.setAbondance(getAbondance());
1354
		obs.setCertitude(getCertitude());
1354
		obs.setCertitude(getCertitude());
1355
		obs.setPhenologie(getPhenologie());
1355
		obs.setPhenologie(getPhenologie());
1356
		
1356
 
1357
		obs.setReferentielTaxo(Ontologies.getInfosReferentielNomParCode(referentielTaxo).getCodeVersionComplet());
1357
		obs.setReferentielTaxo(Ontologies.getInfosReferentielNomParCode(referentielTaxo).getCodeVersionComplet());
1358
		obs.setChampsEtendus(getValeursChampsEtendus());
1358
		obs.setChampsEtendus(getValeursChampsEtendus());
Line 1359... Line 1359...
1359
		
1359
 
1360
		observationMediateur.ajouterObservation(obs);
1360
		observationMediateur.ajouterObservation(obs);
1361
	}
1361
	}
1362
 
1362
 
1363
	private void modifierObservation() {
1363
	private void modifierObservation() {
1364
		
1364
 
1365
		if(!Window.confirm("Êtes-vous sur de vouloir modifier l'observation sélectionnée ?")) {
1365
		if(!Window.confirm("Êtes-vous sur de vouloir modifier l'observation sélectionnée ?")) {
1366
			return;
1366
			return;
1367
		}
1367
		}
1368
		 
1368
 
1369
		if(date.getRawValue() != null && !date.getRawValue().equals("") && !Util.verifierDateFormatCel(date.getRawValue())) {
1369
		if(date.getRawValue() != null && !date.getRawValue().equals("") && !Util.verifierDateFormatCel(date.getRawValue())) {
1370
			Window.alert("Attention la date saisie est invalide, la date doit être au format jj/mm/aaaa");
1370
			Window.alert("Attention la date saisie est invalide, la date doit être au format jj/mm/aaaa");
1371
			date.setInvalidText("Date invalide");
1371
			date.setInvalidText("Date invalide");
1372
			return;
1372
			return;
1373
		}
1373
		}
1374
		
1374
 
1375
		if(departement.equals("000null") || departement.equals("")) {
1375
		if(departement.equals("000null") || departement.equals("")) {
1376
			String[] depCom = commune.getText().split(" ");
1376
			String[] depCom = commune.getText().split(" ");
1377
			if(depCom.length > 1) {
1377
			if(depCom.length > 1) {
1378
				String dep = depCom[1].replace('(', ' ');
1378
				String dep = depCom[1].replace('(', ' ');
1379
				dep =dep.replace(')', ' ');
1379
				dep =dep.replace(')', ' ');
1380
				dep = dep.trim();
1380
				dep = dep.trim();
1381
				dep = dep.replace('\\',' ');
1381
				dep = dep.replace('\\',' ');
1382
				dep = dep.trim();
1382
				dep = dep.trim();
1383
				
1383
 
1384
				try
1384
				try
Line 1392... Line 1392...
1392
				{
1392
				{
1393
					departement = "" ;
1393
					departement = "" ;
1394
				}
1394
				}
1395
			}
1395
			}
1396
		}
1396
		}
1397
		
1397
 
1398
		String dateObs = Util.remplacerSeparateursDateFormatCel(date.getRawValue());
1398
		String dateObs = Util.remplacerSeparateursDateFormatCel(date.getRawValue());
1399
		
1399
 
1400
		Observation obs=new Observation(espece.getText(),numeroNom,commune.getText(),departement,lieudit.getText(),station.getText(),milieu.getText(), comment.getText(),dateObs);
1400
		Observation obs=new Observation(espece.getText(),numeroNom,commune.getText(),departement,lieudit.getText(),station.getText(),milieu.getText(), comment.getText(),dateObs);
1401
		obs.setNumeroOrdre(numeroOrdre);
1401
		obs.setNumeroOrdre(numeroOrdre);
1402
				
1402
 
1403
		String[] coords = getValeurCoordonnees();
1403
		String[] coords = getValeurCoordonnees();
1404
		
1404
 
1405
		obs.setLatitude(coords[0]);
1405
		obs.setLatitude(coords[0]);
1406
		obs.setLongitude(coords[1]);
1406
		obs.setLongitude(coords[1]);
1407
		obs.setAltitude(altitude.getText());
1407
		obs.setAltitude(altitude.getText());
1408
		
1408
 
1409
		obs.setAbondance(getAbondance());
1409
		obs.setAbondance(getAbondance());
1410
		obs.setCertitude(getCertitude());
1410
		obs.setCertitude(getCertitude());
1411
		obs.setPhenologie(getPhenologie());
1411
		obs.setPhenologie(getPhenologie());
1412
		obs.setReferentielTaxo(getReferentielTaxo());
1412
		obs.setReferentielTaxo(getReferentielTaxo());
1413
		obs.setChampsEtendus(getValeursChampsEtendus());
1413
		obs.setChampsEtendus(getValeursChampsEtendus());
1414
		
1414
 
1415
		observationMediateur.modifierObservation(obs);
1415
		observationMediateur.modifierObservation(obs);
1416
	}
1416
	}
1417
	
1417
 
1418
	private void modifierObservationEnMasse(Champs champModifie) {
1418
	private void modifierObservationEnMasse(Champs champModifie) {
1419
		
1419
 
1420
		//TODO: factoriser
1420
		//TODO: factoriser
1421
		String communeM = null;
1421
		String communeM = null;
1422
		String departementM = null;
1422
		String departementM = null;
1423
		String numNomSelM = null;
1423
		String numNomSelM = null;
1424
		String lieuDitM = null;
1424
		String lieuDitM = null;
1425
		String stationM = null;
1425
		String stationM = null;
1426
		String milieuM = null;
1426
		String milieuM = null;
1427
		String dateM = null;
1427
		String dateM = null;
1428
		String especeM = null;
1428
		String especeM = null;
1429
		String commM = null; 
1429
		String commM = null;
1430
		String latM = null;
1430
		String latM = null;
1431
		String longM = null;
1431
		String longM = null;
1432
		String altM = null;
1432
		String altM = null;
1433
		String abondanceM = null;
1433
		String abondanceM = null;
1434
		String certitudeM = null;
1434
		String certitudeM = null;
1435
		String referentielTaxoM = null;
1435
		String referentielTaxoM = null;
1436
		String phenologieM = null;
1436
		String phenologieM = null;
1437
		
1437
 
1438
		String champs = modeleMessageModif;
1438
		String champs = modeleMessageModif;
1439
			
1439
 
1440
		if(communeModifiee) {
1440
		if(communeModifiee && ! commune.getRawValue().equals(VALEURS_MULTIPLES)) {
1441
			communeM = commune.getText();
1441
			communeM = commune.getText();
1442
			
1442
 
1443
			if(departement.equals("000null") || departement.equals("")) {
1443
			if(departement.equals("000null") || departement.equals("")) {
1444
				String[] depCom = commune.getText().split(" ");
1444
				String[] depCom = commune.getText().split(" ");
1445
				if(depCom.length > 1) {
1445
				if(depCom.length > 1) {
1446
					String dep = depCom[1].replace('(', ' ');
1446
					String dep = depCom[1].replace('(', ' ');
1447
					dep =dep.replace(')', ' ');
1447
					dep =dep.replace(')', ' ');
1448
					dep = dep.trim();
1448
					dep = dep.trim();
1449
					dep = dep.replace('\\',' ');
1449
					dep = dep.replace('\\',' ');
1450
					dep = dep.trim();
1450
					dep = dep.trim();
1451
					
1451
 
1452
					try
1452
					try {
1453
					{
-
 
1454
						int nDep = Integer.parseInt(dep);
1453
						int nDep = Integer.parseInt(dep);
1455
						if(nDep > 0 && nDep < 110) {
1454
						if(nDep > 0 && nDep < 110) {
1456
							departement = dep ;
1455
							departement = dep ;
1457
						}
1456
						}
1458
					}
1457
					}
1459
					catch(NumberFormatException e)
1458
					catch(NumberFormatException e) {
1460
					{
-
 
1461
						departement = "" ;
1459
						departement = "" ;
1462
					}
1460
					}
1463
				}
1461
				}
1464
			}
1462
			}
1465
			
-
 
1466
			departementM = departement;
1463
			departementM = departement;
-
 
1464
		}
1467
		} else {
1465
		else {
1468
			champs = champs.replaceAll("commune", "");
1466
			champs = champs.replaceAll("commune", "");
1469
		}
1467
		}
1470
		
1468
 
1471
		if(lieuDitModifie) {
1469
		if(lieuDitModifie && ! lieudit.getRawValue().equals(VALEURS_MULTIPLES)) {
1472
			lieuDitM = lieudit.getText();
1470
			lieuDitM = lieudit.getText();
1473
		}else {
1471
		} else {
1474
			champs = champs.replaceAll(":lieu-dit", "");
1472
			champs = champs.replaceAll(":lieu-dit", "");
1475
		}
1473
		}
1476
		
1474
 
1477
		if(stationModifiee) {
1475
		if(stationModifiee && ! station.getRawValue().equals(VALEURS_MULTIPLES)) {
1478
			stationM = station.getText();
1476
			stationM = station.getText();
1479
		}else {
1477
		} else {
1480
			champs = champs.replaceAll(":station", "");
1478
			champs = champs.replaceAll(":station", "");
1481
		}
1479
		}
Line 1482... Line 1480...
1482
 
1480
 
1483
		if(milieuModifie) {
1481
		if(milieuModifie && ! milieu.getRawValue().equals(VALEURS_MULTIPLES)) {
1484
			milieuM = milieu.getText();
1482
			milieuM = milieu.getText();
1485
		}else {
1483
		} else {
1486
			champs = champs.replaceAll(":milieu", "");
1484
			champs = champs.replaceAll(":milieu", "");
Line 1487... Line 1485...
1487
		}
1485
		}
1488
 
1486
 
1489
		if(dateModifiee && !date.getRawValue().equals(VALEURS_MULTIPLES)) {
1487
		if(dateModifiee && ! date.getRawValue().equals(VALEURS_MULTIPLES)) {
1490
			dateM = date.getRawValue();
1488
			dateM = date.getRawValue();
1491
			dateM = Util.remplacerSeparateursDateFormatCel(dateM);
1489
			dateM = Util.remplacerSeparateursDateFormatCel(dateM);
1492
		}else {
1490
		} else {
Line 1493... Line 1491...
1493
			champs = champs.replaceAll(":date", "");
1491
			champs = champs.replaceAll(":date", "");
1494
		}
1492
		}
1495
 
1493
 
1496
		if(especeModifiee) {
1494
		if(especeModifiee && ! espece.getRawValue().equals(VALEURS_MULTIPLES)) {
1497
			especeM = espece.getText();
1495
			especeM = espece.getText();
1498
			numNomSelM = numeroNom;
1496
			numNomSelM = numeroNom;
Line 1499... Line 1497...
1499
		}else {
1497
		} else {
1500
			champs = champs.replaceAll(":espece", "");
1498
			champs = champs.replaceAll(":espece", "");
1501
		}
1499
		}
1502
 
1500
 
1503
		if(commModifie) {
1501
		if(commModifie && ! comment.getRawValue().equals(VALEURS_MULTIPLES)) {
1504
			commM = comment.getText();
1502
			commM = comment.getText();
1505
		}else {
1503
		} else {
1506
			champs = champs.replaceAll(":commentaire", "");
1504
			champs = champs.replaceAll(":commentaire", "");
1507
		}
1505
		}
1508
		
1506
 
1509
		if(latModifiee) {
1507
		if(latModifiee && ! latitude.getRawValue().equals(VALEURS_MULTIPLES)) {
1510
			latM = latitude.getText();
1508
			latM = latitude.getText();
1511
		}else {
1509
		} else {
1512
			champs = champs.replaceAll(":latitude", "");
1510
			champs = champs.replaceAll(":latitude", "");
1513
		}
1511
		}
1514
		
1512
 
1515
		if(altModifiee) {
1513
		if(altModifiee && ! altitude.getRawValue().equals(VALEURS_MULTIPLES)) {
1516
			altM = altitude.getText();
1514
			altM = altitude.getText();
1517
		}else {
1515
		} else {
1518
			champs = champs.replaceAll(":altitude", "");
1516
			champs = champs.replaceAll(":altitude", "");
1519
		}
1517
		}
1520
		
1518
 
1521
		if(longModifiee) {
1519
		if(longModifiee && ! longitude.getRawValue().equals(VALEURS_MULTIPLES)) {
1522
			longM = longitude.getText();
1520
			longM = longitude.getText();
1523
		}else {
1521
		} else {
1524
			champs = champs.replaceAll(":longitude", "");
1522
			champs = champs.replaceAll(":longitude", "");
1525
		}
1523
		}
1526
		
1524
 
1527
		if(abondanceModifiee && !selecteurAbondance.getRawValue().equals(VALEURS_MULTIPLES)) {
1525
		if(abondanceModifiee && !selecteurAbondance.getRawValue().equals(VALEURS_MULTIPLES)) {
1528
			abondanceM = getAbondance();
1526
			abondanceM = getAbondance();
1529
		} else {
1527
		} else {
1530
			champs = champs.replaceAll(":abondance", "");
1528
			champs = champs.replaceAll(":abondance", "");
1531
		}
1529
		}
1532
		
1530
 
1533
		if(certitudeModifiee && !selecteurCertitude.getRawValue().equals(VALEURS_MULTIPLES)) {
1531
		if(certitudeModifiee && !selecteurCertitude.getRawValue().equals(VALEURS_MULTIPLES)) {
1534
			certitudeM = getCertitude();
1532
			certitudeM = getCertitude();
1535
		} else {
1533
		} else {
1536
			champs = champs.replaceAll(":identification", "");
1534
			champs = champs.replaceAll(":identification", "");
1537
		}
1535
		}
1538
		
1536
 
1539
		if(referentielTaxoModifie && !selecteurReferentielTaxo.getRawValue().equals(VALEURS_MULTIPLES)) {
1537
		if(referentielTaxoModifie && !selecteurReferentielTaxo.getRawValue().equals(VALEURS_MULTIPLES)) {
1540
			referentielTaxoM = getReferentielTaxo();
1538
			referentielTaxoM = getReferentielTaxo();
1541
		} else {
1539
		} else {
1542
			champs = champs.replaceAll(":referentiel", "");
1540
			champs = champs.replaceAll(":referentiel", "");
1543
		}
1541
		}
1544
		
1542
 
1545
		if(phenologieModifiee && !selecteurStadePheno.getRawValue().equals(VALEURS_MULTIPLES)) {
1543
		if(phenologieModifiee && !selecteurStadePheno.getRawValue().equals(VALEURS_MULTIPLES)) {
1546
			phenologieM = getPhenologie();
1544
			phenologieM = getPhenologie();
1547
		} else {
1545
		} else {
1548
			champs = champs.replaceAll(":phenologie", "");
1546
			champs = champs.replaceAll(":phenologie", "");
1549
		}
1547
		}
1550
		
1548
 
1551
		champs = champs.replaceAll(":",", ");
1549
		champs = champs.replaceAll(":",", ");
1552
		if(champs.startsWith(",")) {
1550
		if(champs.startsWith(",")) {
1553
			champs = champs.replaceFirst(",", "");
1551
			champs = champs.replaceFirst(",", "");
1554
		}
1552
		}
1555
		
1553
 
1556
		String message = "Voulez vous modifier le(s) champ(s) suivant(s) : "+champs+"   pour les observations selectionnées ?" ;
1554
		String message = "Voulez vous modifier le(s) champ(s) suivant(s) : "+champs+"   pour les observations selectionnées ?" ;
1557
		
1555
 
1558
		if(champs.trim().equals("")) {
1556
		if(champs.trim().equals("")) {
Line 1571... Line 1569...
1571
				observationMediateur.modifierObservationEnMasse(obs);
1569
				observationMediateur.modifierObservationEnMasse(obs);
1572
				reinitialiserValeurModifiees();
1570
				reinitialiserValeurModifiees();
1573
			}
1571
			}
1574
		}
1572
		}
1575
	}
1573
	}
1576
	
1574
 
1577
	private void supprimerObservation() {		
1575
	private void supprimerObservation() {
1578
		observationMediateur.supprimerObservation(this, numeroOrdre);
1576
		observationMediateur.supprimerObservation(this, numeroOrdre);
1579
	}
1577
	}
1580
	
1578
 
1581
	public void afficherDetailsObservation(Observation obs)
1579
	public void afficherDetailsObservation(Observation obs)
1582
	{
1580
	{
1583
		raz() ;
1581
		raz() ;
1584
		String idLoc ;
1582
		String idLoc ;
1585
		if(obs.getIdentifiantLocalite() != VALEURS_MULTIPLES) {
1583
		if(obs.getIdentifiantLocalite() != VALEURS_MULTIPLES) {
Line 1595... Line 1593...
1595
			idLoc = obs.getIdentifiantLocalite();
1593
			idLoc = obs.getIdentifiantLocalite();
1596
			if(idLoc.length() == 5) {
1594
			if(idLoc.length() == 5) {
1597
				idLoc = idLoc.substring(0,2);
1595
				idLoc = idLoc.substring(0,2);
1598
			}
1596
			}
1599
		}
1597
		}
1600
		
1598
 
1601
		if(!obs.getDate().equals("null") && !obs.getDate().equals("000null") && !obs.getDate().equals(VALEURS_MULTIPLES)) {
1599
		if(!obs.getDate().equals("null") && !obs.getDate().equals("000null") && !obs.getDate().equals(VALEURS_MULTIPLES)) {
1602
			String[] dateEtHeure = obs.getDate().split(" ", 2);
1600
			String[] dateEtHeure = obs.getDate().split(" ", 2);
1603
			if(verifierFormatDate(dateEtHeure[0])) {
1601
			if(verifierFormatDate(dateEtHeure[0])) {
1604
				date.setValue(dateEtHeure[0]) ;
1602
				date.setValue(dateEtHeure[0]) ;
1605
			}
1603
			}
1606
			else
1604
			else
1607
			{
1605
			{
1608
				date.setRawValue(""); 
1606
				date.setRawValue("");
1609
			}
1607
			}
1610
		} else {
1608
		} else {
1611
			date.setRawValue(VALEURS_MULTIPLES);
1609
			date.setRawValue(VALEURS_MULTIPLES);
1612
			date.clearInvalid();
1610
			date.clearInvalid();
1613
		}
1611
		}
Line 1621... Line 1619...
1621
			milieu.setValue(obs.getMilieu()) ;
1619
			milieu.setValue(obs.getMilieu()) ;
1622
		}
1620
		}
1623
		if(!obs.getCommentaire().equals("null") && !obs.getCommentaire().equals("000null")) {
1621
		if(!obs.getCommentaire().equals("null") && !obs.getCommentaire().equals("000null")) {
Line 1624... Line 1622...
1624
 
1622
 
1625
			comment.setRawValue(Util.remplacerSautsDeligneMalEncodes(obs.getCommentaire()));
1623
			comment.setRawValue(Util.remplacerSautsDeligneMalEncodes(obs.getCommentaire()));
1626
			
1624
 
1627
		}
1625
		}
1628
		if(!obs.getLocalite().equals("null") && !obs.getLocalite().equals("000null")) {
1626
		if(!obs.getLocalite().equals("null") && !obs.getLocalite().equals("000null")) {
1629
			if(!idLoc.equals("000null") && !idLoc.equals("")) {
1627
			if(!idLoc.equals("000null") && !idLoc.equals("")) {
1630
				if(!idLoc.equals(VALEURS_MULTIPLES)) {
1628
				if(!idLoc.equals(VALEURS_MULTIPLES)) {
Line 1648... Line 1646...
1648
			numeroNom = obs.getNumeroNomenclaturalSaisi() ;
1646
			numeroNom = obs.getNumeroNomenclaturalSaisi() ;
1649
		}
1647
		}
1650
		if(!obs.getNumeroOrdre().equals("null") && !obs.getNumeroOrdre().equals("000null")) {
1648
		if(!obs.getNumeroOrdre().equals("null") && !obs.getNumeroOrdre().equals("000null")) {
1651
			numeroOrdre = obs.getNumeroOrdre() ;
1649
			numeroOrdre = obs.getNumeroOrdre() ;
1652
		}
1650
		}
1653
		
1651
 
1654
		if(doitAfficherLatLon(obs)) {
1652
		if(doitAfficherLatLon(obs)) {
1655
			latitude.setValue(Util.formaterNombre(obs.getLatitude())) ;
1653
			latitude.setValue(Util.formaterNombre(obs.getLatitude())) ;
1656
			longitude.setValue(Util.formaterNombre(obs.getLongitude())) ;
1654
			longitude.setValue(Util.formaterNombre(obs.getLongitude())) ;
1657
		}
1655
		}
1658
		
1656
 
1659
		if(!obs.getAltitude().isEmpty() && !obs.getAltitude().equals("null") && !obs.getAltitude().equals("000null")) {
1657
		if(!obs.getAltitude().isEmpty() && !obs.getAltitude().equals("null") && !obs.getAltitude().equals("000null")) {
1660
			altitude.setValue(Util.formaterNombre(obs.getAltitude())) ;
1658
			altitude.setValue(Util.formaterNombre(obs.getAltitude())) ;
1661
		}
1659
		}
1662
		
1660
 
1663
		selecteurAbondance.getStore().load();
1661
		selecteurAbondance.getStore().load();
1664
		selecteurAbondance.setValue(obs.getAbondance());
1662
		selecteurAbondance.setValue(obs.getAbondance());
1665
		
1663
 
1666
		selecteurCertitude.getStore().load();
1664
		selecteurCertitude.getStore().load();
1667
		selecteurCertitude.setValue(obs.getCertitude());
1665
		selecteurCertitude.setValue(obs.getCertitude());
1668
		
1666
 
1669
		selecteurStadePheno.getStore().load();
1667
		selecteurStadePheno.getStore().load();
1670
		selecteurStadePheno.setValue(obs.getPhenologie());
1668
		selecteurStadePheno.setValue(obs.getPhenologie());
1671
		
1669
 
1672
		selecteurReferentielTaxo.getStore().load();
1670
		selecteurReferentielTaxo.getStore().load();
1673
		if(obs.getReferentielTaxo() != VALEURS_MULTIPLES) {
1671
		if(obs.getReferentielTaxo() != VALEURS_MULTIPLES) {
1674
			referentielTaxo = obs.getCodeCourtReferentielTaxo();
1672
			referentielTaxo = obs.getCodeCourtReferentielTaxo();
1675
			if(referentielTaxo == null || referentielTaxo.isEmpty()) {
1673
			if(referentielTaxo == null || referentielTaxo.isEmpty()) {
1676
			    referentielTaxo = Configuration.getReferentielsDispos().get(0).getCode();
1674
			    referentielTaxo = Configuration.getReferentielsDispos().get(0).getCode();
Line 1678... Line 1676...
1678
			selecteurReferentielTaxo.setValue(referentielTaxo);
1676
			selecteurReferentielTaxo.setValue(referentielTaxo);
1679
		} else {
1677
		} else {
1680
			referentielTaxo = "";
1678
			referentielTaxo = "";
1681
			selecteurReferentielTaxo.setRawValue(VALEURS_MULTIPLES);
1679
			selecteurReferentielTaxo.setRawValue(VALEURS_MULTIPLES);
1682
		}
1680
		}
1683
		
1681
 
1684
		afficherChampsEtendus(obs);
1682
		afficherChampsEtendus(obs);
1685
	}
1683
	}
1686
	
1684
 
1687
	private boolean doitAfficherLatLon(Observation obs) {
1685
	private boolean doitAfficherLatLon(Observation obs) {
1688
		return !obs.getLatitude().isEmpty() &&
1686
		return !obs.getLatitude().isEmpty() &&
1689
				!obs.getLatitude().equals("null") && 
1687
				!obs.getLatitude().equals("null") &&
1690
				!obs.getLatitude().equals("000null") &&
1688
				!obs.getLatitude().equals("000null") &&
1691
				!Util.estZero(obs.getLatitude()) && 
1689
				!Util.estZero(obs.getLatitude()) &&
1692
				!obs.getLongitude().isEmpty() && 
1690
				!obs.getLongitude().isEmpty() &&
1693
				!obs.getLongitude().equals("null") && 
1691
				!obs.getLongitude().equals("null") &&
1694
				!obs.getLongitude().equals("000null") &&
1692
				!obs.getLongitude().equals("000null") &&
1695
				!Util.estZero(obs.getLongitude());
1693
				!Util.estZero(obs.getLongitude());
1696
	}
1694
	}
1697
	
1695
 
1698
	private void viderChampsEtendus() {
1696
	private void viderChampsEtendus() {
1699
		if(listeChampsEtendus != null) {
1697
		if(listeChampsEtendus != null) {
1700
			for (Iterator<String> it = listeChampsEtendus.keySet().iterator(); it.hasNext();) {
1698
			for (Iterator<String> it = listeChampsEtendus.keySet().iterator(); it.hasNext();) {
1701
				TextField champEtendu = listeChampsEtendus.get(it.next());
1699
				TextField champEtendu = listeChampsEtendus.get(it.next());
1702
				champEtendu.destroy();
1700
				champEtendu.destroy();
Line 1708... Line 1706...
1708
				panneauSecondeColonne.remove(conteneurChampEtenduDroite);
1706
				panneauSecondeColonne.remove(conteneurChampEtenduDroite);
1709
			}
1707
			}
1710
			listeChampsEtendus = null;
1708
			listeChampsEtendus = null;
1711
		}
1709
		}
1712
	}
1710
	}
1713
	
1711
 
1714
	private void afficherChampsEtendus(Observation obs) {
1712
	private void afficherChampsEtendus(Observation obs) {
1715
		viderChampsEtendus();
1713
		viderChampsEtendus();
1716
		
1714
 
1717
		FormLayout flmd = new FormLayout();
1715
		FormLayout flmd = new FormLayout();
1718
		flmd.setLabelWidth(150);
1716
		flmd.setLabelWidth(150);
1719
		
1717
 
1720
		FormLayout flmg = new FormLayout();
1718
		FormLayout flmg = new FormLayout();
1721
		flmg.setLabelWidth(150);
1719
		flmg.setLabelWidth(150);
1722
		
1720
 
1723
		conteneurChampEtenduGauche = new Panel();
1721
		conteneurChampEtenduGauche = new Panel();
1724
		conteneurChampEtenduGauche.setLayout(flmg);
1722
		conteneurChampEtenduGauche.setLayout(flmg);
1725
		conteneurChampEtenduDroite = new Panel();
1723
		conteneurChampEtenduDroite = new Panel();
1726
		conteneurChampEtenduDroite.setLayout(flmd);
1724
		conteneurChampEtenduDroite.setLayout(flmd);
1727
				
1725
 
1728
		conteneurChampEtenduGauche.setAutoWidth(true);
1726
		conteneurChampEtenduGauche.setAutoWidth(true);
1729
		conteneurChampEtenduGauche.setStyle("conteneurChampsEtendus");
1727
		conteneurChampEtenduGauche.setStyle("conteneurChampsEtendus");
1730
		conteneurChampEtenduGauche.setBodyBorder(false);
1728
		conteneurChampEtenduGauche.setBodyBorder(false);
1731
		conteneurChampEtenduDroite.setAutoWidth(true);
1729
		conteneurChampEtenduDroite.setAutoWidth(true);
1732
		conteneurChampEtenduDroite.setStyle("conteneurChampsEtendus");
1730
		conteneurChampEtenduDroite.setStyle("conteneurChampsEtendus");
1733
		conteneurChampEtenduDroite.setBodyBorder(false);
1731
		conteneurChampEtenduDroite.setBodyBorder(false);
1734
		
1732
 
1735
		// pour corriger le décalage sur le panneau induit par le lien d'affichage
1733
		// pour corriger le décalage sur le panneau induit par le lien d'affichage
1736
		conteneurChampEtenduDroite.setPaddings(25, 0, 0, 0);
1734
		conteneurChampEtenduDroite.setPaddings(25, 0, 0, 0);
1737
		
1735
 
1738
		if(obs.getChampsEtendus() != null && obs.getChampsEtendus().size() > 0) {
1736
		if(obs.getChampsEtendus() != null && obs.getChampsEtendus().size() > 0) {
1739
			lienAfficherChampsEtendus.setVisible(true);
1737
			lienAfficherChampsEtendus.setVisible(true);
1740
			listeChampsEtendus = new HashMap<String, TextField>(obs.getChampsEtendus().size());
1738
			listeChampsEtendus = new HashMap<String, TextField>(obs.getChampsEtendus().size());
1741
			boolean gauche = true;
1739
			boolean gauche = true;
1742
			for (Iterator<String> iterator = obs.getChampsEtendus().keySet().iterator(); iterator.hasNext();) {
1740
			for (Iterator<String> iterator = obs.getChampsEtendus().keySet().iterator(); iterator.hasNext();) {
1743
				String id = iterator.next();
1741
				String id = iterator.next();
1744
				ChampEtendu champ = obs.getChampsEtendus().get(id);
1742
				ChampEtendu champ = obs.getChampsEtendus().get(id);
1745
				String valeur = champ.getValeur();
1743
				String valeur = champ.getValeur();
1746
				String label = champ.getLabel();
1744
				String label = champ.getLabel();
1747
				
1745
 
1748
				TextField champTexteEtendu = new TextField();
1746
				TextField champTexteEtendu = new TextField();
1749
				champTexteEtendu.setWidth("90%");
1747
				champTexteEtendu.setWidth("90%");
1750
				champTexteEtendu.setLabel(label);
1748
				champTexteEtendu.setLabel(label);
1751
				champTexteEtendu.setTitle(label);
1749
				champTexteEtendu.setTitle(label);
1752
				champTexteEtendu.setId(id);
1750
				champTexteEtendu.setId(id);
Line 1757... Line 1755...
1757
					conteneurChampEtenduDroite.add(champTexteEtendu);
1755
					conteneurChampEtenduDroite.add(champTexteEtendu);
1758
				}
1756
				}
1759
				listeChampsEtendus.put(id, champTexteEtendu);
1757
				listeChampsEtendus.put(id, champTexteEtendu);
1760
				gauche = !gauche;
1758
				gauche = !gauche;
1761
			}
1759
			}
1762
			
1760
 
1763
			panneauPremierColonne.add(conteneurChampEtenduGauche);
1761
			panneauPremierColonne.add(conteneurChampEtenduGauche);
1764
			panneauSecondeColonne.add(conteneurChampEtenduDroite);
1762
			panneauSecondeColonne.add(conteneurChampEtenduDroite);
1765
			
1763
 
1766
			if(!afficherChampsEtendus) {
1764
			if(!afficherChampsEtendus) {
1767
				conteneurChampEtenduGauche.setVisible(false);
1765
				conteneurChampEtenduGauche.setVisible(false);
1768
				conteneurChampEtenduDroite.setVisible(false);
1766
				conteneurChampEtenduDroite.setVisible(false);
1769
			}
1767
			}
1770
		} else {
1768
		} else {
1771
			lienAfficherChampsEtendus.setVisible(false);
1769
			lienAfficherChampsEtendus.setVisible(false);
1772
		}
1770
		}
1773
		doLayout();
1771
		doLayout();
1774
	}
1772
	}
1775
	
1773
 
1776
	private Map<String, ChampEtendu> getValeursChampsEtendus() {
1774
	private Map<String, ChampEtendu> getValeursChampsEtendus() {
1777
		Map<String, ChampEtendu> valeursChampsEtendus = new HashMap<String, ChampEtendu>();
1775
		Map<String, ChampEtendu> valeursChampsEtendus = new HashMap<String, ChampEtendu>();
1778
		if(listeChampsEtendus != null) {
1776
		if(listeChampsEtendus != null) {
1779
			for (Iterator<String> it = listeChampsEtendus.keySet().iterator(); it.hasNext();) {
1777
			for (Iterator<String> it = listeChampsEtendus.keySet().iterator(); it.hasNext();) {
1780
				String cle = it.next();
1778
				String cle = it.next();
Line 1785... Line 1783...
1785
				valeursChampsEtendus.put(cle, champEtendu);
1783
				valeursChampsEtendus.put(cle, champEtendu);
1786
			}
1784
			}
1787
		}
1785
		}
1788
		return valeursChampsEtendus;
1786
		return valeursChampsEtendus;
1789
	}
1787
	}
1790
	
1788
 
1791
	public void raz()
1789
	public void raz()
1792
	{
1790
	{
1793
		raz(Champs.TOUT);
1791
		raz(Champs.TOUT);
1794
		
1792
 
1795
	}
1793
	}
1796
	public void raz(Champs champs)
1794
	public void raz(Champs champs)
1797
	{
1795
	{
1798
		switch (champs) {
1796
		switch (champs) {
1799
			case DATE:
1797
			case DATE:
1800
				date.reset() ;
1798
				date.reset() ;
1801
				break;
1799
				break;
1802
		
1800
 
1803
			case LIEUDIT:
1801
			case LIEUDIT:
1804
				lieudit.reset() ;
1802
				lieudit.reset() ;
1805
				break;
1803
				break;
1806
		
1804
 
1807
			case STATION:
1805
			case STATION:
1808
				station.reset() ;
1806
				station.reset() ;
1809
				break;
1807
				break;
1810
		
1808
 
1811
			case MILIEU:
1809
			case MILIEU:
1812
				milieu.reset() ;
1810
				milieu.reset() ;
1813
				break;
1811
				break;
1814
		
1812
 
1815
			case COMMENT:
1813
			case COMMENT:
1816
				comment.reset() ;
1814
				comment.reset() ;
1817
				break;
1815
				break;
Line 1818... Line 1816...
1818
 
1816
 
1819
			case COMMUNE:
1817
			case COMMUNE:
1820
				commune.reset() ;
1818
				commune.reset() ;
1821
				departement ="";
1819
				departement ="";
1822
				latitude.reset();
1820
				latitude.reset();
1823
				longitude.reset();
1821
				longitude.reset();
1824
				break;
1822
				break;
1825
				
1823
 
1826
			case ESPECE:
1824
			case ESPECE:
1827
				espece.reset();
1825
				espece.reset();
1828
				numeroNom = "" ;
1826
				numeroNom = "" ;
1829
				numeroOrdre = "";
1827
				numeroOrdre = "";
1830
				break;
1828
				break;
1831
				
1829
 
1832
			case LATITUDE:
1830
			case LATITUDE:
1833
				latitude.reset();
1831
				latitude.reset();
1834
				afficherIndicationCommune(null);
1832
				afficherIndicationCommune(null);
1835
				break;
1833
				break;
1836
				
1834
 
1837
			case LONGITUDE:
1835
			case LONGITUDE:
1838
				longitude.reset();
1836
				longitude.reset();
1839
				afficherIndicationCommune(null);
1837
				afficherIndicationCommune(null);
1840
				break;
1838
				break;
1841
				
1839
 
1842
			case ALTITUDE:
1840
			case ALTITUDE:
1843
				altitude.reset();
1841
				altitude.reset();
1844
				break;
1842
				break;
1845
				
1843
 
1846
			case ABONDANCE:
1844
			case ABONDANCE:
1847
				selecteurAbondance.setValue("");
1845
				selecteurAbondance.setValue("");
1848
				break;
1846
				break;
1849
				
1847
 
1850
			case CERTITUDE:
1848
			case CERTITUDE:
1851
				selecteurCertitude.setValue("");
1849
				selecteurCertitude.setValue("");
1852
				break;
1850
				break;
1853
				
1851
 
1854
			case REFERENTIELTAXO:
1852
			case REFERENTIELTAXO:
1855
				selecteurReferentielTaxo.setValue("");
1853
				selecteurReferentielTaxo.setValue("");
1856
				break;
1854
				break;
1857
			
1855
 
1858
			case PHENOLOGIE:
1856
			case PHENOLOGIE:
1859
				selecteurStadePheno.setValue("");
1857
				selecteurStadePheno.setValue("");
1860
				break;
1858
				break;
1861
				
1859
 
1862
			case TOUT:
1860
			case TOUT:
1863
				commune.reset();
1861
				commune.reset();
1864
				date.reset() ;
1862
				date.reset() ;
1865
				lieudit.reset() ;
1863
				lieudit.reset() ;
Line 1881... Line 1879...
1881
				numeroOrdre = "";
1879
				numeroOrdre = "";
1882
				afficherIndicationCommune(null);
1880
				afficherIndicationCommune(null);
1883
				break;
1881
				break;
Line 1884... Line 1882...
1884
 
1882
 
1885
		}
1883
		}
1886
		
1884
 
1887
	}
1885
	}
1888
			
1886
 
1889
	public boolean verifierFormatDate(String date) {
1887
	public boolean verifierFormatDate(String date) {
1890
		
1888
 
1891
		String regex = "[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}" ;
1889
		String regex = "[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}" ;
1892
		if(date.matches(regex) && !date.equals("0000-00-00")) {
1890
		if(date.matches(regex) && !date.equals("0000-00-00")) {
1893
			return true ;
1891
			return true ;
1894
		}
1892
		}
Line 1905... Line 1903...
1905
		} else {
1903
		} else {
1906
			boutonAnnuler.disable();
1904
			boutonAnnuler.disable();
1907
			boutonOK.disable();
1905
			boutonOK.disable();
1908
		}
1906
		}
1909
	}
1907
	}
1910
	
1908
 
1911
	public boolean getSelectionMultiple() {
1909
	public boolean getSelectionMultiple() {
1912
		return selectionMultiple;
1910
		return selectionMultiple;
1913
	}
1911
	}
1914
	
1912
 
1915
	private void calculerAfficherDifferences(ListeObservation listeObs) {
1913
	private void calculerAfficherDifferences(ListeObservation listeObs) {
1916
		
1914
 
1917
		String departement = null;
1915
		String departement = null;
1918
		String commune = null;
1916
		String commune = null;
1919
		String lieuDit = null;
1917
		String lieuDit = null;
1920
		String station = null;
1918
		String station = null;
1921
		String milieu = null;
1919
		String milieu = null;
Line 1927... Line 1925...
1927
		String alt = null;
1925
		String alt = null;
1928
		String abondance = null;
1926
		String abondance = null;
1929
		String certitude = null;
1927
		String certitude = null;
1930
		String referentielTaxo = null;
1928
		String referentielTaxo = null;
1931
		String phenologie = null;
1929
		String phenologie = null;
1932
		
1930
 
1933
		String ordreObs = "";
1931
		String ordreObs = "";
1934
		
1932
 
1935
		for(Iterator<String> it = listeObs.keySet().iterator();it.hasNext();) {
1933
		for(Iterator<String> it = listeObs.keySet().iterator();it.hasNext();) {
1936
			Observation obsEnCours = listeObs.get(it.next());
1934
			Observation obsEnCours = listeObs.get(it.next());
1937
			departement = comparerDifferencesChamps(departement, obsEnCours.getIdentifiantLocalite());
1935
			departement = comparerDifferencesChamps(departement, obsEnCours.getIdentifiantLocalite());
1938
			commune = comparerDifferencesChamps(commune, obsEnCours.getLocalite());
1936
			commune = comparerDifferencesChamps(commune, obsEnCours.getLocalite());
1939
			lieuDit = comparerDifferencesChamps(lieuDit, obsEnCours.getLieudit());
1937
			lieuDit = comparerDifferencesChamps(lieuDit, obsEnCours.getLieudit());
1940
			station = comparerDifferencesChamps(station, obsEnCours.getStation());
1938
			station = comparerDifferencesChamps(station, obsEnCours.getStation());
1941
			milieu = comparerDifferencesChamps(milieu, obsEnCours.getMilieu());
1939
			milieu = comparerDifferencesChamps(milieu, obsEnCours.getMilieu());
1942
			espece = comparerDifferencesChamps(espece, obsEnCours.getNomSaisi()); 
1940
			espece = comparerDifferencesChamps(espece, obsEnCours.getNomSaisi());
1943
			date = comparerDifferencesChamps(date, obsEnCours.getDate());
1941
			date = comparerDifferencesChamps(date, obsEnCours.getDate());
1944
			notes = comparerDifferencesChamps(notes, obsEnCours.getCommentaire());
1942
			notes = comparerDifferencesChamps(notes, obsEnCours.getCommentaire());
1945
			lat = comparerDifferencesChamps(lat, obsEnCours.getLatitude());
1943
			lat = comparerDifferencesChamps(lat, obsEnCours.getLatitude());
1946
			lon = comparerDifferencesChamps(lon, obsEnCours.getLongitude());
1944
			lon = comparerDifferencesChamps(lon, obsEnCours.getLongitude());
1947
			alt = comparerDifferencesChamps(alt, obsEnCours.getAltitude());
1945
			alt = comparerDifferencesChamps(alt, obsEnCours.getAltitude());
1948
			abondance = comparerDifferencesChamps(abondance, obsEnCours.getAbondance());
1946
			abondance = comparerDifferencesChamps(abondance, obsEnCours.getAbondance());
1949
			certitude = comparerDifferencesChamps(certitude, obsEnCours.getCertitude());
1947
			certitude = comparerDifferencesChamps(certitude, obsEnCours.getCertitude());
1950
			referentielTaxo = comparerDifferencesChamps(referentielTaxo, obsEnCours.getReferentielTaxo());
1948
			referentielTaxo = comparerDifferencesChamps(referentielTaxo, obsEnCours.getReferentielTaxo());
1951
			phenologie = comparerDifferencesChamps(phenologie, obsEnCours.getPhenologie());
1949
			phenologie = comparerDifferencesChamps(phenologie, obsEnCours.getPhenologie());
1952
			
1950
 
1953
			ordreObs += obsEnCours.getNumeroOrdre()+",";
1951
			ordreObs += obsEnCours.getNumeroOrdre()+",";
1954
		}
1952
		}
1955
		
1953
 
1956
		Observation obs=new Observation(espece,numeroNom,commune,departement,lieuDit,station,milieu, notes,date);
1954
		Observation obs=new Observation(espece,numeroNom,commune,departement,lieuDit,station,milieu, notes,date);
1957
		obs.setNumeroOrdre(ordreObs);
1955
		obs.setNumeroOrdre(ordreObs);
1958
		obs.setLatitude(lat);
1956
		obs.setLatitude(lat);
1959
		obs.setLongitude(lon);
1957
		obs.setLongitude(lon);
1960
		obs.setAltitude(alt);
1958
		obs.setAltitude(alt);
1961
		obs.setAbondance(abondance);
1959
		obs.setAbondance(abondance);
1962
		obs.setCertitude(certitude);
1960
		obs.setCertitude(certitude);
1963
		obs.setReferentielTaxo(referentielTaxo);
1961
		obs.setReferentielTaxo(referentielTaxo);
1964
		obs.setPhenologie(phenologie);
1962
		obs.setPhenologie(phenologie);
1965
		afficherDetailsObservation(obs);	
1963
		afficherDetailsObservation(obs);
1966
	}
1964
	}
1967
	
1965
 
1968
	private String comparerDifferencesChamps(String valeurActuelle, String nouvelleValeur) {
1966
	private String comparerDifferencesChamps(String valeurActuelle, String nouvelleValeur) {
1969
		
1967
 
1970
		String retour = "000null";
1968
		String retour = "000null";
1971
		
1969
 
1972
			if(valeurActuelle == null) {
1970
			if(valeurActuelle == null) {
1973
				retour = nouvelleValeur;
1971
				retour = nouvelleValeur;
1974
			} else {
1972
			} else {
1975
				if(valeurActuelle.equals(nouvelleValeur)) {
1973
				if(valeurActuelle.equals(nouvelleValeur)) {
1976
					retour = valeurActuelle;
1974
					retour = valeurActuelle;
Line 1978... Line 1976...
1978
					retour = VALEURS_MULTIPLES;
1976
					retour = VALEURS_MULTIPLES;
1979
				}
1977
				}
1980
			}
1978
			}
1981
		return retour;
1979
		return retour;
1982
	}
1980
	}
1983
	
1981
 
1984
	private void reinitialiserValeurModifiees() {	
1982
	private void reinitialiserValeurModifiees() {
1985
		communeModifiee = false;
1983
		communeModifiee = false;
1986
		lieuDitModifie = false;
1984
		lieuDitModifie = false;
1987
		stationModifiee = false;
1985
		stationModifiee = false;
1988
		milieuModifie = false;
1986
		milieuModifie = false;
1989
		dateModifiee = false;
1987
		dateModifiee = false;
Line 1995... Line 1993...
1995
		abondanceModifiee = false;
1993
		abondanceModifiee = false;
1996
		certitudeModifiee = false;
1994
		certitudeModifiee = false;
1997
		referentielTaxoModifie = false;
1995
		referentielTaxoModifie = false;
1998
		phenologieModifiee = false;
1996
		phenologieModifiee = false;
1999
	}
1997
	}
2000
	
1998
 
2001
	public void saisieTabindex()
1999
	public void saisieTabindex()
2002
	{
2000
	{
2003
		commune.setTabIndex(1);
2001
		commune.setTabIndex(1);
2004
		lieudit.setTabIndex(3);
2002
		lieudit.setTabIndex(3);
2005
		station.setTabIndex(4);
2003
		station.setTabIndex(4);
Line 2012... Line 2010...
2012
				if(coordPanel.isVisible()) {
2010
				if(coordPanel.isVisible()) {
2013
					latitude.focus();
2011
					latitude.focus();
2014
				} else {
2012
				} else {
2015
					Ext.get("lien_carto").focus();
2013
					Ext.get("lien_carto").focus();
2016
				}
2014
				}
2017
			}	
2015
			}
2018
		});
2016
		});
2019
			
2017
 
2020
		latitude.setTabIndex(8);
2018
		latitude.setTabIndex(8);
2021
		longitude.setTabIndex(9);
2019
		longitude.setTabIndex(9);
2022
		altitude.setTabIndex(10);
2020
		altitude.setTabIndex(10);
2023
		comment.setTabIndex(11);
2021
		comment.setTabIndex(11);
2024
		date.setTabIndex(12);
2022
		date.setTabIndex(12);
Line 2026... Line 2024...
2026
		selecteurCertitude.setTabIndex(14);
2024
		selecteurCertitude.setTabIndex(14);
2027
		selecteurAbondance.setTabIndex(15);
2025
		selecteurAbondance.setTabIndex(15);
2028
		selecteurStadePheno.setTabIndex(16);
2026
		selecteurStadePheno.setTabIndex(16);
2029
		boutonOK.setTabIndex(17);
2027
		boutonOK.setTabIndex(17);
2030
		boutonAnnuler.setTabIndex(18);
2028
		boutonAnnuler.setTabIndex(18);
2031
		
2029
 
2032
	}
2030
	}
2033
	
2031
 
2034
	private void obtenirInformationCoord() {
2032
	private void obtenirInformationCoord() {
2035
		if(coordonneesValides() != null) {
2033
		if(coordonneesValides() != null) {
2036
			observationMediateur.obtenirInformationCoord(LatLng.newInstance(coordonneesValides()[0],coordonneesValides()[1]));
2034
			observationMediateur.obtenirInformationCoord(LatLng.newInstance(coordonneesValides()[0],coordonneesValides()[1]));
2037
		} else {
2035
		} else {
2038
			observationMediateur.afficherFenetreCarto();
2036
			observationMediateur.afficherFenetreCarto();
2039
		}
2037
		}
Line 2040... Line 2038...
2040
 
2038
 
2041
	}
2039
	}
2042
	
2040
 
2043
	private void obtenirInformationCommune() {
2041
	private void obtenirInformationCommune() {
2044
		observationMediateur.obtenirInformationCommune(getCommuneSansDepartement(), Util.obtenirDepartementAPartirChaineCommune(departement, commune.getText()));
2042
		observationMediateur.obtenirInformationCommune(getCommuneSansDepartement(), Util.obtenirDepartementAPartirChaineCommune(departement, commune.getText()));
2045
	}
2043
	}
2046
	
2044
 
2047
	public double[] coordonneesValides() {
2045
	public double[] coordonneesValides() {
2048
		
2046
 
2049
		try {
2047
		try {
2050
						
2048
 
2051
			double lat = Double.parseDouble(latitude.getValueAsString().replaceAll(",", "."));
2049
			double lat = Double.parseDouble(latitude.getValueAsString().replaceAll(",", "."));
2052
			double lon = Double.parseDouble(longitude.getValueAsString().replaceAll(",", "."));
2050
			double lon = Double.parseDouble(longitude.getValueAsString().replaceAll(",", "."));
2053
			
2051
 
2054
			double[] coord = {lat, lon};
2052
			double[] coord = {lat, lon};
2055
			return coord;
2053
			return coord;
2056
			
2054
 
2057
		} catch (NumberFormatException ne) {
2055
		} catch (NumberFormatException ne) {
2058
			return null;
2056
			return null;
2059
		}
2057
		}
2060
	}
2058
	}
2061
	
2059
 
2062
	private String[] getValeurCoordonnees() {
2060
	private String[] getValeurCoordonnees() {
2063
		double[] coDouble = coordonneesValides();
2061
		double[] coDouble = coordonneesValides();
2064
		
2062
 
2065
		if(coDouble != null) {
2063
		if(coDouble != null) {
2066
			String[] coord = {coDouble[0]+"",coDouble[1]+""};
2064
			String[] coord = {coDouble[0]+"",coDouble[1]+""};
2067
			return coord;
2065
			return coord;
2068
		} else {
2066
		} else {
2069
			String[] coord = {"000null","000null" };
2067
			String[] coord = {"000null","000null" };
2070
			return coord;
2068
			return coord;
2071
		}
2069
		}
2072
	}
2070
	}
2073
	
2071
 
2074
	public String getCommune() {
2072
	public String getCommune() {
2075
		
2073
 
2076
		String valeurCommune = "";
2074
		String valeurCommune = "";
2077
		
2075
 
2078
		if(commune.getValue() != null) {
2076
		if(commune.getValue() != null) {
2079
			valeurCommune = commune.getValue(); 
2077
			valeurCommune = commune.getValue();
2080
		}
2078
		}
2081
		return valeurCommune;
2079
		return valeurCommune;
2082
	}
2080
	}
2083
	
2081
 
2084
	public String getDepartement() {
2082
	public String getDepartement() {
2085
		return Util.obtenirDepartementAPartirChaineCommune(departement, commune.getText());
2083
		return Util.obtenirDepartementAPartirChaineCommune(departement, commune.getText());
2086
	}
2084
	}
2087
	 
2085
 
2088
	public String getCommuneSansDepartement() {
2086
	public String getCommuneSansDepartement() {
2089
		return Util.supprimerNumDepartementChaineLocalite(getCommune());
2087
		return Util.supprimerNumDepartementChaineLocalite(getCommune());
2090
	}
2088
	}
2091
	
2089
 
2092
	private String getValeurChampListeLibre(ComboBox champ) {
2090
	private String getValeurChampListeLibre(ComboBox champ) {
2093
		String valeurChamp = champ.getValue();
2091
		String valeurChamp = champ.getValue();
2094
		String valeurChampBrute = champ.getRawValue();
2092
		String valeurChampBrute = champ.getRawValue();
2095
		
2093
 
2096
		// Test idiot qui permet de savoir si l'on utilise la valeur saisie directement ou bien la valeur
2094
		// Test idiot qui permet de savoir si l'on utilise la valeur saisie directement ou bien la valeur
2097
		// selectionnee car lors du setValue sur le keypress, gwtext ne prends pas en compte le dernier 
2095
		// selectionnee car lors du setValue sur le keypress, gwtext ne prends pas en compte le dernier
2098
		// caractère
2096
		// caractère
2099
		
2097
 
2100
		if(valeurChampBrute.trim().length() == 0) {
2098
		if(valeurChampBrute.trim().length() == 0) {
2101
			valeurChamp = "";
2099
			valeurChamp = "";
2102
		} else {
2100
		} else {
2103
			if(valeurChamp != null && valeurChamp.length() > 0) {
2101
			if(valeurChamp != null && valeurChamp.length() > 0) {
Line 2110... Line 2108...
2110
	}
2108
	}
Line 2111... Line 2109...
2111
 
2109
 
2112
	public String getAbondance() {
2110
	public String getAbondance() {
2113
		return getValeurChampListeLibre(selecteurAbondance);
2111
		return getValeurChampListeLibre(selecteurAbondance);
2114
	}
2112
	}
2115
	
2113
 
2116
	public String getCertitude() {
2114
	public String getCertitude() {
2117
		return getValeurChampListeLibre(selecteurCertitude);
2115
		return getValeurChampListeLibre(selecteurCertitude);
2118
	}
2116
	}
2119
	
2117
 
2120
	public String getPhenologie() {
2118
	public String getPhenologie() {
2121
		return getValeurChampListeLibre(selecteurStadePheno);
2119
		return getValeurChampListeLibre(selecteurStadePheno);
2122
	}
2120
	}
2123
	
2121
 
2124
	public String getReferentielTaxo() {
2122
	public String getReferentielTaxo() {
2125
		String codeCourt = getValeurChampListeLibre(selecteurReferentielTaxo);
2123
		String codeCourt = getValeurChampListeLibre(selecteurReferentielTaxo);
2126
		return Ontologies.getInfosReferentielNomParCode(codeCourt).getCodeVersionComplet();
2124
		return Ontologies.getInfosReferentielNomParCode(codeCourt).getCodeVersionComplet();
Line 2127... Line 2125...
2127
	}
2125
	}
2128
 
2126
 
2129
	public boolean communeInitialisee() {
2127
	public boolean communeInitialisee() {
2130
		return communeModifiee;
2128
		return communeModifiee;
2131
	}
2129
	}
2132
	
2130
 
2133
	public void redimensionnerFormulaire() {
2131
	public void redimensionnerFormulaire() {
2134
		afficherFormulaireLatLon.setWidth(panneauIntermediaire.getWidth()+"px");
2132
		afficherFormulaireLatLon.setWidth(panneauIntermediaire.getWidth()+"px");
2135
		panneauPremierColonne.doLayout();
2133
		panneauPremierColonne.doLayout();
2136
		panneauSecondeColonne.doLayout();
2134
		panneauSecondeColonne.doLayout();
2137
		panneauIntermediaire.doLayout();
2135
		panneauIntermediaire.doLayout();
2138
		
2136
 
2139
		doLayout();
2137
		doLayout();