Subversion Repositories eFlore/Applications.coel

Rev

Rev 1468 | Rev 1516 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1468 Rev 1513
Line 1... Line 1...
1
package org.tela_botanica.client.vues.publication;
1
package org.tela_botanica.client.vues.publication;
Line 2... Line 2...
2
 
2
 
-
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.HashMap;
4
import java.util.Iterator;
5
import java.util.Iterator;
Line 5... Line 6...
5
import java.util.List;
6
import java.util.List;
6
 
7
 
7
import org.tela_botanica.client.ComposantClass;
8
import org.tela_botanica.client.ComposantClass;
-
 
9
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.Mediateur;
10
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
9
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
11
import org.tela_botanica.client.composants.GrillePaginable;
-
 
12
import org.tela_botanica.client.composants.InfoLogger;
10
import org.tela_botanica.client.composants.InfoLogger;
13
import org.tela_botanica.client.composants.pagination.ProxyPersonnes;
-
 
14
import org.tela_botanica.client.composants.pagination.ProxyPersonnesAPublication;
11
import org.tela_botanica.client.composants.pagination.ProxyPersonnes;
15
import org.tela_botanica.client.composants.pagination.ProxyProjets;
12
import org.tela_botanica.client.composants.pagination.ProxyProjets;
16
import org.tela_botanica.client.composants.pagination.ProxyPublicationsAPersonne;
13
import org.tela_botanica.client.composants.pagination.ProxyStructures;
17
import org.tela_botanica.client.composants.pagination.ProxyStructures;
14
import org.tela_botanica.client.images.Images;
18
import org.tela_botanica.client.images.Images;
15
import org.tela_botanica.client.interfaces.Rafraichissable;
19
import org.tela_botanica.client.interfaces.Rafraichissable;
Line 33... Line 37...
33
import org.tela_botanica.client.vues.FormulaireBarreValidation;
37
import org.tela_botanica.client.vues.FormulaireBarreValidation;
34
import org.tela_botanica.client.vues.personne.PersonneForm;
38
import org.tela_botanica.client.vues.personne.PersonneForm;
Line 35... Line 39...
35
 
39
 
36
import com.extjs.gxt.ui.client.Style.Scroll;
40
import com.extjs.gxt.ui.client.Style.Scroll;
-
 
41
import com.extjs.gxt.ui.client.Style.SortDir;
37
import com.extjs.gxt.ui.client.Style.SortDir;
42
import com.extjs.gxt.ui.client.core.XTemplate;
38
import com.extjs.gxt.ui.client.data.ModelData;
43
import com.extjs.gxt.ui.client.data.ModelData;
39
import com.extjs.gxt.ui.client.data.ModelType;
44
import com.extjs.gxt.ui.client.data.ModelType;
40
import com.extjs.gxt.ui.client.event.BaseEvent;
45
import com.extjs.gxt.ui.client.event.BaseEvent;
41
import com.extjs.gxt.ui.client.event.ButtonEvent;
46
import com.extjs.gxt.ui.client.event.ButtonEvent;
Line 64... Line 69...
64
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
69
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
65
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
70
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
66
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
71
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
67
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
72
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
68
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
73
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
-
 
74
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
69
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
75
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
70
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
76
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
71
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
77
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
72
import com.extjs.gxt.ui.client.widget.layout.FormData;
78
import com.extjs.gxt.ui.client.widget.layout.FormData;
73
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
79
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
Line 112... Line 118...
112
	private TextField<String> pagesChp = null;
118
	private TextField<String> pagesChp = null;
Line 113... Line 119...
113
	
119
	
Line 114... Line 120...
114
	private LayoutContainer zoneHaut, zoneBas;
120
	private LayoutContainer zoneHaut, zoneBas;
115
	
121
	
116
	private ToolBar barreOutils = null;
122
	private ToolBar barreOutils = null;
117
	private EditorGrid<PublicationAPersonne> grilleAuteurs;
123
	private GrillePaginable<ModelData> grilleAuteurs;
118
	private ChampComboBoxRechercheTempsReelPaginable personnesSaisiesComboBox = null;
124
	private ChampComboBoxRechercheTempsReelPaginable personnesSaisiesComboBox = null;
119
	private Button personnesBoutonSupprimer = null;
125
	private Button personnesBoutonSupprimer = null;
120
	private Button personnesBoutonModifier = null;
126
	private Button personnesBoutonModifier = null;
Line 174... Line 180...
174
		creerZoneEdition();
180
		creerZoneEdition();
175
		zoneBas.add(editionFieldset);
181
		zoneBas.add(editionFieldset);
Line 176... Line 182...
176
		
182
		
177
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
183
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
178
			mediateurCourrant.selectionnerPublication(this, publicationId, sequenceur);
-
 
179
			mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR, sequenceur);
184
			mediateurCourrant.selectionnerPublication(this, publicationId, sequenceur);
180
			sequenceur.enfilerRafraichissement(this, new Information("chargement_modifier_ok"));
185
			sequenceur.enfilerRafraichissement(this, new Information("chargement_modifier_ok"));
181
		}
186
		}
Line 182... Line 187...
182
	}
187
	}
Line 242... Line 247...
242
	
247
	
243
	private Button creerBoutonAuteurUp() {
248
	private Button creerBoutonAuteurUp() {
244
		Button bouton = new Button();
249
		Button bouton = new Button();
245
		bouton.setIcon(Images.ICONES.arrowUp());
250
		bouton.setIcon(Images.ICONES.arrowUp());
246
		bouton.setEnabled(false);
251
		bouton.setEnabled(false);
247
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
252
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
248
			public void componentSelected(ButtonEvent ce) {  
253
			public void componentSelected(ButtonEvent ce) {  
Line 249... Line 254...
249
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
254
				if (grilleAuteurs.getGrille().getSelectionModel().getSelectedItem() != null) {
Line 250... Line 255...
250
					
255
					
251
					PublicationAPersonne pap = grilleAuteurs.getSelectionModel().getSelectedItem();
256
					ModelData publiAPersonneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
252
					
257
					
Line 253... Line 258...
253
					int index = grilleAuteurs.getStore().indexOf(pap);
258
					int index = grilleAuteurs.getStore().indexOf(publiAPersonneSelectionnee);
254
					int newIndex = index;
259
					int newIndex = index - 1; // l'auteur monte dans dans la liste donc son ordre diminue
255
					newIndex--;
260
					int newOrdre = newIndex + 1; // parce que index commence à zéro
-
 
261
					
256
					
262
					// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
-
 
263
					// déclenchent et posent problème
257
					// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
264
					changeOrderMarker = true;
258
					// déclenchent et posent problème
265
					
-
 
266
					publiAPersonneSelectionnee.set("_ordre_", String.valueOf(newOrdre));
259
					changeOrderMarker = true;
267
					
-
 
268
					ModelData publiAPersonneSwitch = grilleAuteurs.getStore().getAt(index-1);
260
					pap.setOrdreAuteurs(String.valueOf(newIndex+1));
269
					int newOrdrePapSwitch = newOrdre + 1;
261
					PublicationAPersonne papSwitch = grilleAuteurs.getStore().getAt(index-1);
270
 
262
					int newIndexPapSwitch = index + 1;
271
					publiAPersonneSwitch.set("_ordre_", String.valueOf(newOrdrePapSwitch));			
263
					papSwitch.setOrdreAuteurs(String.valueOf(newIndexPapSwitch));
272
					
Line 264... Line 273...
264
					grilleAuteurs.getStore().update(papSwitch);
273
					grilleAuteurs.getStore().update(publiAPersonneSwitch);
265
					grilleAuteurs.getStore().remove(pap);
274
					grilleAuteurs.getStore().remove(publiAPersonneSelectionnee);
266
					grilleAuteurs.getStore().insert(pap, newIndex);
275
					grilleAuteurs.getStore().insert(publiAPersonneSelectionnee, newIndex);
Line 279... Line 288...
279
		bouton.setEnabled(false);
288
		bouton.setEnabled(false);
280
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
289
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
281
			public void componentSelected(ButtonEvent ce) {  
290
			public void componentSelected(ButtonEvent ce) {  
282
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
291
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
Line 283... Line 292...
283
					
292
					
Line 284... Line 293...
284
					PublicationAPersonne pap = grilleAuteurs.getSelectionModel().getSelectedItem();
293
					ModelData publiAPersonneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
285
					
294
					
286
					int index = grilleAuteurs.getStore().indexOf(pap);
295
					int index = grilleAuteurs.getStore().indexOf(publiAPersonneSelectionnee);
Line 287... Line 296...
287
					int newIndex = index;
296
					int newIndex = index + 1; // l'auteur monte dans dans la liste donc son ordre diminue
288
					newIndex++;
297
					int newOrdre = newIndex + 1; // parce que index commence à zéro					
289
					
298
					
-
 
299
					// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
290
					// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
300
					// déclenchent et posent problème
-
 
301
					changeOrderMarker = true;
291
					// déclenchent et posent problème
302
					
292
					changeOrderMarker = true;
303
					publiAPersonneSelectionnee.set("_ordre_", String.valueOf(newOrdre));
-
 
304
					
293
					pap.setOrdreAuteurs(String.valueOf(newIndex+1));
305
					ModelData publiAPersonneSwitch = grilleAuteurs.getStore().getAt(index+1);
-
 
306
					int newOrdrePapSwitch = index + 1;
294
					PublicationAPersonne papSwitch = grilleAuteurs.getStore().getAt(index+1);
307
 
295
					int newIndexPapSwitch = index + 1;
308
					publiAPersonneSwitch.set("_ordre_", String.valueOf(newOrdrePapSwitch));
296
					papSwitch.setOrdreAuteurs(String.valueOf(newIndexPapSwitch));
309
					
297
					grilleAuteurs.getStore().update(papSwitch);
310
					grilleAuteurs.getStore().update(publiAPersonneSwitch);
Line 298... Line 311...
298
					grilleAuteurs.getStore().remove(pap);
311
					grilleAuteurs.getStore().remove(publiAPersonneSelectionnee);
299
					grilleAuteurs.getStore().insert(pap, newIndex);
312
					grilleAuteurs.getStore().insert(publiAPersonneSelectionnee, newIndex);
300
					changeOrderMarker = false;
313
					changeOrderMarker = false;
Line 321... Line 334...
321
	private Button creerBoutonModifier() {
334
	private Button creerBoutonModifier() {
322
		Button bouton = new Button(i18nC.modifier());
335
		Button bouton = new Button(i18nC.modifier());
323
		bouton.setIcon(Images.ICONES.vcardModifier());
336
		bouton.setIcon(Images.ICONES.vcardModifier());
324
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
337
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
325
			public void componentSelected(ButtonEvent ce) {  
338
			public void componentSelected(ButtonEvent ce) {  
326
				Personne personneSaisieSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem().getPersonne();
339
				Personne personneSaisieSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false).getPersonne();
Line 327... Line 340...
327
				
340
				
328
				if (personneSaisieSelectionnee == null) {
341
				if (personneSaisieSelectionnee == null) {
329
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
342
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
330
				} else {
343
				} else {
Line 337... Line 350...
337
	}
350
	}
Line 338... Line 351...
338
	
351
	
339
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
352
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
340
		String personneId = null;
353
		String personneId = null;
341
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
354
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
342
			Personne personneSaisieSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem().getPersonne();
355
			Personne personneSaisieSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false).getPersonne();
343
			personneId = personneSaisieSelectionnee.getId();
356
			personneId = personneSaisieSelectionnee.getId();
Line 344... Line 357...
344
		}
357
		}
345
		
358
		
Line 391... Line 404...
391
	private Button creerBoutonSupprimer() {
404
	private Button creerBoutonSupprimer() {
392
		Button bouton = new Button(i18nC.supprimer());
405
		Button bouton = new Button(i18nC.supprimer());
393
		bouton.setIcon(Images.ICONES.vcardSupprimer());
406
		bouton.setIcon(Images.ICONES.vcardSupprimer());
394
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
407
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
395
			public void componentSelected(ButtonEvent ce) {
408
			public void componentSelected(ButtonEvent ce) {
396
				PublicationAPersonne personneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
409
				PublicationAPersonne personneSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false);
397
				if (personneSelectionnee == null) {
410
				if (personneSelectionnee == null) {
398
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
411
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
399
				} else {
412
				} else {
400
					supprimerDansGrille(personneSelectionnee);
413
					supprimerDansGrille(personneSelectionnee);
401
				}
414
				}
Line 445... Line 458...
445
		personnesSaisiesComboBox.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
458
		personnesSaisiesComboBox.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
446
			public void handleEvent(BaseEvent be) {		
459
			public void handleEvent(BaseEvent be) {		
447
				if (personnesSaisiesComboBox.getValeur() instanceof ModelData) {
460
				if (personnesSaisiesComboBox.getValeur() instanceof ModelData) {
448
					// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
461
					// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
449
					Personne personneSaisieSelectionnee = new Personne(personnesSaisiesComboBox.getValeur());
462
					Personne personneSaisieSelectionnee = new Personne(personnesSaisiesComboBox.getValeur());
450
					PublicationAPersonne pap = new PublicationAPersonne();
463
					PublicationAPersonne pap = new PublicationAPersonne(false);					
451
					pap.setPersonne(personneSaisieSelectionnee);
464
					pap.setPersonne(personneSaisieSelectionnee, true);
452
					pap.setOrdreAuteurs(String.valueOf(grilleAuteurs.getStore().getCount()+1));
465
					pap.setOrdreAuteurs(String.valueOf(grilleAuteurs.getStore().getCount()+1));
453
					if (modeDeCreation != Formulaire.MODE_AJOUTER) {
466
					if (modeDeCreation != Formulaire.MODE_AJOUTER) {
454
						pap.setPublicationLiee(publication);
467
						pap.setPublicationLiee(publication);
455
						pap.setIdPublication(publicationId);
468
						pap.setIdPublication(publicationId);
456
					}
469
					}
Line 519... Line 532...
519
		} else {
532
		} else {
520
			Info.display("Information", "Vous devez sélectionner une personne");
533
			Info.display("Information", "Vous devez sélectionner une personne");
521
		}
534
		}
522
	}
535
	}
Line 523... Line 536...
523
	
536
	
Line -... Line 537...
-
 
537
	private GrillePaginable<ModelData> creerGrilleAuteurs() {
-
 
538
		
524
	private EditorGrid<PublicationAPersonne> creerGrilleAuteurs() {
539
		// ModelType
-
 
540
		ModelType modelTypePersonnesAPublication = new ModelType();
-
 
541
		modelTypePersonnesAPublication.setRoot("publicationsAPersonne");
-
 
542
		modelTypePersonnesAPublication.setTotalName("nbElements");
-
 
543
		modelTypePersonnesAPublication.addField("cpuap_id_personne");
-
 
544
		modelTypePersonnesAPublication.addField("cpuap_id_publication");
-
 
545
		modelTypePersonnesAPublication.addField("cpuap_id_role");
-
 
546
		modelTypePersonnesAPublication.addField("cpuap_ordre");
-
 
547
		modelTypePersonnesAPublication.addField("cp_id_personne");
-
 
548
		modelTypePersonnesAPublication.addField("cp_fmt_nom_complet");
-
 
549
		modelTypePersonnesAPublication.addField("cp_nom");
-
 
550
		modelTypePersonnesAPublication.addField("cp_prenom");
-
 
551
		modelTypePersonnesAPublication.addField("cp_id_personne");
-
 
552
		modelTypePersonnesAPublication.addField("cp_code_postal");
Line -... Line 553...
-
 
553
		modelTypePersonnesAPublication.addField("cp_ville");
-
 
554
		modelTypePersonnesAPublication.addField("cp_truk_courriel");
-
 
555
		
-
 
556
		// Proxy
-
 
557
		ProxyPersonnesAPublication<ModelData> proxyPersonnesAPublication = new ProxyPersonnesAPublication<ModelData>(null, publicationId);		
-
 
558
 
-
 
559
		// Colonnes
525
		
560
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
526
		ListStore<PublicationAPersonne> storeGrilleAuteurs = new ListStore<PublicationAPersonne>();
561
		ColumnConfig columnOrdre = new ColumnConfig("_ordre_", i18nC.ordre(), 15);
527
		
562
		colonnes.add(columnOrdre);
-
 
563
		colonnes.add(new ColumnConfig("cp_fmt_nom_complet", i18nC.personneNomComplet(), 150));
-
 
564
		colonnes.add(new ColumnConfig("cp_code_postal", i18nC.personneCodePostal(), 150));
528
		// ADD Listener ------------------------------------------------------------------------------------
565
		colonnes.add(new ColumnConfig("cp_ville", i18nC.personneVille(), 75));
-
 
566
		colonnes.add(new ColumnConfig("cp_truk_courriel", i18nC.personneCourriel(), 75));		
-
 
567
		
529
		storeGrilleAuteurs.addListener(Store.Add, new Listener<StoreEvent<PublicationAPersonne>>() {
568
		// Champs de traitement
-
 
569
		HashMap<String, String> virtualFields = new HashMap<String, String>();
530
			public void handleEvent(StoreEvent<PublicationAPersonne> ce) {
570
		virtualFields.put("_ordre_", "cpuap_ordre");
-
 
571
		
-
 
572
		// Modele de selection
531
				if (!changeOrderMarker) {
573
		GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>();
532
					
574
		modeleDeSelection.addListener(Events.SelectionChange, new SelectionChangedListener<ModelData>() {
533
					// Bug de GXT : Pour récupérer l'élément modifié, j'ai dû faire comme suit
575
			public void selectionChanged(SelectionChangedEvent<ModelData> se) {
534
					ListStore<PublicationAPersonne> auteursStore = (ListStore<PublicationAPersonne>)ce.getSource();
576
				ModelData papSelectionnee = grilleAuteurs.getGrille().getSelectionModel().getSelectedItem();
-
 
577
				int index = grilleAuteurs.getStore().indexOf(papSelectionnee);
535
					PublicationAPersonne pap = auteursStore.getAt(ce.getIndex());
578
				
-
 
579
				if (index >= 1) boutonAuteurUp.setEnabled(true);
-
 
580
				else boutonAuteurUp.setEnabled(false);
-
 
581
				if ((index+1) < grilleAuteurs.getStore().getCount()) boutonAuteurDown.setEnabled(true);
-
 
582
				else boutonAuteurDown.setEnabled(false);
-
 
583
			}
-
 
584
		});
-
 
585
		
536
					
586
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
-
 
587
		
-
 
588
		// Grille
-
 
589
		// ATTENTION : le constructure de cette grille est à vérifier!
-
 
590
		final GrillePaginable<ModelData> grilleAuteurs = new GrillePaginable<ModelData>(modelTypePersonnesAPublication, virtualFields, proxyPersonnesAPublication, colonnes, modeleDeColonnes);		
537
					// Lorsque l'on reçoit une liste d'auteurs, on leur affecte l'état "modifié", puis
591
		grilleAuteurs.getGrille().setHeight("100%");
538
					// on les ajoute au magasin mais puisque chaque élément ajouté au magasin déclenche
592
		grilleAuteurs.getGrille().setBorders(true);
-
 
593
		grilleAuteurs.getGrille().setSelectionModel(modeleDeSelection);
-
 
594
		grilleAuteurs.getGrille().getView().setForceFit(true);
539
					// l'évènement Store.Add, on est obligé de vérifier si l'objet n'a pas déjà un état
595
		grilleAuteurs.getGrille().setAutoExpandColumn("fmt_nom_complet");
-
 
596
		grilleAuteurs.getGrille().setStripeRows(true);
-
 
597
		grilleAuteurs.getGrille().setTrackMouseOver(true);
-
 
598
		
-
 
599
		// Rajouter des écouteurs
540
					// sinon l'évènement écrase l'état précédent
600
		grilleAuteurs.getStore().addListener(Store.Add, new Listener<StoreEvent<ModelData>>() {
541
					if (pap.get("_etat_") == null) pap.set("_etat_", aDonnee.ETAT_AJOUTE);
601
			public void handleEvent(StoreEvent<ModelData> ce) {
542
					
602
				if (!changeOrderMarker) {					
543
					actualiserEtatBoutonsBarreOutils();
603
					actualiserEtatBoutonsBarreOutils();
544
				}
-
 
545
			}
-
 
546
		});
604
				}
547
		
605
			}
548
		// REMOVE Listener ------------------------------------------------------------------------------------
606
		});
549
		storeGrilleAuteurs.addListener(Store.Remove, new Listener<StoreEvent<PublicationAPersonne>>() {
607
		grilleAuteurs.getStore().addListener(Store.Remove, new Listener<StoreEvent<ModelData>>() {
550
			public void handleEvent(StoreEvent<PublicationAPersonne> ce) {
608
			public void handleEvent(StoreEvent<ModelData> ce) {
551
				if (!changeOrderMarker) {					
609
				if (!changeOrderMarker) {					
552
					actualiserEtatBoutonsBarreOutils();
610
					actualiserEtatBoutonsBarreOutils();
553
				}
-
 
554
			}
-
 
555
		});
611
				}
556
		
612
			}
557
		// UPDATE Listener ------------------------------------------------------------------------------------
613
		});
558
		storeGrilleAuteurs.addListener(Store.Update, new Listener<StoreEvent<PublicationAPersonne>>() {
-
 
559
			public void handleEvent(StoreEvent<PublicationAPersonne> ce) {
614
		grilleAuteurs.getStore().addListener(Store.Update, new Listener<StoreEvent<ModelData>>() {
560
				if (!changeOrderMarker) {
615
			public void handleEvent(StoreEvent<ModelData> ce) {
561
					
616
				if (!changeOrderMarker) {
562
					if (ce.getRecord().isModified("ordre")) {
617
					if (ce.getRecord().isModified("_ordre_")) {
563
						/** s'il s'agit d'un auteur que l'on vient d'ajouter à la liste, alors on a pas besoin
618
						// s'il s'agit d'un auteur que l'on vient d'ajouter à la liste, alors on a pas besoin
564
						de faire quoique ce soit car l'auteur est déjà dans la liste des auteurs ajoutés **/
619
						// de faire quoique ce soit car l'auteur est déjà dans la liste des auteurs ajoutés
565
						if (ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
620
						if (ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
566
							// ... do nothing
621
							// ... do nothing
567
						/** s'il s'agit d'un auteur qui était déjà présent dans la liste initiale, il faut
-
 
568
						ajouter cet auteur à la liste des auteurs modifiés **/
622
						// s'il s'agit d'un auteur qui était déjà présent dans la liste initiale, il faut
569
						} else {
623
						// ajouter cet auteur à la liste des auteurs modifiés
570
							if (ce.getModel() instanceof PublicationAPersonne) {
-
 
571
								PublicationAPersonne pap = ce.getModel();
624
						} else {
572
								auteursModifies.put(pap.getId(), pap);
625
							PublicationAPersonne pap = new PublicationAPersonne(ce.getModel(), false);
573
							}
626
							auteursModifies.put(pap.getId(), pap);
574
						}	
627
						}	
575
					}
628
					}
576
				}
-
 
577
			}
-
 
578
		});
-
 
579
		
-
 
580
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
-
 
581
		ColumnConfig columnOrdre = new ColumnConfig("ordre", i18nC.ordre(), 15);
-
 
582
		/*
-
 
583
		final TextField<String> ordre = new TextField<String>(); 
-
 
584
		ordre.setValidator(new Validator(){
-
 
585
			public String validate(Field<?> field, String value) {
-
 
586
				if (value.matches("[0-9]*")) return null;
-
 
587
				else return "[Erreur] Le champ 'ordre' doit être un nombre entier.";
-
 
588
			}
-
 
589
		});
-
 
590
		*/
-
 
591
 
-
 
592
		colonnes.add(columnOrdre);
-
 
593
		colonnes.add(new ColumnConfig("fmt_nom_complet", i18nC.personneNomComplet(), 150));
-
 
594
		colonnes.add(new ColumnConfig("code_postal", i18nC.personneCodePostal(), 150));
-
 
595
		colonnes.add(new ColumnConfig("ville", i18nC.personneVille(), 75));
-
 
596
		colonnes.add(new ColumnConfig("truk_courriel", i18nC.personneCourriel(), 75));
-
 
Line 597... Line -...
597
 
-
 
598
		
-
 
599
		GridSelectionModel<PublicationAPersonne> modeleDeSelection = new GridSelectionModel<PublicationAPersonne>();
-
 
600
		
-
 
601
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
-
 
602
		
-
 
603
		EditorGrid<PublicationAPersonne> grilleDesAuteurs = new EditorGrid<PublicationAPersonne>(storeGrilleAuteurs, modeleDeColonnes);
-
 
604
		
-
 
605
		modeleDeSelection.addListener(Events.SelectionChange, new SelectionChangedListener<PublicationAPersonne>() {
-
 
606
			public void selectionChanged(SelectionChangedEvent<PublicationAPersonne> se) {
-
 
607
				PublicationAPersonne papSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
-
 
608
				int index = grilleAuteurs.getStore().indexOf(papSelectionnee);
-
 
609
				
-
 
610
				if (index >= 1) boutonAuteurUp.setEnabled(true);
-
 
611
				else boutonAuteurUp.setEnabled(false);
-
 
612
				if ((index+1) < grilleAuteurs.getStore().getCount()) boutonAuteurDown.setEnabled(true);
-
 
613
				else boutonAuteurDown.setEnabled(false);
-
 
614
			}
-
 
615
		});
-
 
616
		
-
 
617
		grilleDesAuteurs.setHeight("100%");
-
 
618
		grilleDesAuteurs.setBorders(true);
-
 
619
		grilleDesAuteurs.setSelectionModel(modeleDeSelection);
-
 
620
		grilleDesAuteurs.getView().setForceFit(true);
-
 
621
		grilleDesAuteurs.setAutoExpandColumn("fmt_nom_complet");
629
				}
622
		grilleDesAuteurs.setStripeRows(true);
630
			}
Line 623... Line 631...
623
		grilleDesAuteurs.setTrackMouseOver(true);
631
		});		
624
		
632
		
625
		return grilleDesAuteurs;
633
		return grilleAuteurs;
Line 752... Line 760...
752
		datePublicationChp.setFieldLabel("Année de publication");
760
		datePublicationChp.setFieldLabel("Année de publication");
753
		datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE);
761
		datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE);
754
		datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
762
		datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
755
		editionFieldset.add(datePublicationChp, new FormData(40, 0));
763
		editionFieldset.add(datePublicationChp, new FormData(40, 0));
Line 756... Line 764...
756
		
764
		
757
		/*****************************/
765
		/*********************************/
758
		/**			Champ ''		**/
766
		/**			Champ 'Tome'		**/
759
		/*****************************/	
767
		/*********************************/	
760
		tomeChp = new TextField<String>();
768
		tomeChp = new TextField<String>();
761
		tomeChp.setFieldLabel("Série de la revue ou tome");
769
		tomeChp.setFieldLabel("Série de la revue ou tome");
Line 762... Line 770...
762
		editionFieldset.add(tomeChp, new FormData(75, 0));
770
		editionFieldset.add(tomeChp, new FormData(75, 0));
763
 
771
 
764
		/*****************************/
772
		/*************************************/
765
		/**			Champ ''		**/
773
		/**			Champ 'Fascicule'		**/
766
		/*****************************/	
774
		/*************************************/	
767
		fasciculeChp = new TextField<String>();
775
		fasciculeChp = new TextField<String>();
Line 768... Line 776...
768
		fasciculeChp.setFieldLabel("Fascicule de la revue");
776
		fasciculeChp.setFieldLabel("Fascicule de la revue");
769
		editionFieldset.add(fasciculeChp, new FormData(75, 0));
777
		editionFieldset.add(fasciculeChp, new FormData(75, 0));
770
 
778
 
771
		/*****************************/
779
		/*********************************/
772
		/**			Champ ''		**/
780
		/**			Champ 'Pages'		**/
773
		/*****************************/	
781
		/*********************************/	
774
		pagesChp = new TextField<String>();
782
		pagesChp = new TextField<String>();
775
		pagesChp.setFieldLabel("Pages");
783
		pagesChp.setFieldLabel("Pages");
Line 876... Line 884...
876
		
884
		
877
		sequenceur.enfilerRafraichissement(this, new Information("auteurs_enregistres"));
885
		sequenceur.enfilerRafraichissement(this, new Information("auteurs_enregistres"));
Line 878... Line 886...
878
	}
886
	}
879
	
887
	
880
	private void formaterOrdreAuteurs() {
888
	private void formaterOrdreAuteurs() {
Line 881... Line 889...
881
		ListStore<PublicationAPersonne> store = grilleAuteurs.getStore();
889
		ListStore<ModelData> store = grilleAuteurs.getStore();
882
		List<PublicationAPersonne> auteurs = grilleAuteurs.getStore().getModels();
890
		List<ModelData> auteurs = grilleAuteurs.getStore().getModels();
883
		
891
		
-
 
892
		Iterator<ModelData> itAuteurs = auteurs.iterator();
-
 
893
		while (itAuteurs.hasNext())	{
884
		Iterator<PublicationAPersonne> itAuteurs = auteurs.iterator();
894
			ModelData selection = itAuteurs.next();
-
 
895
			
885
		while (itAuteurs.hasNext())	{
896
			PublicationAPersonne pap = new PublicationAPersonne(selection, false);
886
			PublicationAPersonne pap = itAuteurs.next();
897
			int ordre = store.indexOf(selection) + 1;
887
			int ordre = store.indexOf(pap) + 1;
898
			
888
			if (pap.getOrdreAuteurs() != String.valueOf(ordre)) {
899
			if (pap.getOrdreAuteurs() != String.valueOf(ordre)) {
889
				pap.setOrdreAuteurs(String.valueOf(ordre));
900
				pap.setOrdreAuteurs(String.valueOf(ordre));				
890
				auteursModifies.put(pap.getId(), pap);
901
				auteursModifies.put(pap.getId(), pap);
Line 969... Line 980...
969
	}
980
	}
Line 970... Line 981...
970
	
981
	
971
	private String construireIntituleAuteur() {
982
	private String construireIntituleAuteur() {
Line 972... Line 983...
972
		String intituleAuteur = "";
983
		String intituleAuteur = "";
973
		
984
		
974
		// ranger par ordre désigné par le champ 'cpuap_ordre' de la table PublicationAPersonne
985
		// rangé par ordre désigné par le champ 'cpuap_ordre' de la table PublicationAPersonne
-
 
986
		grilleAuteurs.getStore().sort("_ordre_", SortDir.ASC);
975
		grilleAuteurs.getStore().sort("ordre", SortDir.ASC);
987
		List<ModelData> auteurs = grilleAuteurs.getStore().getModels();
976
		List<PublicationAPersonne> auteurs = grilleAuteurs.getStore().getModels();
-
 
977
		
988
		Iterator<ModelData> itAuteurs = auteurs.iterator();
978
		Iterator<PublicationAPersonne> itAuteurs = auteurs.iterator();
989
				
979
		while (itAuteurs.hasNext())	{
990
		while (itAuteurs.hasNext())	{
980
			Personne personneCourante = itAuteurs.next().getPersonne();
991
			Personne personneCourante = new PublicationAPersonne(itAuteurs.next(), false).getPersonne();
981
			intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
992
			intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
982
			if (itAuteurs.hasNext())	{
993
			if (itAuteurs.hasNext())	{
983
				intituleAuteur+=", ";
994
				intituleAuteur+=", ";
Line 1108... Line 1119...
1108
			valeur = projet.getId();
1119
			valeur = projet.getId();
1109
		}
1120
		}
1110
		return valeur;
1121
		return valeur;
1111
	}
1122
	}
1112
	private void setValeurComboProjets() {
1123
	private void setValeurComboProjets() {
-
 
1124
		if (mode.equals(Formulaire.MODE_MODIFIER) && publication != null) {
1113
		if (projetsCombo.getStore() != null ) {
1125
			if (projetsCombo.getCombo().getStore() != null
1114
			if (mode.equals(Formulaire.MODE_MODIFIER) && publication != null) {
1126
					&& publication != null
1115
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", publication.getIdProjet()));
1127
					&& publication.getIdProjet() != null
1116
			} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
1128
					&& !UtilString.isEmpty(publication.getIdProjet())) {
1117
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", mediateur.getProjetId()));
1129
				projetsCombo.chargerValeurInitiale(publication.getIdProjet(), "cpr_id_projet");
1118
			}
1130
			}
-
 
1131
		} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
-
 
1132
			projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", mediateur.getProjetId()));
-
 
1133
		} else {
-
 
1134
			projetsCombo.getCombo().setValue(null);
1119
		}
1135
		}
1120
	}
1136
	}
Line 1121... Line 1137...
1121
	
1137
	
1122
	 //-------------------//
1138
	 //-------------------//
Line 1123... Line 1139...
1123
	//    Rafraichir     //------------------------------------------------------------
1139
	//    Rafraichir     //------------------------------------------------------------
1124
	
1140
	
1125
	public void rafraichir(Object nouvellesDonnees) {
1141
	public void rafraichir(Object nouvellesDonnees) {
1126
		if (nouvellesDonnees instanceof Publication) {
-
 
1127
			publication = (Publication) nouvellesDonnees;
-
 
1128
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
1142
		if (nouvellesDonnees instanceof Publication) {
1129
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
1143
			publication = (Publication) nouvellesDonnees;
1130
		} else if (nouvellesDonnees instanceof Information) {
1144
		} else if (nouvellesDonnees instanceof Information) {
1131
			rafraichirInformation((Information) nouvellesDonnees);
1145
			rafraichirInformation((Information) nouvellesDonnees);
1132
		} else {
1146
		} else {
1133
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
1147
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
Line 1134... Line -...
1134
		}
-
 
1135
	}
-
 
1136
	
-
 
1137
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
-
 
1138
		Iterator<String> it = auteurs.keySet().iterator();
-
 
1139
		while (it.hasNext()) {
-
 
1140
			PublicationAPersonne auteur = auteurs.get(it.next());
-
 
1141
			auteur.set("_etat_", aDonnee.ETAT_MODIFIE);
-
 
1142
			auteursInitialListe.put(auteur.getId(), auteur);
-
 
1143
		}
-
 
1144
		
-
 
1145
		grilleAuteurs.getStore().removeAll();
-
 
1146
		grilleAuteurs.getStore().add(auteursInitialListe.toList());
-
 
1147
		grilleAuteurs.getStore().sort("ordre", SortDir.ASC);
-
 
1148
		layout();
1148
		}
1149
	}
-
 
Line -... Line 1149...
-
 
1149
	}
1150
	
1150
	
1151
	private void rafraichirInformation(Information info) {
1151
	private void rafraichirInformation(Information info) {
1152
		String type = info.getType();
1152
		
1153
		
1153
		String type = info.getType();
1154
		if (type.equals("auteurs_enregistres")) {
1154
		if (type.equals("auteurs_enregistres")) {
Line 1177... Line 1177...
1177
				PublicationAPersonne pap = new PublicationAPersonne();
1177
				PublicationAPersonne pap = new PublicationAPersonne();
1178
				pap.setPersonne(personne);
1178
				pap.setPersonne(personne);
1179
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
1179
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
Line 1180... Line 1180...
1180
				
1180
				
1181
				// supprimer l'entrée précédente
1181
				// supprimer l'entrée précédente
1182
				PublicationAPersonne personneDansGrille = grilleAuteurs.getStore().findModel("id_personne", personne.getId());
1182
				PublicationAPersonne personneDansGrille = new PublicationAPersonne(grilleAuteurs.getStore().findModel("cp_id_personne", personne.getId()), false);
1183
				int index = grilleAuteurs.getStore().indexOf(personneDansGrille);
1183
				int index = grilleAuteurs.getStore().indexOf(personneDansGrille);
Line 1184... Line 1184...
1184
				grilleAuteurs.getStore().remove(personneDansGrille);
1184
				grilleAuteurs.getStore().remove(personneDansGrille);
1185
				
1185
				
Line 1197... Line 1197...
1197
				soumettreAuteurs();
1197
				soumettreAuteurs();
1198
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
1198
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
1199
			} else {
1199
			} else {
1200
				InfoLogger.display("Ajout d'une publication", info.toString());
1200
				InfoLogger.display("Ajout d'une publication", info.toString());
1201
			}
1201
			}
1202
		}	
1202
		}		
1203
	}
1203
	}
Line 1204... Line 1204...
1204
	
1204
	
1205
	private void repandreRafraichissement() {
1205
	private void repandreRafraichissement() {
1206
		if (vueExterneARafraichirApresValidation != null) {
1206
		if (vueExterneARafraichirApresValidation != null) {