Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1442 Rev 1487
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 242... Line 248...
242
	
248
	
243
	private Button creerBoutonAuteurUp() {
249
	private Button creerBoutonAuteurUp() {
244
		Button bouton = new Button();
250
		Button bouton = new Button();
245
		bouton.setIcon(Images.ICONES.arrowUp());
251
		bouton.setIcon(Images.ICONES.arrowUp());
246
		bouton.setEnabled(false);
252
		bouton.setEnabled(false);
247
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
253
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
248
			public void componentSelected(ButtonEvent ce) {  
254
			public void componentSelected(ButtonEvent ce) {  
Line 249... Line 255...
249
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
255
				if (grilleAuteurs.getGrille().getSelectionModel().getSelectedItem() != null) {
Line 250... Line 256...
250
					
256
					
251
					PublicationAPersonne pap = grilleAuteurs.getSelectionModel().getSelectedItem();
257
					ModelData publiAPersonneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
252
					
258
					
Line 253... Line 259...
253
					int index = grilleAuteurs.getStore().indexOf(pap);
259
					int index = grilleAuteurs.getStore().indexOf(publiAPersonneSelectionnee);
254
					int newIndex = index;
260
					int newIndex = index - 1; // l'auteur monte dans dans la liste donc son ordre diminue
255
					newIndex--;
261
					int newOrdre = newIndex + 1; // parce que index commence à zéro
-
 
262
					
256
					
263
					// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
-
 
264
					// déclenchent et posent problème
257
					// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
265
					changeOrderMarker = true;
258
					// déclenchent et posent problème
266
					
-
 
267
					publiAPersonneSelectionnee.set("_ordre_", String.valueOf(newOrdre));
259
					changeOrderMarker = true;
268
					
-
 
269
					ModelData publiAPersonneSwitch = grilleAuteurs.getStore().getAt(index-1);
260
					pap.setOrdreAuteurs(String.valueOf(newIndex+1));
270
					int newOrdrePapSwitch = newOrdre + 1;
261
					PublicationAPersonne papSwitch = grilleAuteurs.getStore().getAt(index-1);
271
 
262
					int newIndexPapSwitch = index + 1;
272
					publiAPersonneSwitch.set("_ordre_", String.valueOf(newOrdrePapSwitch));			
263
					papSwitch.setOrdreAuteurs(String.valueOf(newIndexPapSwitch));
273
					
Line 264... Line 274...
264
					grilleAuteurs.getStore().update(papSwitch);
274
					grilleAuteurs.getStore().update(publiAPersonneSwitch);
265
					grilleAuteurs.getStore().remove(pap);
275
					grilleAuteurs.getStore().remove(publiAPersonneSelectionnee);
266
					grilleAuteurs.getStore().insert(pap, newIndex);
276
					grilleAuteurs.getStore().insert(publiAPersonneSelectionnee, newIndex);
Line 279... Line 289...
279
		bouton.setEnabled(false);
289
		bouton.setEnabled(false);
280
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
290
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
281
			public void componentSelected(ButtonEvent ce) {  
291
			public void componentSelected(ButtonEvent ce) {  
282
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
292
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
Line 283... Line 293...
283
					
293
					
Line 284... Line 294...
284
					PublicationAPersonne pap = grilleAuteurs.getSelectionModel().getSelectedItem();
294
					ModelData publiAPersonneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
285
					
295
					
286
					int index = grilleAuteurs.getStore().indexOf(pap);
296
					int index = grilleAuteurs.getStore().indexOf(publiAPersonneSelectionnee);
Line 287... Line 297...
287
					int newIndex = index;
297
					int newIndex = index + 1; // l'auteur monte dans dans la liste donc son ordre diminue
288
					newIndex++;
298
					int newOrdre = newIndex + 1; // parce que index commence à zéro					
289
					
299
					
-
 
300
					// 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
301
					// déclenchent et posent problème
-
 
302
					changeOrderMarker = true;
291
					// déclenchent et posent problème
303
					
292
					changeOrderMarker = true;
304
					publiAPersonneSelectionnee.set("_ordre_", String.valueOf(newOrdre));
-
 
305
					
293
					pap.setOrdreAuteurs(String.valueOf(newIndex+1));
306
					ModelData publiAPersonneSwitch = grilleAuteurs.getStore().getAt(index+1);
-
 
307
					int newOrdrePapSwitch = index + 1;
294
					PublicationAPersonne papSwitch = grilleAuteurs.getStore().getAt(index+1);
308
 
295
					int newIndexPapSwitch = index + 1;
309
					publiAPersonneSwitch.set("_ordre_", String.valueOf(newOrdrePapSwitch));
296
					papSwitch.setOrdreAuteurs(String.valueOf(newIndexPapSwitch));
310
					
297
					grilleAuteurs.getStore().update(papSwitch);
311
					grilleAuteurs.getStore().update(publiAPersonneSwitch);
Line 298... Line 312...
298
					grilleAuteurs.getStore().remove(pap);
312
					grilleAuteurs.getStore().remove(publiAPersonneSelectionnee);
299
					grilleAuteurs.getStore().insert(pap, newIndex);
313
					grilleAuteurs.getStore().insert(publiAPersonneSelectionnee, newIndex);
300
					changeOrderMarker = false;
314
					changeOrderMarker = false;
Line 321... Line 335...
321
	private Button creerBoutonModifier() {
335
	private Button creerBoutonModifier() {
322
		Button bouton = new Button(i18nC.modifier());
336
		Button bouton = new Button(i18nC.modifier());
323
		bouton.setIcon(Images.ICONES.vcardModifier());
337
		bouton.setIcon(Images.ICONES.vcardModifier());
324
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
338
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
325
			public void componentSelected(ButtonEvent ce) {  
339
			public void componentSelected(ButtonEvent ce) {  
326
				Personne personneSaisieSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem().getPersonne();
340
				Personne personneSaisieSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false).getPersonne();
Line 327... Line 341...
327
				
341
				
328
				if (personneSaisieSelectionnee == null) {
342
				if (personneSaisieSelectionnee == null) {
329
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
343
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
330
				} else {
344
				} else {
Line 337... Line 351...
337
	}
351
	}
Line 338... Line 352...
338
	
352
	
339
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
353
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
340
		String personneId = null;
354
		String personneId = null;
341
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
355
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
342
			Personne personneSaisieSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem().getPersonne();
356
			Personne personneSaisieSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false).getPersonne();
343
			personneId = personneSaisieSelectionnee.getId();
357
			personneId = personneSaisieSelectionnee.getId();
Line 344... Line 358...
344
		}
358
		}
345
		
359
		
Line 391... Line 405...
391
	private Button creerBoutonSupprimer() {
405
	private Button creerBoutonSupprimer() {
392
		Button bouton = new Button(i18nC.supprimer());
406
		Button bouton = new Button(i18nC.supprimer());
393
		bouton.setIcon(Images.ICONES.vcardSupprimer());
407
		bouton.setIcon(Images.ICONES.vcardSupprimer());
394
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
408
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
395
			public void componentSelected(ButtonEvent ce) {
409
			public void componentSelected(ButtonEvent ce) {
396
				PublicationAPersonne personneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
410
				PublicationAPersonne personneSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false);
397
				if (personneSelectionnee == null) {
411
				if (personneSelectionnee == null) {
398
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
412
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
399
				} else {
413
				} else {
400
					supprimerDansGrille(personneSelectionnee);
414
					supprimerDansGrille(personneSelectionnee);
401
				}
415
				}
Line 445... Line 459...
445
		personnesSaisiesComboBox.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
459
		personnesSaisiesComboBox.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
446
			public void handleEvent(BaseEvent be) {		
460
			public void handleEvent(BaseEvent be) {		
447
				if (personnesSaisiesComboBox.getValeur() instanceof ModelData) {
461
				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
462
					// 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());
463
					Personne personneSaisieSelectionnee = new Personne(personnesSaisiesComboBox.getValeur());
450
					PublicationAPersonne pap = new PublicationAPersonne();
464
					PublicationAPersonne pap = new PublicationAPersonne(false);					
451
					pap.setPersonne(personneSaisieSelectionnee);
465
					pap.setPersonne(personneSaisieSelectionnee, true);
452
					pap.setOrdreAuteurs(String.valueOf(grilleAuteurs.getStore().getCount()+1));
466
					pap.setOrdreAuteurs(String.valueOf(grilleAuteurs.getStore().getCount()+1));
453
					if (modeDeCreation != Formulaire.MODE_AJOUTER) {
467
					if (modeDeCreation != Formulaire.MODE_AJOUTER) {
454
						pap.setPublicationLiee(publication);
468
						pap.setPublicationLiee(publication);
455
						pap.setIdPublication(publicationId);
469
						pap.setIdPublication(publicationId);
456
					}
470
					}
Line 519... Line 533...
519
		} else {
533
		} else {
520
			Info.display("Information", "Vous devez sélectionner une personne");
534
			Info.display("Information", "Vous devez sélectionner une personne");
521
		}
535
		}
522
	}
536
	}
Line 523... Line 537...
523
	
537
	
Line -... Line 538...
-
 
538
	private GrillePaginable<ModelData> creerGrilleAuteurs() {
-
 
539
		
524
	private EditorGrid<PublicationAPersonne> creerGrilleAuteurs() {
540
		// ModelType
-
 
541
		ModelType modelTypePersonnesAPublication = new ModelType();
-
 
542
		modelTypePersonnesAPublication.setRoot("publicationsAPersonne");
-
 
543
		modelTypePersonnesAPublication.setTotalName("nbElements");
-
 
544
		modelTypePersonnesAPublication.addField("cpuap_id_personne");
-
 
545
		modelTypePersonnesAPublication.addField("cpuap_id_publication");
-
 
546
		modelTypePersonnesAPublication.addField("cpuap_id_role");
-
 
547
		modelTypePersonnesAPublication.addField("cpuap_ordre");
-
 
548
		modelTypePersonnesAPublication.addField("cp_id_personne");
-
 
549
		modelTypePersonnesAPublication.addField("cp_fmt_nom_complet");
-
 
550
		modelTypePersonnesAPublication.addField("cp_nom");
-
 
551
		modelTypePersonnesAPublication.addField("cp_prenom");
-
 
552
		modelTypePersonnesAPublication.addField("cp_id_personne");
-
 
553
		modelTypePersonnesAPublication.addField("cp_code_postal");
Line -... Line 554...
-
 
554
		modelTypePersonnesAPublication.addField("cp_ville");
-
 
555
		modelTypePersonnesAPublication.addField("cp_truk_courriel");
-
 
556
		
-
 
557
		// Proxy
-
 
558
		ProxyPersonnesAPublication<ModelData> proxyPersonnesAPublication = new ProxyPersonnesAPublication<ModelData>(null, publicationId);		
-
 
559
 
-
 
560
		// Colonnes
525
		
561
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
526
		ListStore<PublicationAPersonne> storeGrilleAuteurs = new ListStore<PublicationAPersonne>();
562
		ColumnConfig columnOrdre = new ColumnConfig("_ordre_", i18nC.ordre(), 15);
527
		
563
		colonnes.add(columnOrdre);
-
 
564
		colonnes.add(new ColumnConfig("cp_fmt_nom_complet", i18nC.personneNomComplet(), 150));
-
 
565
		colonnes.add(new ColumnConfig("cp_code_postal", i18nC.personneCodePostal(), 150));
528
		// ADD Listener ------------------------------------------------------------------------------------
566
		colonnes.add(new ColumnConfig("cp_ville", i18nC.personneVille(), 75));
-
 
567
		colonnes.add(new ColumnConfig("cp_truk_courriel", i18nC.personneCourriel(), 75));		
-
 
568
		
529
		storeGrilleAuteurs.addListener(Store.Add, new Listener<StoreEvent<PublicationAPersonne>>() {
569
		// Champs de traitement
-
 
570
		HashMap<String, String> virtualFields = new HashMap<String, String>();
530
			public void handleEvent(StoreEvent<PublicationAPersonne> ce) {
571
		virtualFields.put("_ordre_", "cpuap_ordre");
-
 
572
		
-
 
573
		// Modele de selection
531
				if (!changeOrderMarker) {
574
		GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>();
532
					
575
		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
576
			public void selectionChanged(SelectionChangedEvent<ModelData> se) {
534
					ListStore<PublicationAPersonne> auteursStore = (ListStore<PublicationAPersonne>)ce.getSource();
577
				ModelData papSelectionnee = grilleAuteurs.getGrille().getSelectionModel().getSelectedItem();
-
 
578
				int index = grilleAuteurs.getStore().indexOf(papSelectionnee);
535
					PublicationAPersonne pap = auteursStore.getAt(ce.getIndex());
579
				
-
 
580
				if (index >= 1) boutonAuteurUp.setEnabled(true);
-
 
581
				else boutonAuteurUp.setEnabled(false);
-
 
582
				if ((index+1) < grilleAuteurs.getStore().getCount()) boutonAuteurDown.setEnabled(true);
-
 
583
				else boutonAuteurDown.setEnabled(false);
-
 
584
			}
-
 
585
		});
-
 
586
		
-
 
587
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
-
 
588
		
-
 
589
		// Grille
536
					
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
					}
Line 576... Line -...
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));
-
 
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 1123... Line 1134...
1123
	//    Rafraichir     //------------------------------------------------------------
1134
	//    Rafraichir     //------------------------------------------------------------
Line 1124... Line 1135...
1124
	
1135
	
1125
	public void rafraichir(Object nouvellesDonnees) {
1136
	public void rafraichir(Object nouvellesDonnees) {
1126
		if (nouvellesDonnees instanceof Publication) {
1137
		if (nouvellesDonnees instanceof Publication) {
1127
			publication = (Publication) nouvellesDonnees;
-
 
1128
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
-
 
1129
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
1138
			publication = (Publication) nouvellesDonnees;
1130
		} else if (nouvellesDonnees instanceof Information) {
1139
		} else if (nouvellesDonnees instanceof Information) {
1131
			rafraichirInformation((Information) nouvellesDonnees);
1140
			rafraichirInformation((Information) nouvellesDonnees);
1132
		} else {
1141
		} else {
1133
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
1142
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
1134
		}
1143
		}
Line 1135... Line -...
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();
-
 
1149
	}
1144
	}
1150
	
-
 
Line -... Line 1145...
-
 
1145
	
1151
	private void rafraichirInformation(Information info) {
1146
	private void rafraichirInformation(Information info) {
1152
		String type = info.getType();
1147
		
1153
		
1148
		String type = info.getType();
1154
		if (type.equals("auteurs_enregistres")) {
1149
		if (type.equals("auteurs_enregistres")) {
1155
			miseAJourAuteursInitialListe();
1150
			miseAJourAuteursInitialListe();
Line 1177... Line 1172...
1177
				PublicationAPersonne pap = new PublicationAPersonne();
1172
				PublicationAPersonne pap = new PublicationAPersonne();
1178
				pap.setPersonne(personne);
1173
				pap.setPersonne(personne);
1179
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
1174
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
Line 1180... Line 1175...
1180
				
1175
				
1181
				// supprimer l'entrée précédente
1176
				// supprimer l'entrée précédente
1182
				PublicationAPersonne personneDansGrille = grilleAuteurs.getStore().findModel("id_personne", personne.getId());
1177
				PublicationAPersonne personneDansGrille = new PublicationAPersonne(grilleAuteurs.getStore().findModel("cp_id_personne", personne.getId()), false);
1183
				int index = grilleAuteurs.getStore().indexOf(personneDansGrille);
1178
				int index = grilleAuteurs.getStore().indexOf(personneDansGrille);
Line 1184... Line 1179...
1184
				grilleAuteurs.getStore().remove(personneDansGrille);
1179
				grilleAuteurs.getStore().remove(personneDansGrille);
1185
				
1180
				
Line 1197... Line 1192...
1197
				soumettreAuteurs();
1192
				soumettreAuteurs();
1198
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
1193
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
1199
			} else {
1194
			} else {
1200
				InfoLogger.display("Ajout d'une publication", info.toString());
1195
				InfoLogger.display("Ajout d'une publication", info.toString());
1201
			}
1196
			}
1202
		}	
1197
		}		
1203
	}
1198
	}
Line 1204... Line 1199...
1204
	
1199
	
1205
	private void repandreRafraichissement() {
1200
	private void repandreRafraichissement() {
1206
		if (vueExterneARafraichirApresValidation != null) {
1201
		if (vueExterneARafraichirApresValidation != null) {