Subversion Repositories eFlore/Applications.coel

Rev

Rev 1764 | Rev 1878 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1764 Rev 1779
1
package org.tela_botanica.client.vues.publication;
1
package org.tela_botanica.client.vues.publication;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.HashMap;
4
import java.util.HashMap;
5
import java.util.Iterator;
5
import java.util.Iterator;
6
import java.util.List;
6
import java.util.List;
7
 
7
 
8
import org.tela_botanica.client.ComposantClass;
8
import org.tela_botanica.client.ComposantClass;
9
import org.tela_botanica.client.Mediateur;
9
import org.tela_botanica.client.Mediateur;
10
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
10
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
11
import org.tela_botanica.client.composants.GrillePaginable;
11
import org.tela_botanica.client.composants.GrillePaginable;
12
import org.tela_botanica.client.composants.InfoLogger;
12
import org.tela_botanica.client.composants.InfoLogger;
13
import org.tela_botanica.client.composants.pagination.ProxyPersonnes;
13
import org.tela_botanica.client.composants.pagination.ProxyPersonnes;
14
import org.tela_botanica.client.composants.pagination.ProxyPersonnesAPublication;
14
import org.tela_botanica.client.composants.pagination.ProxyPersonnesAPublication;
15
import org.tela_botanica.client.composants.pagination.ProxyStructures;
15
import org.tela_botanica.client.composants.pagination.ProxyStructures;
16
import org.tela_botanica.client.images.Images;
16
import org.tela_botanica.client.images.Images;
17
import org.tela_botanica.client.interfaces.Rafraichissable;
17
import org.tela_botanica.client.interfaces.Rafraichissable;
18
import org.tela_botanica.client.modeles.Information;
18
import org.tela_botanica.client.modeles.Information;
19
import org.tela_botanica.client.modeles.MenuApplicationId;
19
import org.tela_botanica.client.modeles.MenuApplicationId;
20
import org.tela_botanica.client.modeles.aDonnee;
20
import org.tela_botanica.client.modeles.aDonnee;
21
import org.tela_botanica.client.modeles.personne.Personne;
21
import org.tela_botanica.client.modeles.personne.Personne;
22
import org.tela_botanica.client.modeles.publication.Publication;
22
import org.tela_botanica.client.modeles.publication.Publication;
23
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
23
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
24
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
24
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
25
import org.tela_botanica.client.modeles.structure.Structure;
25
import org.tela_botanica.client.modeles.structure.Structure;
26
import org.tela_botanica.client.synchronisation.Sequenceur;
26
import org.tela_botanica.client.synchronisation.Sequenceur;
27
import org.tela_botanica.client.util.Debug;
27
import org.tela_botanica.client.util.Debug;
28
import org.tela_botanica.client.util.Log;
28
import org.tela_botanica.client.util.Log;
29
import org.tela_botanica.client.util.Pattern;
29
import org.tela_botanica.client.util.Pattern;
30
import org.tela_botanica.client.util.UtilArray;
30
import org.tela_botanica.client.util.UtilArray;
31
import org.tela_botanica.client.util.UtilString;
31
import org.tela_botanica.client.util.UtilString;
32
import org.tela_botanica.client.vues.FenetreForm;
32
import org.tela_botanica.client.vues.FenetreForm;
33
import org.tela_botanica.client.vues.Formulaire;
33
import org.tela_botanica.client.vues.Formulaire;
34
import org.tela_botanica.client.vues.FormulaireBarreValidation;
34
import org.tela_botanica.client.vues.FormulaireBarreValidation;
35
import org.tela_botanica.client.vues.personne.PersonneForm;
35
import org.tela_botanica.client.vues.personne.PersonneForm;
36
 
36
 
37
import com.extjs.gxt.ui.client.Style.Scroll;
37
import com.extjs.gxt.ui.client.Style.Scroll;
38
import com.extjs.gxt.ui.client.Style.SortDir;
38
import com.extjs.gxt.ui.client.Style.SortDir;
39
import com.extjs.gxt.ui.client.data.BaseModelData;
39
import com.extjs.gxt.ui.client.data.BaseModelData;
40
import com.extjs.gxt.ui.client.data.LoadEvent;
40
import com.extjs.gxt.ui.client.data.LoadEvent;
41
import com.extjs.gxt.ui.client.data.Loader;
41
import com.extjs.gxt.ui.client.data.Loader;
42
import com.extjs.gxt.ui.client.data.ModelData;
42
import com.extjs.gxt.ui.client.data.ModelData;
43
import com.extjs.gxt.ui.client.data.ModelType;
43
import com.extjs.gxt.ui.client.data.ModelType;
44
import com.extjs.gxt.ui.client.event.BaseEvent;
44
import com.extjs.gxt.ui.client.event.BaseEvent;
45
import com.extjs.gxt.ui.client.event.ButtonEvent;
45
import com.extjs.gxt.ui.client.event.ButtonEvent;
46
import com.extjs.gxt.ui.client.event.Events;
46
import com.extjs.gxt.ui.client.event.Events;
47
import com.extjs.gxt.ui.client.event.Listener;
47
import com.extjs.gxt.ui.client.event.Listener;
48
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
48
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
49
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
49
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
50
import com.extjs.gxt.ui.client.event.SelectionListener;
50
import com.extjs.gxt.ui.client.event.SelectionListener;
51
import com.extjs.gxt.ui.client.store.ListStore;
51
import com.extjs.gxt.ui.client.store.ListStore;
52
import com.extjs.gxt.ui.client.store.Store;
52
import com.extjs.gxt.ui.client.store.Store;
53
import com.extjs.gxt.ui.client.store.StoreEvent;
53
import com.extjs.gxt.ui.client.store.StoreEvent;
54
import com.extjs.gxt.ui.client.widget.ContentPanel;
54
import com.extjs.gxt.ui.client.widget.ContentPanel;
55
import com.extjs.gxt.ui.client.widget.Info;
55
import com.extjs.gxt.ui.client.widget.Info;
56
import com.extjs.gxt.ui.client.widget.LayoutContainer;
56
import com.extjs.gxt.ui.client.widget.LayoutContainer;
57
import com.extjs.gxt.ui.client.widget.MessageBox;
57
import com.extjs.gxt.ui.client.widget.MessageBox;
58
import com.extjs.gxt.ui.client.widget.Text;
58
import com.extjs.gxt.ui.client.widget.Text;
59
import com.extjs.gxt.ui.client.widget.button.Button;
59
import com.extjs.gxt.ui.client.widget.button.Button;
60
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
60
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
61
import com.extjs.gxt.ui.client.widget.form.Field;
61
import com.extjs.gxt.ui.client.widget.form.Field;
62
import com.extjs.gxt.ui.client.widget.form.FieldSet;
62
import com.extjs.gxt.ui.client.widget.form.FieldSet;
63
import com.extjs.gxt.ui.client.widget.form.FormPanel;
63
import com.extjs.gxt.ui.client.widget.form.FormPanel;
64
import com.extjs.gxt.ui.client.widget.form.TextField;
64
import com.extjs.gxt.ui.client.widget.form.TextField;
65
import com.extjs.gxt.ui.client.widget.form.Validator;
65
import com.extjs.gxt.ui.client.widget.form.Validator;
66
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
66
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
67
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
67
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
68
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
68
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
69
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
69
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
70
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
70
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
71
import com.extjs.gxt.ui.client.widget.layout.FormData;
71
import com.extjs.gxt.ui.client.widget.layout.FormData;
72
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
72
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
73
import com.extjs.gxt.ui.client.widget.layout.RowData;
73
import com.extjs.gxt.ui.client.widget.layout.RowData;
74
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
74
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
75
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
75
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
76
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
76
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
77
import com.google.gwt.core.client.GWT;
77
import com.google.gwt.core.client.GWT;
78
 
78
 
79
 
79
 
80
public class PublicationForm extends Formulaire implements Rafraichissable {
80
public class PublicationForm extends Formulaire implements Rafraichissable {
81
	
81
	
82
	  //-------------//
82
	  //-------------//
83
	 //  ATTRIBUTS	//
83
	 //  ATTRIBUTS	//
84
	//-------------//
84
	//-------------//
85
	
85
	
86
	/** Publication **/
86
	/** Publication **/
87
	// on se sert d'un objet Publication lorsque l'on est en mode MODIFIER
87
	// on se sert d'un objet Publication lorsque l'on est en mode MODIFIER
88
	private Publication publication;
88
	private Publication publication;
89
	// on se sert de l'identifiant d'une publication lorsque l'on est en mode AJOUTER
89
	// on se sert de l'identifiant d'une publication lorsque l'on est en mode AJOUTER
90
	private String publicationId = null;
90
	private String publicationId = null;
91
	
91
	
92
	/** Auteurs **/
92
	/** Auteurs **/
93
	private PublicationAPersonneListe auteursInitialListe = null;
93
	private PublicationAPersonneListe auteursInitialListe = null;
94
	private PublicationAPersonneListe auteursAjoutes = null;
94
	private PublicationAPersonneListe auteursAjoutes = null;
95
	private PublicationAPersonneListe auteursSupprimes = null;
95
	private PublicationAPersonneListe auteursSupprimes = null;
96
	private PublicationAPersonneListe auteursModifies = null;
96
	private PublicationAPersonneListe auteursModifies = null;
97
	
97
	
98
	private ContentPanel auteursFieldset = null;
98
	private ContentPanel auteursFieldset = null;
99
	
99
	
100
	private FieldSet generalitesFieldset = null;
100
	private FieldSet generalitesFieldset = null;
101
	private TextField<String> titreChp = null;
101
	private TextField<String> titreChp = null;
102
	private TextField<String> collectionChp = null;
102
	private TextField<String> collectionChp = null;
103
	private TextField<String> uriChp = null;
103
	private TextField<String> uriChp = null;
104
	
104
	
105
	private FieldSet editionFieldset = null;
105
	private FieldSet editionFieldset = null;
106
	private ChampComboBoxRechercheTempsReelPaginable editeurCombobox = null;
106
	private ChampComboBoxRechercheTempsReelPaginable editeurCombobox = null;
107
	private TextField<String> datePublicationChp = null;
107
	private TextField<String> datePublicationChp = null;
108
	private TextField<String> tomeChp = null;
108
	private TextField<String> tomeChp = null;
109
	private TextField<String> fasciculeChp = null;
109
	private TextField<String> fasciculeChp = null;
110
	private TextField<String> pagesChp = null;
110
	private TextField<String> pagesChp = null;
111
	
111
	
112
	private LayoutContainer zoneHaut, zoneBas;
112
	private LayoutContainer zoneHaut, zoneBas;
113
	
113
	
114
	private ToolBar barreOutils = null;
114
	private ToolBar barreOutils = null;
115
	private GrillePaginable<ModelData> grilleAuteurs;
115
	private GrillePaginable<ModelData> grilleAuteurs;
116
	private ChampComboBoxRechercheTempsReelPaginable personnesSaisiesComboBox = null;
116
	private ChampComboBoxRechercheTempsReelPaginable personnesSaisiesComboBox = null;
117
	private Button personnesBoutonSupprimer = null;
117
	private Button personnesBoutonSupprimer = null;
118
	private Button personnesBoutonModifier = null;
118
	private Button personnesBoutonModifier = null;
119
	private Button boutonAuteurUp = null;
119
	private Button boutonAuteurUp = null;
120
	private Button boutonAuteurDown = null;
120
	private Button boutonAuteurDown = null;
121
	
121
	
122
	private FenetreForm fenetreFormulaire = null;
122
	private FenetreForm fenetreFormulaire = null;
123
	private Sequenceur sequenceur;
123
	private Sequenceur sequenceur;
124
	
124
	
125
	private String modeDeCreation = null;
125
	private String modeDeCreation = null;
126
	boolean changeOrderMarker = false;
126
	boolean changeOrderMarker = false;
127
	
127
	
128
	
128
	
129
	//+----------------------------------------------------------------------------------------------------------------+
129
	//+----------------------------------------------------------------------------------------------------------------+
130
	//    Constructeurs     
130
	//    Constructeurs     
131
	
131
	
132
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
132
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
133
		initialiserPublicationForm(mediateurCourrant, publicationId);
133
		initialiserPublicationForm(mediateurCourrant, publicationId);
134
	}
134
	}
135
 
135
 
136
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
136
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
137
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
137
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
138
		initialiserPublicationForm(mediateurCourrant, publicationId);
138
		initialiserPublicationForm(mediateurCourrant, publicationId);
139
	}
139
	}
140
 
140
 
141
	
141
	
142
	//+----------------------------------------------------------------------------------------------------------------+
142
	//+----------------------------------------------------------------------------------------------------------------+
143
	//    Initialisation
143
	//    Initialisation
144
	
144
	
145
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
145
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
146
		sequenceur = new Sequenceur();
146
		sequenceur = new Sequenceur();
147
		publication = new Publication();
147
		publication = new Publication();
148
		publication.setId(publicationId);
148
		publication.setId(publicationId);
149
		this.publicationId = publicationId;
149
		this.publicationId = publicationId;
150
		auteursInitialListe = new PublicationAPersonneListe();
150
		auteursInitialListe = new PublicationAPersonneListe();
151
		initialiserAuteurs();	// Crée les listes d'auteurs ajoutés et supprimés
151
		initialiserAuteurs();	// Crée les listes d'auteurs ajoutés et supprimés
152
		
152
		
153
		// Si 'publicationId' est vide alors on est en mode "AJOUTER", sinon on est en mode "MODIFIER" 
153
		// Si 'publicationId' est vide alors on est en mode "AJOUTER", sinon on est en mode "MODIFIER" 
154
		modeDeCreation = (UtilString.isEmpty(publicationId) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
154
		modeDeCreation = (UtilString.isEmpty(publicationId) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
155
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
155
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
156
		panneauFormulaire.setLayout(new RowLayout());
156
		panneauFormulaire.setLayout(new RowLayout());
157
		panneauFormulaire.setStyleAttribute("padding", "0");
157
		panneauFormulaire.setStyleAttribute("padding", "0");
158
		panneauFormulaire.setHeight(600);
158
		panneauFormulaire.setHeight(600);
159
		
159
		
160
		zoneHaut = new LayoutContainer(new FitLayout());
160
		zoneHaut = new LayoutContainer(new FitLayout());
161
		zoneBas = new LayoutContainer(new FlowLayout());
161
		zoneBas = new LayoutContainer(new FlowLayout());
162
		panneauFormulaire.add(zoneHaut, new RowData(0.99, 0.45));
162
		panneauFormulaire.add(zoneHaut, new RowData(0.99, 0.45));
163
		panneauFormulaire.add(zoneBas, new RowData(0.99, 0.55));
163
		panneauFormulaire.add(zoneBas, new RowData(0.99, 0.55));
164
		panneauFormulaire.setScrollMode(Scroll.AUTO);
164
		panneauFormulaire.setScrollMode(Scroll.AUTO);
165
		genererTitreFormulaire();
165
		genererTitreFormulaire();
166
		
166
		
167
		creerZoneAuteurs();
167
		creerZoneAuteurs();
168
		zoneHaut.add(auteursFieldset);
168
		zoneHaut.add(auteursFieldset);
169
		
169
		
170
		creerZoneGeneralites();
170
		creerZoneGeneralites();
171
		zoneBas.add(generalitesFieldset);
171
		zoneBas.add(generalitesFieldset);
172
		
172
		
173
		creerZoneEdition();
173
		creerZoneEdition();
174
		zoneBas.add(editionFieldset);
174
		zoneBas.add(editionFieldset);
175
		
175
		
176
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
176
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
177
			mediateurCourrant.selectionnerPublication(this, publicationId, sequenceur);
177
			mediateurCourrant.selectionnerPublication(this, publicationId, sequenceur);
178
			sequenceur.enfilerRafraichissement(this, new Information("chargement_modifier_ok"));
178
			sequenceur.enfilerRafraichissement(this, new Information("chargement_modifier_ok"));
179
		}
179
		}
180
	}
180
	}
181
 
181
 
182
	private void initialiserAuteurs() {
182
	private void initialiserAuteurs() {
183
		auteursAjoutes = new PublicationAPersonneListe();
183
		auteursAjoutes = new PublicationAPersonneListe();
184
		auteursSupprimes = new PublicationAPersonneListe();
184
		auteursSupprimes = new PublicationAPersonneListe();
185
		auteursModifies = new PublicationAPersonneListe();
185
		auteursModifies = new PublicationAPersonneListe();
186
	}
186
	}
187
	
187
	
188
	//+----------------------------------------------------------------------------------------------------------------+
188
	//+----------------------------------------------------------------------------------------------------------------+
189
	//    User Interface
189
	//    User Interface
190
	
190
	
191
	private ToolBar creerBarreOutilsGrille() {
191
	private ToolBar creerBarreOutilsGrille() {
192
		ToolBar barreOutils = new ToolBar();  
192
		ToolBar barreOutils = new ToolBar();  
193
		
-
 
194
		Button ajouterBouton = creerBoutonAjouter();
-
 
195
		barreOutils.add(ajouterBouton);
-
 
196
		
193
		
197
		creerComboBoxPersonnesSaisies();
194
		creerComboBoxPersonnesSaisies();
198
		barreOutils.add(personnesSaisiesComboBox);
195
		barreOutils.add(personnesSaisiesComboBox);
-
 
196
		
-
 
197
		personnesSaisiesComboBox.getCombo().setEmptyText("Rechercher et sélectionner une personne existante dans la base");
-
 
198
		
-
 
199
		barreOutils.add(new Text(" ou "));
-
 
200
		
-
 
201
		Button ajouterBouton = creerBoutonAjouter();
-
 
202
		barreOutils.add(ajouterBouton);
199
		
203
		
200
		barreOutils.add(new SeparatorToolItem());
204
		barreOutils.add(new SeparatorToolItem());
201
		
205
		
202
		personnesBoutonModifier = creerBoutonModifier();
206
		personnesBoutonModifier = creerBoutonModifier();
203
		barreOutils.add(personnesBoutonModifier);
207
		barreOutils.add(personnesBoutonModifier);
204
		
208
		
205
		barreOutils.add(new SeparatorToolItem());
209
		barreOutils.add(new SeparatorToolItem());
206
		
210
		
207
		personnesBoutonSupprimer = creerBoutonSupprimer();
211
		personnesBoutonSupprimer = creerBoutonSupprimer();
208
		barreOutils.add(personnesBoutonSupprimer);		
212
		barreOutils.add(personnesBoutonSupprimer);		
209
		
213
		
210
		barreOutils.add(new SeparatorToolItem());
214
		barreOutils.add(new SeparatorToolItem());
211
		
215
		
212
		Button rafraichirBouton = creerBoutonRafraichir();
216
		Button rafraichirBouton = creerBoutonRafraichir();
213
		barreOutils.add(rafraichirBouton);
217
		barreOutils.add(rafraichirBouton);
214
		
218
		
215
		barreOutils.add(new SeparatorToolItem());
219
		barreOutils.add(new SeparatorToolItem());
216
		
220
		
217
		barreOutils.add(new Text(i18nC.deplacerAuteur()));
221
		barreOutils.add(new Text(i18nC.deplacerAuteur()));
218
		boutonAuteurUp = creerBoutonAuteurUp();
222
		boutonAuteurUp = creerBoutonAuteurUp();
219
		barreOutils.add(boutonAuteurUp);
223
		barreOutils.add(boutonAuteurUp);
220
		boutonAuteurDown = creerBoutonAuteurDown();
224
		boutonAuteurDown = creerBoutonAuteurDown();
221
		barreOutils.add(boutonAuteurDown);
225
		barreOutils.add(boutonAuteurDown);
222
		
226
		
223
		return barreOutils;
227
		return barreOutils;
224
	}
228
	}
225
	
229
	
226
	public void actualiserEtatBoutonsBarreOutils() {
230
	public void actualiserEtatBoutonsBarreOutils() {
227
		// Activation des boutons si la grille contient un élément
231
		// Activation des boutons si la grille contient un élément
228
		if (grilleAuteurs.getStore().getCount() > 0) {  
232
		if (grilleAuteurs.getStore().getCount() > 0) {  
229
			personnesBoutonSupprimer.enable();
233
			personnesBoutonSupprimer.enable();
230
			personnesBoutonModifier.enable();
234
			personnesBoutonModifier.enable();
231
		}
235
		}
232
		// Désactivation des boutons si la grille ne contient plus d'élément
236
		// Désactivation des boutons si la grille ne contient plus d'élément
233
		if (grilleAuteurs.getStore().getCount() == 0) {  
237
		if (grilleAuteurs.getStore().getCount() == 0) {  
234
			personnesBoutonSupprimer.disable();
238
			personnesBoutonSupprimer.disable();
235
			personnesBoutonModifier.disable();
239
			personnesBoutonModifier.disable();
236
		}
240
		}
237
	}
241
	}
238
	
242
	
239
	private Button creerBoutonAuteurUp() {
243
	private Button creerBoutonAuteurUp() {
240
		Button bouton = new Button();
244
		Button bouton = new Button();
241
		bouton.setIcon(Images.ICONES.arrowUp());
245
		bouton.setIcon(Images.ICONES.arrowUp());
242
		bouton.setEnabled(false);
246
		bouton.setEnabled(false);
243
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
247
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
244
			public void componentSelected(ButtonEvent ce) {  
248
			public void componentSelected(ButtonEvent ce) {  
245
				if (grilleAuteurs.getGrille().getSelectionModel().getSelectedItem() != null) {
249
				if (grilleAuteurs.getGrille().getSelectionModel().getSelectedItem() != null) {
246
					mettreAJourOrdreAuteur(-1);
250
					mettreAJourOrdreAuteur(-1);
247
				}
251
				}
248
			}  
252
			}  
249
		});
253
		});
250
		return bouton;
254
		return bouton;
251
	}
255
	}
252
	
256
	
253
	private Button creerBoutonAuteurDown() {
257
	private Button creerBoutonAuteurDown() {
254
		Button bouton = new Button();
258
		Button bouton = new Button();
255
		bouton.setIcon(Images.ICONES.arrowDown());
259
		bouton.setIcon(Images.ICONES.arrowDown());
256
		bouton.setEnabled(false);
260
		bouton.setEnabled(false);
257
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
261
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
258
			public void componentSelected(ButtonEvent ce) {  
262
			public void componentSelected(ButtonEvent ce) {  
259
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
263
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
260
					mettreAJourOrdreAuteur(+1);
264
					mettreAJourOrdreAuteur(+1);
261
				}
265
				}
262
			}  
266
			}  
263
		});
267
		});
264
		return bouton;
268
		return bouton;
265
	}
269
	}
266
	
270
	
267
	private void formaterOrdreAuteurs() {
271
	private void formaterOrdreAuteurs() {
268
		List<ModelData> auteurs = grilleAuteurs.getStore().getModels();
272
		List<ModelData> auteurs = grilleAuteurs.getStore().getModels();
269
		Iterator<ModelData> itAuteurs = auteurs.iterator();
273
		Iterator<ModelData> itAuteurs = auteurs.iterator();
270
		while (itAuteurs.hasNext())	{
274
		while (itAuteurs.hasNext())	{
271
			ModelData selection = itAuteurs.next();
275
			ModelData selection = itAuteurs.next();
272
			PublicationAPersonne pap = new PublicationAPersonne(selection, false);
276
			PublicationAPersonne pap = new PublicationAPersonne(selection, false);
273
			
277
			
274
			String ordre = String.valueOf(grilleAuteurs.getStore().indexOf(selection) + 1);
278
			String ordre = String.valueOf(grilleAuteurs.getStore().indexOf(selection) + 1);
275
			if (pap.getOrdreAuteurs() != ordre) {
279
			if (pap.getOrdreAuteurs() != ordre) {
276
				selection.set("_ordre_", ordre);
280
				selection.set("_ordre_", ordre);
277
				grilleAuteurs.getStore().update(selection);
281
				grilleAuteurs.getStore().update(selection);
278
				pap.setOrdreAuteurs(ordre);
282
				pap.setOrdreAuteurs(ordre);
279
				auteursModifies.put(pap.getId(), pap);
283
				auteursModifies.put(pap.getId(), pap);
280
			}
284
			}
281
		} 
285
		} 
282
	}
286
	}
283
	
287
	
284
	private void mettreAJourOrdreAuteur(int monterOuDescendre) {
288
	private void mettreAJourOrdreAuteur(int monterOuDescendre) {
285
		ModelData publiAPersonneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
289
		ModelData publiAPersonneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
286
		int index = grilleAuteurs.getStore().indexOf(publiAPersonneSelectionnee);
290
		int index = grilleAuteurs.getStore().indexOf(publiAPersonneSelectionnee);
287
		int nouvelIndex = index + monterOuDescendre;
291
		int nouvelIndex = index + monterOuDescendre;
288
		
292
		
289
		if (verifierOrdreAuteur(nouvelIndex)) {
293
		if (verifierOrdreAuteur(nouvelIndex)) {
290
			// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
294
			// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
291
			// déclenchent et posent problème
295
			// déclenchent et posent problème
292
			changeOrderMarker = true;
296
			changeOrderMarker = true;
293
			
297
			
294
			int indexAPermuter = index + monterOuDescendre;
298
			int indexAPermuter = index + monterOuDescendre;
295
			ModelData publiAPersonneSwitch = grilleAuteurs.getStore().getAt(indexAPermuter);
299
			ModelData publiAPersonneSwitch = grilleAuteurs.getStore().getAt(indexAPermuter);
296
			String ordreAPermuter = String.valueOf((indexAPermuter + 1) - monterOuDescendre);
300
			String ordreAPermuter = String.valueOf((indexAPermuter + 1) - monterOuDescendre);
297
			publiAPersonneSwitch.set("_ordre_", ordreAPermuter);
301
			publiAPersonneSwitch.set("_ordre_", ordreAPermuter);
298
			grilleAuteurs.getStore().update(publiAPersonneSwitch);
302
			grilleAuteurs.getStore().update(publiAPersonneSwitch);
299
			PublicationAPersonne papSwitch = new PublicationAPersonne(publiAPersonneSwitch, false);
303
			PublicationAPersonne papSwitch = new PublicationAPersonne(publiAPersonneSwitch, false);
300
			papSwitch.setOrdreAuteurs(ordreAPermuter);
304
			papSwitch.setOrdreAuteurs(ordreAPermuter);
301
			auteursModifies.put(papSwitch.getId(), papSwitch);
305
			auteursModifies.put(papSwitch.getId(), papSwitch);
302
 
306
 
303
			grilleAuteurs.getStore().remove(publiAPersonneSelectionnee);
307
			grilleAuteurs.getStore().remove(publiAPersonneSelectionnee);
304
			String nouvelOrdre = String.valueOf((index + 1) + monterOuDescendre);
308
			String nouvelOrdre = String.valueOf((index + 1) + monterOuDescendre);
305
			publiAPersonneSelectionnee.set("_ordre_", nouvelOrdre);
309
			publiAPersonneSelectionnee.set("_ordre_", nouvelOrdre);
306
			grilleAuteurs.getStore().insert(publiAPersonneSelectionnee, nouvelIndex);
310
			grilleAuteurs.getStore().insert(publiAPersonneSelectionnee, nouvelIndex);
307
			PublicationAPersonne papSelectionnee = new PublicationAPersonne(publiAPersonneSelectionnee, false);
311
			PublicationAPersonne papSelectionnee = new PublicationAPersonne(publiAPersonneSelectionnee, false);
308
			papSelectionnee.setOrdreAuteurs(nouvelOrdre);
312
			papSelectionnee.setOrdreAuteurs(nouvelOrdre);
309
			auteursModifies.put(papSelectionnee.getId(), papSelectionnee);
313
			auteursModifies.put(papSelectionnee.getId(), papSelectionnee);
310
			changeOrderMarker = false;
314
			changeOrderMarker = false;
311
			
315
			
312
			grilleAuteurs.getSelectionModel().select(nouvelIndex, false);
316
			grilleAuteurs.getSelectionModel().select(nouvelIndex, false);
313
		}
317
		}
314
	}
318
	}
315
	
319
	
316
	private boolean verifierOrdreAuteur(int nouvelIndex) {
320
	private boolean verifierOrdreAuteur(int nouvelIndex) {
317
		int nbrElement = grilleAuteurs.getStore().getCount();
321
		int nbrElement = grilleAuteurs.getStore().getCount();
318
		boolean ok = true;
322
		boolean ok = true;
319
		if (nouvelIndex < 0 || nouvelIndex >= nbrElement) {
323
		if (nouvelIndex < 0 || nouvelIndex >= nbrElement) {
320
			ok = false;
324
			ok = false;
321
		}
325
		}
322
		return ok;
326
		return ok;
323
	}
327
	}
324
	
328
	
325
	private void activerBoutonsOrdreAuteur() {
329
	private void activerBoutonsOrdreAuteur() {
326
		ModelData papSelectionnee = grilleAuteurs.getGrille().getSelectionModel().getSelectedItem();
330
		ModelData papSelectionnee = grilleAuteurs.getGrille().getSelectionModel().getSelectedItem();
327
		int index = grilleAuteurs.getStore().indexOf(papSelectionnee);
331
		int index = grilleAuteurs.getStore().indexOf(papSelectionnee);
328
		
332
		
329
		if (index >= 1) {
333
		if (index >= 1) {
330
			boutonAuteurUp.setEnabled(true);
334
			boutonAuteurUp.setEnabled(true);
331
		} else {
335
		} else {
332
			boutonAuteurUp.setEnabled(false);
336
			boutonAuteurUp.setEnabled(false);
333
		}
337
		}
334
		
338
		
335
		if ((index+1) < grilleAuteurs.getStore().getCount()) {
339
		if ((index+1) < grilleAuteurs.getStore().getCount()) {
336
			boutonAuteurDown.setEnabled(true);
340
			boutonAuteurDown.setEnabled(true);
337
		} else {
341
		} else {
338
			boutonAuteurDown.setEnabled(false);
342
			boutonAuteurDown.setEnabled(false);
339
		}
343
		}
340
	}
344
	}
341
	
345
	
342
	private Button creerBoutonAjouter() {
346
	private Button creerBoutonAjouter() {
343
		Button bouton = new Button(i18nC.ajouter());
347
		Button bouton = new Button(i18nC.ajouter());
344
		bouton.setIcon(Images.ICONES.vcardAjouter());
348
		bouton.setIcon(Images.ICONES.vcardAjouter());
345
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
349
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
346
			public void componentSelected(ButtonEvent ce) {  
350
			public void componentSelected(ButtonEvent ce) {  
347
				fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
351
				fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
348
				fenetreFormulaire.show();
352
				fenetreFormulaire.show();
349
			}  
353
			}  
350
		});
354
		});
351
		return bouton;
355
		return bouton;
352
	}
356
	}
353
	
357
	
354
	private Button creerBoutonModifier() {
358
	private Button creerBoutonModifier() {
355
		Button bouton = new Button(i18nC.modifier());
359
		Button bouton = new Button(i18nC.modifier());
356
		bouton.setIcon(Images.ICONES.vcardModifier());
360
		bouton.setIcon(Images.ICONES.vcardModifier());
357
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
361
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
358
			public void componentSelected(ButtonEvent ce) {  
362
			public void componentSelected(ButtonEvent ce) {  
359
				Personne personneSaisieSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false).getPersonne();
363
				Personne personneSaisieSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false).getPersonne();
360
				
364
				
361
				if (personneSaisieSelectionnee == null) {
365
				if (personneSaisieSelectionnee == null) {
362
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
366
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
363
				} else {
367
				} else {
364
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
368
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
365
					fenetreFormulaire.show();
369
					fenetreFormulaire.show();
366
				}
370
				}
367
			}  
371
			}  
368
		});
372
		});
369
		return bouton;
373
		return bouton;
370
	}
374
	}
371
	
375
	
372
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
376
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
373
		String personneId = null;
377
		String personneId = null;
374
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
378
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
375
			Personne personneSaisieSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false).getPersonne();
379
			Personne personneSaisieSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false).getPersonne();
376
			personneId = personneSaisieSelectionnee.getId();
380
			personneId = personneSaisieSelectionnee.getId();
377
		}
381
		}
378
		
382
		
379
		final FenetreForm fenetre = new FenetreForm("");
383
		final FenetreForm fenetre = new FenetreForm("");
380
		final PersonneForm formulaire = creerFormulairePersonne(fenetre, personneId);
384
		final PersonneForm formulaire = creerFormulairePersonne(fenetre, personneId);
381
		fenetre.add(formulaire);
385
		fenetre.add(formulaire);
382
		return fenetre;
386
		return fenetre;
383
	}
387
	}
384
	
388
	
385
	private PersonneForm creerFormulairePersonne(final FenetreForm fenetre, final String personneId) {
389
	private PersonneForm creerFormulairePersonne(final FenetreForm fenetre, final String personneId) {
386
		PersonneForm formulairePersonne = new PersonneForm(mediateur, personneId, this);
390
		PersonneForm formulairePersonne = new PersonneForm(mediateur, personneId, this);
387
		FormPanel panneauFormulaire = formulairePersonne.getFormulaire();
391
		FormPanel panneauFormulaire = formulairePersonne.getFormulaire();
388
		fenetre.setHeadingHtml(panneauFormulaire.getHeadingHtml());
392
		fenetre.setHeadingHtml(panneauFormulaire.getHeadingHtml());
389
		panneauFormulaire.setHeaderVisible(false);
393
		panneauFormulaire.setHeaderVisible(false);
390
		panneauFormulaire.setTopComponent(null);
394
		panneauFormulaire.setTopComponent(null);
391
		
395
		
392
		// FIXME : avec GXT-2.1.0 la redéfinition du bottom component ne marche plus. Nous le cachons et en créeons un dans la fenêtre.
396
		// FIXME : avec GXT-2.1.0 la redéfinition du bottom component ne marche plus. Nous le cachons et en créeons un dans la fenêtre.
393
		panneauFormulaire.getBottomComponent().hide();
397
		panneauFormulaire.getBottomComponent().hide();
394
		SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePersonne(fenetre, formulairePersonne);
398
		SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePersonne(fenetre, formulairePersonne);
395
		final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
399
		final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
396
		fenetre.setBottomComponent(barreValidation);
400
		fenetre.setBottomComponent(barreValidation);
397
		
401
		
398
		return formulairePersonne;
402
		return formulairePersonne;
399
	}
403
	}
400
	
404
	
401
	private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePersonne(final FenetreForm fenetre, final PersonneForm formulaire) {
405
	private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePersonne(final FenetreForm fenetre, final PersonneForm formulaire) {
402
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
406
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
403
			public void componentSelected(ButtonEvent ce) {
407
			public void componentSelected(ButtonEvent ce) {
404
				String code = ((Button) ce.getComponent()).getData("code");
408
				String code = ((Button) ce.getComponent()).getData("code");
405
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
409
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
406
					if (formulaire.soumettreFormulaire()) {
410
					if (formulaire.soumettreFormulaire()) {
407
						fenetre.hide();
411
						fenetre.hide();
408
					}
412
					}
409
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
413
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
410
					formulaire.soumettreFormulaire();
414
					formulaire.soumettreFormulaire();
411
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
415
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
412
					fenetre.hide();
416
					fenetre.hide();
413
				}
417
				}
414
			}
418
			}
415
		};
419
		};
416
		
420
		
417
		return ecouteur;
421
		return ecouteur;
418
	}
422
	}
419
	
423
	
420
	private Button creerBoutonSupprimer() {
424
	private Button creerBoutonSupprimer() {
421
		Button bouton = new Button(i18nC.supprimer());
425
		Button bouton = new Button(i18nC.supprimer());
422
		bouton.setIcon(Images.ICONES.vcardSupprimer());
426
		bouton.setIcon(Images.ICONES.vcardSupprimer());
423
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
427
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
424
			public void componentSelected(ButtonEvent ce) {
428
			public void componentSelected(ButtonEvent ce) {
425
				supprimerDansGrille();
429
				supprimerDansGrille();
426
			}   
430
			}   
427
		});
431
		});
428
		return bouton;
432
		return bouton;
429
	}
433
	}
430
	
434
	
431
	private Button creerBoutonRafraichir() {
435
	private Button creerBoutonRafraichir() {
432
		Button bouton = new Button(i18nC.rafraichir());
436
		Button bouton = new Button(i18nC.rafraichir());
433
		bouton.setIcon(Images.ICONES.rafraichir());
437
		bouton.setIcon(Images.ICONES.rafraichir());
434
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
438
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
435
			public void componentSelected(ButtonEvent ce) {
439
			public void componentSelected(ButtonEvent ce) {
436
				actualiserGrille();
440
				actualiserGrille();
437
			}   
441
			}   
438
		});
442
		});
439
		return bouton;
443
		return bouton;
440
	}
444
	}
441
	
445
	
442
	private void actualiserGrille() {
446
	private void actualiserGrille() {
443
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
447
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
444
			// FIXME : c'est la merde
448
			// FIXME : c'est la merde
445
			grilleAuteurs.reload();
449
			grilleAuteurs.reload();
446
		} else {
450
		} else {
447
			grilleAuteurs.getStore().removeAll();
451
			grilleAuteurs.getStore().removeAll();
448
			layout();
452
			layout();
449
		}
453
		}
450
	}
454
	}
451
	
455
	
452
	private void creerComboBoxPersonnesSaisies() {
456
	private void creerComboBoxPersonnesSaisies() {
453
		ModelType modelTypePersonnes = new ModelType();
457
		ModelType modelTypePersonnes = new ModelType();
454
		modelTypePersonnes.setRoot("personnes");
458
		modelTypePersonnes.setRoot("personnes");
455
		modelTypePersonnes.setTotalName("nbElements");
459
		modelTypePersonnes.setTotalName("nbElements");
456
		modelTypePersonnes.addField("cp_fmt_nom_complet");
460
		modelTypePersonnes.addField("cp_fmt_nom_complet");
457
		modelTypePersonnes.addField("cp_nom");
461
		modelTypePersonnes.addField("cp_nom");
458
		modelTypePersonnes.addField("cp_prenom");
462
		modelTypePersonnes.addField("cp_prenom");
459
		modelTypePersonnes.addField("cp_id_personne");
463
		modelTypePersonnes.addField("cp_id_personne");
460
		modelTypePersonnes.addField("cp_code_postal");
464
		modelTypePersonnes.addField("cp_code_postal");
461
		modelTypePersonnes.addField("cp_ville");
465
		modelTypePersonnes.addField("cp_ville");
462
		modelTypePersonnes.addField("cp_truk_courriel");
466
		modelTypePersonnes.addField("cp_truk_courriel");
463
		
467
		
464
		String displayNamePersonnes = "cp_fmt_nom_complet";
468
		String displayNamePersonnes = "cp_fmt_nom_complet";
465
		ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(null);
469
		ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(null);
466
		
470
		
467
		personnesSaisiesComboBox = new ChampComboBoxRechercheTempsReelPaginable(proxyPersonnes, modelTypePersonnes, displayNamePersonnes);
471
		personnesSaisiesComboBox = new ChampComboBoxRechercheTempsReelPaginable(proxyPersonnes, modelTypePersonnes, displayNamePersonnes);
468
		
472
		
469
		personnesSaisiesComboBox.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
473
		personnesSaisiesComboBox.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
470
			public void handleEvent(BaseEvent be) {		
474
			public void handleEvent(BaseEvent be) {		
471
				if (personnesSaisiesComboBox.getValeur() instanceof ModelData) {
475
				if (personnesSaisiesComboBox.getValeur() instanceof ModelData) {
472
					// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
476
					// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
473
					Personne personneSaisieSelectionnee = new Personne(personnesSaisiesComboBox.getValeur());
477
					Personne personneSaisieSelectionnee = new Personne(personnesSaisiesComboBox.getValeur());
474
					Log.debug("Récupération info combo :"+personneSaisieSelectionnee.toString());
478
					Log.debug("Récupération info combo :"+personneSaisieSelectionnee.toString());
475
					PublicationAPersonne pap = new PublicationAPersonne(aDonnee.GARDER_PREFIXE);					
479
					PublicationAPersonne pap = new PublicationAPersonne(aDonnee.GARDER_PREFIXE);					
476
					pap.setPersonne(personneSaisieSelectionnee, aDonnee.INTEGRER_PROPRIETES);
480
					pap.setPersonne(personneSaisieSelectionnee, aDonnee.INTEGRER_PROPRIETES);
477
					pap.setOrdreAuteurs(String.valueOf(grilleAuteurs.getStore().getCount()+1));
481
					pap.setOrdreAuteurs(String.valueOf(grilleAuteurs.getStore().getCount()+1));
478
					if (modeDeCreation != Formulaire.MODE_AJOUTER) {
482
					if (modeDeCreation != Formulaire.MODE_AJOUTER) {
479
						pap.setPublicationLiee(publication);
483
						pap.setPublicationLiee(publication);
480
						pap.setIdPublication(publicationId);
484
						pap.setIdPublication(publicationId);
481
					}
485
					}
482
					pap.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
486
					pap.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
483
					Log.debug("Récupération info combo pap id :"+pap.getId());
487
					Log.debug("Récupération info combo pap id :"+pap.getId());
484
					
488
					
485
					if (ajouterDansGrille(pap)) {
489
					if (ajouterDansGrille(pap)) {
486
						personnesSaisiesComboBox.getCombo().setValue(null);
490
						personnesSaisiesComboBox.getCombo().setValue(null);
487
					}
491
					}
488
				}
492
				}
489
			}
493
			}
490
		});
494
		});
491
	}
495
	}
492
	
496
	
493
	private boolean ajouterDansGrille(PublicationAPersonne pap) {
497
	private boolean ajouterDansGrille(PublicationAPersonne pap) {
494
		return ajouterDansGrille(pap, grilleAuteurs.getStore().getCount());
498
		return ajouterDansGrille(pap, grilleAuteurs.getStore().getCount());
495
	}
499
	}
496
	
500
	
497
	private boolean ajouterDansGrille(PublicationAPersonne pap, int index) {
501
	private boolean ajouterDansGrille(PublicationAPersonne pap, int index) {
498
		boolean ok = false;
502
		boolean ok = false;
499
		if (pap != null) {
503
		if (pap != null) {
500
			Log.debug("Début ajout dans grille :"+pap.toString());
504
			Log.debug("Début ajout dans grille :"+pap.toString());
501
			if (grilleAuteurs.getStore().contains((ModelData) pap))	{
505
			if (grilleAuteurs.getStore().contains((ModelData) pap))	{
502
				InfoLogger.display("Information", "La personne choisie existe déjà dans la liste d'auteurs.");
506
				InfoLogger.display("Information", "La personne choisie existe déjà dans la liste d'auteurs.");
503
			} else {
507
			} else {
504
				// 1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter
508
				// 1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter
505
				if (!auteursInitialListe.containsValue(pap))	{
509
				if (!auteursInitialListe.containsValue(pap))	{
506
					auteursAjoutes.put(pap.getId(), pap);
510
					auteursAjoutes.put(pap.getId(), pap);
507
					Log.debug("Ajout dans grille -> auteur '"+pap.getId()+"' a été ajouté à la liste des ajoutés (il ne fait pas parti de la liste initiale).");
511
					Log.debug("Ajout dans grille -> auteur '"+pap.getId()+"' a été ajouté à la liste des ajoutés (il ne fait pas parti de la liste initiale).");
508
				}
512
				}
509
				
513
				
510
				// L'enlever de la liste à supprimer
514
				// L'enlever de la liste à supprimer
511
				if (auteursSupprimes.containsValue(pap))	{
515
				if (auteursSupprimes.containsValue(pap))	{
512
					auteursSupprimes.remove(pap);
516
					auteursSupprimes.remove(pap);
513
					Log.debug("Ajout dans grille -> auteur '"+pap.getId()+"' a été retiré de la liste des supprimés.");
517
					Log.debug("Ajout dans grille -> auteur '"+pap.getId()+"' a été retiré de la liste des supprimés.");
514
				}
518
				}
515
				
519
				
516
				// 2) Ajouter a la grille
520
				// 2) Ajouter a la grille
517
				grilleAuteurs.getStore().insert((ModelData) pap, index);
521
				grilleAuteurs.getStore().insert((ModelData) pap, index);
518
				grilleAuteurs.getSelectionModel().select(index, false);
522
				grilleAuteurs.getSelectionModel().select(index, false);
519
				ok = true;
523
				ok = true;
520
			}
524
			}
521
		}
525
		}
522
		return ok;
526
		return ok;
523
	}
527
	}
524
	
528
	
525
	private void supprimerDansGrille() {
529
	private void supprimerDansGrille() {
526
		List<ModelData> listeDonneesSelectionnees = grilleAuteurs.getSelectionModel().getSelectedItems();
530
		List<ModelData> listeDonneesSelectionnees = grilleAuteurs.getSelectionModel().getSelectedItems();
527
		for (ModelData donneeSelectionnee : listeDonneesSelectionnees) {
531
		for (ModelData donneeSelectionnee : listeDonneesSelectionnees) {
528
			supprimerAuteurDansGrille(donneeSelectionnee);
532
			supprimerAuteurDansGrille(donneeSelectionnee);
529
		}
533
		}
530
	}
534
	}
531
	
535
	
532
	private void supprimerAuteurDansGrille(ModelData donneeSelectionnee) {
536
	private void supprimerAuteurDansGrille(ModelData donneeSelectionnee) {
533
		PublicationAPersonne personneSelectionnee = new PublicationAPersonne(donneeSelectionnee, aDonnee.GARDER_PREFIXE);
537
		PublicationAPersonne personneSelectionnee = new PublicationAPersonne(donneeSelectionnee, aDonnee.GARDER_PREFIXE);
534
		Log.debug("Début supprimer auteur dans grille : "+personneSelectionnee.toString());
538
		Log.debug("Début supprimer auteur dans grille : "+personneSelectionnee.toString());
535
		if (personneSelectionnee.getId() == null) {
539
		if (personneSelectionnee.getId() == null) {
536
			InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerAuteur());
540
			InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerAuteur());
537
		} else {
541
		} else {
538
			// 1) Ajouter a la liste des personne à supprimer uniquement si est présente dans la liste initiale
542
			// 1) Ajouter a la liste des personne à supprimer uniquement si est présente dans la liste initiale
539
			if (auteursInitialListe.containsKey(personneSelectionnee.getId())) {
543
			if (auteursInitialListe.containsKey(personneSelectionnee.getId())) {
540
				auteursSupprimes.put(personneSelectionnee.getId(), personneSelectionnee);
544
				auteursSupprimes.put(personneSelectionnee.getId(), personneSelectionnee);
541
				Log.debug("Ajout Personne à supprimer : "+auteursSupprimes.toString());
545
				Log.debug("Ajout Personne à supprimer : "+auteursSupprimes.toString());
542
			}
546
			}
543
			
547
			
544
			if (auteursAjoutes.containsKey(personneSelectionnee.getId()))	{
548
			if (auteursAjoutes.containsKey(personneSelectionnee.getId()))	{
545
				auteursAjoutes.remove(personneSelectionnee.getId());
549
				auteursAjoutes.remove(personneSelectionnee.getId());
546
			}
550
			}
547
			
551
			
548
			if (auteursModifies.containsKey(personneSelectionnee.getId()))	{
552
			if (auteursModifies.containsKey(personneSelectionnee.getId()))	{
549
				auteursModifies.remove(personneSelectionnee.getId());
553
				auteursModifies.remove(personneSelectionnee.getId());
550
			}
554
			}
551
			
555
			
552
			// 2) Supprimer la personne de la liste
556
			// 2) Supprimer la personne de la liste
553
			Log.debug("Personne trouvée : "+grilleAuteurs.getStore().findModel(donneeSelectionnee).toString());
557
			Log.debug("Personne trouvée : "+grilleAuteurs.getStore().findModel(donneeSelectionnee).toString());
554
			grilleAuteurs.getStore().remove(donneeSelectionnee);
558
			grilleAuteurs.getStore().remove(donneeSelectionnee);
555
			formaterOrdreAuteurs();
559
			formaterOrdreAuteurs();
556
		}
560
		}
557
	}
561
	}
558
	
562
	
559
	private GrillePaginable<ModelData> creerGrilleAuteurs() {
563
	private GrillePaginable<ModelData> creerGrilleAuteurs() {
560
		// ModelType
564
		// ModelType
561
		ModelType modelTypePersonnesAPublication = new ModelType();
565
		ModelType modelTypePersonnesAPublication = new ModelType();
562
		modelTypePersonnesAPublication.setRoot("publicationsAPersonne");
566
		modelTypePersonnesAPublication.setRoot("publicationsAPersonne");
563
		modelTypePersonnesAPublication.setTotalName("nbElements");
567
		modelTypePersonnesAPublication.setTotalName("nbElements");
564
		modelTypePersonnesAPublication.addField("cpuap_id_personne");
568
		modelTypePersonnesAPublication.addField("cpuap_id_personne");
565
		modelTypePersonnesAPublication.addField("cpuap_id_publication");
569
		modelTypePersonnesAPublication.addField("cpuap_id_publication");
566
		modelTypePersonnesAPublication.addField("cpuap_id_role");
570
		modelTypePersonnesAPublication.addField("cpuap_id_role");
567
		modelTypePersonnesAPublication.addField("cpuap_ordre");
571
		modelTypePersonnesAPublication.addField("cpuap_ordre");
568
		modelTypePersonnesAPublication.addField("cp_id_personne");
572
		modelTypePersonnesAPublication.addField("cp_id_personne");
569
		modelTypePersonnesAPublication.addField("cp_fmt_nom_complet");
573
		modelTypePersonnesAPublication.addField("cp_fmt_nom_complet");
570
		modelTypePersonnesAPublication.addField("cp_nom");
574
		modelTypePersonnesAPublication.addField("cp_nom");
571
		modelTypePersonnesAPublication.addField("cp_prenom");
575
		modelTypePersonnesAPublication.addField("cp_prenom");
572
		modelTypePersonnesAPublication.addField("cp_id_personne");
576
		modelTypePersonnesAPublication.addField("cp_id_personne");
573
		modelTypePersonnesAPublication.addField("cp_code_postal");
577
		modelTypePersonnesAPublication.addField("cp_code_postal");
574
		modelTypePersonnesAPublication.addField("cp_ville");
578
		modelTypePersonnesAPublication.addField("cp_ville");
575
		modelTypePersonnesAPublication.addField("cp_truk_courriel");
579
		modelTypePersonnesAPublication.addField("cp_truk_courriel");
576
		
580
		
577
		// Proxy
581
		// Proxy
578
		ProxyPersonnesAPublication<ModelData> proxyPersonnesAPublication = new ProxyPersonnesAPublication<ModelData>(null, publicationId);		
582
		ProxyPersonnesAPublication<ModelData> proxyPersonnesAPublication = new ProxyPersonnesAPublication<ModelData>(null, publicationId);		
579
 
583
 
580
		// Colonnes
584
		// Colonnes
581
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
585
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
582
		ColumnConfig columnOrdre = new ColumnConfig("_ordre_", i18nC.ordre(), 15);
586
		ColumnConfig columnOrdre = new ColumnConfig("_ordre_", i18nC.ordre(), 15);
583
		colonnes.add(columnOrdre);
587
		colonnes.add(columnOrdre);
584
		colonnes.add(new ColumnConfig("cp_fmt_nom_complet", i18nC.personneNomComplet(), 150));
588
		colonnes.add(new ColumnConfig("cp_fmt_nom_complet", i18nC.personneNomComplet(), 150));
585
		colonnes.add(new ColumnConfig("cp_code_postal", i18nC.personneCodePostal(), 150));
589
		colonnes.add(new ColumnConfig("cp_code_postal", i18nC.personneCodePostal(), 150));
586
		colonnes.add(new ColumnConfig("cp_ville", i18nC.personneVille(), 75));
590
		colonnes.add(new ColumnConfig("cp_ville", i18nC.personneVille(), 75));
587
		colonnes.add(new ColumnConfig("cp_truk_courriel", i18nC.personneCourriel(), 75));		
591
		colonnes.add(new ColumnConfig("cp_truk_courriel", i18nC.personneCourriel(), 75));		
588
		
592
		
589
		// Champs de traitement
593
		// Champs de traitement
590
		HashMap<String, String> virtualFields = new HashMap<String, String>();
594
		HashMap<String, String> virtualFields = new HashMap<String, String>();
591
		virtualFields.put("_ordre_", "cpuap_ordre");
595
		virtualFields.put("_ordre_", "cpuap_ordre");
592
		
596
		
593
		// Modele de selection
597
		// Modele de selection
594
		GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>();
598
		GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>();
595
		modeleDeSelection.addListener(Events.SelectionChange, new SelectionChangedListener<ModelData>() {
599
		modeleDeSelection.addListener(Events.SelectionChange, new SelectionChangedListener<ModelData>() {
596
			public void selectionChanged(SelectionChangedEvent<ModelData> se) {
600
			public void selectionChanged(SelectionChangedEvent<ModelData> se) {
597
				activerBoutonsOrdreAuteur();
601
				activerBoutonsOrdreAuteur();
598
			}
602
			}
599
		});
603
		});
600
		
604
		
601
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
605
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
602
		
606
		
603
		// Grille
607
		// Grille
604
		// ATTENTION : le constructure de cette grille est à vérifier!
608
		// ATTENTION : le constructure de cette grille est à vérifier!
605
		final GrillePaginable<ModelData> grilleAuteurs = new GrillePaginable<ModelData>(modelTypePersonnesAPublication, virtualFields, proxyPersonnesAPublication, colonnes, modeleDeColonnes);		
609
		final GrillePaginable<ModelData> grilleAuteurs = new GrillePaginable<ModelData>(modelTypePersonnesAPublication, virtualFields, proxyPersonnesAPublication, colonnes, modeleDeColonnes);		
606
		grilleAuteurs.getGrille().setHeight("100%");
610
		grilleAuteurs.getGrille().setHeight("100%");
607
		grilleAuteurs.getGrille().setBorders(true);
611
		grilleAuteurs.getGrille().setBorders(true);
608
		grilleAuteurs.getGrille().setSelectionModel(modeleDeSelection);
612
		grilleAuteurs.getGrille().setSelectionModel(modeleDeSelection);
609
		grilleAuteurs.getGrille().getView().setForceFit(true);
613
		grilleAuteurs.getGrille().getView().setForceFit(true);
610
		grilleAuteurs.getGrille().setAutoExpandColumn("fmt_nom_complet");
614
		grilleAuteurs.getGrille().setAutoExpandColumn("fmt_nom_complet");
611
		grilleAuteurs.getGrille().setStripeRows(true);
615
		grilleAuteurs.getGrille().setStripeRows(true);
612
		grilleAuteurs.getGrille().setTrackMouseOver(true);
616
		grilleAuteurs.getGrille().setTrackMouseOver(true);
613
		
617
		
614
		grilleAuteurs.getStore().getLoader().addListener(Loader.Load, new Listener<LoadEvent>() {
618
		grilleAuteurs.getStore().getLoader().addListener(Loader.Load, new Listener<LoadEvent>() {
615
			public void handleEvent(LoadEvent be) {  				
619
			public void handleEvent(LoadEvent be) {  				
616
				List<ModelData> auteurs = grilleAuteurs.getStore().getModels();
620
				List<ModelData> auteurs = grilleAuteurs.getStore().getModels();
617
				Iterator<ModelData> itAuteurs = auteurs.iterator();
621
				Iterator<ModelData> itAuteurs = auteurs.iterator();
618
				while (itAuteurs.hasNext())	{
622
				while (itAuteurs.hasNext())	{
619
					ModelData selection = itAuteurs.next();
623
					ModelData selection = itAuteurs.next();
620
					PublicationAPersonne pap = new PublicationAPersonne(selection, aDonnee.GARDER_PREFIXE);
624
					PublicationAPersonne pap = new PublicationAPersonne(selection, aDonnee.GARDER_PREFIXE);
621
					auteursInitialListe.put(pap.getId(), pap);
625
					auteursInitialListe.put(pap.getId(), pap);
622
					Log.debug("PublicationAPersonne ajoutée à la liste initiale avec l'id :"+pap.getId()+pap.toString()+selection.getProperties().toString());
626
					Log.debug("PublicationAPersonne ajoutée à la liste initiale avec l'id :"+pap.getId()+pap.toString()+selection.getProperties().toString());
623
				}
627
				}
624
				Log.debug("Initialisation liste auteur :"+auteursInitialListe.size());
628
				Log.debug("Initialisation liste auteur :"+auteursInitialListe.size());
625
			}  
629
			}  
626
		});
630
		});
627
		
631
		
628
		// Rajouter des écouteurs
632
		// Rajouter des écouteurs
629
		grilleAuteurs.getStore().addListener(Store.Add, new Listener<StoreEvent<ModelData>>() {
633
		grilleAuteurs.getStore().addListener(Store.Add, new Listener<StoreEvent<ModelData>>() {
630
			public void handleEvent(StoreEvent<ModelData> ce) {
634
			public void handleEvent(StoreEvent<ModelData> ce) {
631
				if (!changeOrderMarker) {					
635
				if (!changeOrderMarker) {					
632
					actualiserEtatBoutonsBarreOutils();
636
					actualiserEtatBoutonsBarreOutils();
633
				}
637
				}
634
			}
638
			}
635
		});
639
		});
636
		grilleAuteurs.getStore().addListener(Store.Remove, new Listener<StoreEvent<ModelData>>() {
640
		grilleAuteurs.getStore().addListener(Store.Remove, new Listener<StoreEvent<ModelData>>() {
637
			public void handleEvent(StoreEvent<ModelData> ce) {
641
			public void handleEvent(StoreEvent<ModelData> ce) {
638
				if (!changeOrderMarker) {					
642
				if (!changeOrderMarker) {					
639
					actualiserEtatBoutonsBarreOutils();
643
					actualiserEtatBoutonsBarreOutils();
640
					Log.debug("Dans listener remove de grilleAuteur");
644
					Log.debug("Dans listener remove de grilleAuteur");
641
				}
645
				}
642
			}
646
			}
643
		});
647
		});
644
		grilleAuteurs.getStore().addListener(Store.Update, new Listener<StoreEvent<ModelData>>() {
648
		grilleAuteurs.getStore().addListener(Store.Update, new Listener<StoreEvent<ModelData>>() {
645
			public void handleEvent(StoreEvent<ModelData> ce) {
649
			public void handleEvent(StoreEvent<ModelData> ce) {
646
				
650
				
647
			}
651
			}
648
		});		
652
		});		
649
		
653
		
650
		return grilleAuteurs;
654
		return grilleAuteurs;
651
	}
655
	}
652
	
656
	
653
	private void genererTitreFormulaire() {
657
	private void genererTitreFormulaire() {
654
		String titre = i18nC.publicationTitreFormAjout();
658
		String titre = i18nC.publicationTitreFormAjout();
655
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
659
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
656
			 titre = i18nC.publicationTitreFormModif();
660
			 titre = i18nC.publicationTitreFormModif();
657
			 if (publication != null) {
661
			 if (publication != null) {
658
				 titre += " - "+i18nC.id()+": "+publication.getId()+" - "+publication.getTitre();
662
				 titre += " - "+i18nC.id()+": "+publication.getId()+" - "+publication.getTitre();
659
			 }
663
			 }
660
		}
664
		}
661
		panneauFormulaire.setHeadingHtml(titre);
665
		panneauFormulaire.setHeadingHtml(titre);
662
	}
666
	}
663
 
667
 
664
	
668
	
665
	private void creerZoneAuteurs() {
669
	private void creerZoneAuteurs() {
666
		auteursFieldset = new ContentPanel();
670
		auteursFieldset = new ContentPanel();
667
		auteursFieldset.setLayout(new FitLayout());
671
		auteursFieldset.setLayout(new FitLayout());
668
		auteursFieldset.setHeadingHtml("Auteurs");
672
		auteursFieldset.setHeadingHtml("Auteurs");
669
		
673
		
670
		creerChampsAuteur();
674
		creerChampsAuteur();
671
	}
675
	}
672
	
676
	
673
	private void creerChampsAuteur() {
677
	private void creerChampsAuteur() {
674
		auteursFieldset.removeAll();
678
		auteursFieldset.removeAll();
675
		barreOutils = creerBarreOutilsGrille();
679
		barreOutils = creerBarreOutilsGrille();
676
		auteursFieldset.setTopComponent(barreOutils);
680
		auteursFieldset.setTopComponent(barreOutils);
677
		grilleAuteurs = creerGrilleAuteurs();
681
		grilleAuteurs = creerGrilleAuteurs();
678
		auteursFieldset.add(grilleAuteurs);
682
		auteursFieldset.add(grilleAuteurs);
679
		auteursFieldset.layout();
683
		auteursFieldset.layout();
680
	}
684
	}
681
	
685
	
682
	private void creerZoneGeneralites() {
686
	private void creerZoneGeneralites() {
683
		FormLayout layout = new FormLayout();
687
		FormLayout layout = new FormLayout();
684
		layout.setLabelWidth(200);
688
		layout.setLabelWidth(200);
685
		
689
		
686
		// Fieldset Infos Générales
690
		// Fieldset Infos Générales
687
		generalitesFieldset = new FieldSet();
691
		generalitesFieldset = new FieldSet();
688
		generalitesFieldset.setHeadingHtml("Informations générales");
692
		generalitesFieldset.setHeadingHtml("Informations générales");
689
		generalitesFieldset.setCollapsible(true);
693
		generalitesFieldset.setCollapsible(true);
690
		generalitesFieldset.setLayout(layout);
694
		generalitesFieldset.setLayout(layout);
691
		
695
		
692
		titreChp = new TextField<String>();
696
		titreChp = new TextField<String>();
693
		titreChp.setName("cpu");
697
		titreChp.setName("cpu");
694
		titreChp.setFieldLabel("Titre de l'article ou de l'ouvrage");
698
		titreChp.setFieldLabel("Titre de l'article ou de l'ouvrage");
695
		titreChp.addStyleName(ComposantClass.OBLIGATOIRE);
699
		titreChp.addStyleName(ComposantClass.OBLIGATOIRE);
696
		titreChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
700
		titreChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
697
		generalitesFieldset.add(titreChp, new FormData(450, 0));
701
		generalitesFieldset.add(titreChp, new FormData(450, 0));
698
		
702
		
699
		collectionChp = new TextField<String>();
703
		collectionChp = new TextField<String>();
700
		collectionChp.setFieldLabel("Intitulé de la revue ou de la collection");
704
		collectionChp.setFieldLabel("Intitulé de la revue ou de la collection");
701
		generalitesFieldset.add(collectionChp, new FormData(450, 0));
705
		generalitesFieldset.add(collectionChp, new FormData(450, 0));
702
		
706
		
703
		uriChp = new TextField<String>();
707
		uriChp = new TextField<String>();
704
		uriChp.setFieldLabel("URL de la publication");
708
		uriChp.setFieldLabel("URL de la publication");
705
		generalitesFieldset.add(uriChp, new FormData(450, 0));
709
		generalitesFieldset.add(uriChp, new FormData(450, 0));
706
	}
710
	}
707
	
711
	
708
	private void creerZoneEdition() {
712
	private void creerZoneEdition() {
709
		FormLayout layout = new FormLayout();
713
		FormLayout layout = new FormLayout();
710
		layout.setLabelWidth(200);
714
		layout.setLabelWidth(200);
711
 
715
 
712
		// Fieldset Edition
716
		// Fieldset Edition
713
		editionFieldset = new FieldSet();
717
		editionFieldset = new FieldSet();
714
		editionFieldset.setHeadingHtml("Édition");
718
		editionFieldset.setHeadingHtml("Édition");
715
		editionFieldset.setCollapsible(true);
719
		editionFieldset.setCollapsible(true);
716
		editionFieldset.setLayout(layout);
720
		editionFieldset.setLayout(layout);
717
		
721
		
718
		/*****************************************************/
722
		/*****************************************************/
719
		/**			Champ 'Editeur de la publication'		**/
723
		/**			Champ 'Editeur de la publication'		**/
720
		/*****************************************************/		
724
		/*****************************************************/		
721
		ModelType modelTypeStructures = new ModelType();
725
		ModelType modelTypeStructures = new ModelType();
722
		modelTypeStructures.setRoot("structures");
726
		modelTypeStructures.setRoot("structures");
723
		modelTypeStructures.setTotalName("nbElements");
727
		modelTypeStructures.setTotalName("nbElements");
724
		modelTypeStructures.addField("cs_nom");
728
		modelTypeStructures.addField("cs_nom");
725
		modelTypeStructures.addField("cs_id_structure");
729
		modelTypeStructures.addField("cs_id_structure");
726
		
730
		
727
		String displayNameStructures = "cs_nom";
731
		String displayNameStructures = "cs_nom";
728
		ProxyStructures<ModelData> proxyStructures = new ProxyStructures<ModelData>(null);
732
		ProxyStructures<ModelData> proxyStructures = new ProxyStructures<ModelData>(null);
729
		
733
		
730
		editeurCombobox = new ChampComboBoxRechercheTempsReelPaginable(proxyStructures, modelTypeStructures, displayNameStructures);
734
		editeurCombobox = new ChampComboBoxRechercheTempsReelPaginable(proxyStructures, modelTypeStructures, displayNameStructures);
731
		editeurCombobox.setWidth(200, 600);
735
		editeurCombobox.setWidth(200, 600);
732
		editeurCombobox.getCombo().setTabIndex(tabIndex++);
736
		editeurCombobox.getCombo().setTabIndex(tabIndex++);
733
		editeurCombobox.getCombo().setEmptyText("Sélectionner un éditeur...");
737
		editeurCombobox.getCombo().setEmptyText("Sélectionner un éditeur...");
734
		editeurCombobox.getCombo().setFieldLabel("Éditeur de la publication");
738
		editeurCombobox.getCombo().setFieldLabel("Éditeur de la publication");
735
		editeurCombobox.getCombo().setEditable(true);
739
		editeurCombobox.getCombo().setEditable(true);
736
		editionFieldset.add(editeurCombobox, new FormData(600, 0));
740
		editionFieldset.add(editeurCombobox, new FormData(600, 0));
737
		
741
		
738
		/*********************************************/
742
		/*********************************************/
739
		/**			Champ 'Date de publication'		**/
743
		/**			Champ 'Date de publication'		**/
740
		/*********************************************/			
744
		/*********************************************/			
741
		datePublicationChp = new TextField<String>();
745
		datePublicationChp = new TextField<String>();
742
		datePublicationChp.setMaxLength(9);
746
		datePublicationChp.setMaxLength(9);
743
		datePublicationChp.setMinLength(4);
747
		datePublicationChp.setMinLength(4);
744
		datePublicationChp.setFieldLabel("Année de publication");
748
		datePublicationChp.setFieldLabel("Année de publication");
745
		datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE);
749
		datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE);
746
		datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
750
		datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
747
		editionFieldset.add(datePublicationChp, new FormData(80, 0));
751
		editionFieldset.add(datePublicationChp, new FormData(80, 0));
748
		
752
		
749
		/*********************************/
753
		/*********************************/
750
		/**			Champ 'Tome'		**/
754
		/**			Champ 'Tome'		**/
751
		/*********************************/	
755
		/*********************************/	
752
		tomeChp = new TextField<String>();
756
		tomeChp = new TextField<String>();
753
		tomeChp.setFieldLabel("Série de la revue ou tome");
757
		tomeChp.setFieldLabel("Série de la revue ou tome");
754
		editionFieldset.add(tomeChp, new FormData(75, 0));
758
		editionFieldset.add(tomeChp, new FormData(75, 0));
755
 
759
 
756
		/*************************************/
760
		/*************************************/
757
		/**			Champ 'Fascicule'		**/
761
		/**			Champ 'Fascicule'		**/
758
		/*************************************/	
762
		/*************************************/	
759
		fasciculeChp = new TextField<String>();
763
		fasciculeChp = new TextField<String>();
760
		fasciculeChp.setFieldLabel("Fascicule de la revue");
764
		fasciculeChp.setFieldLabel("Fascicule de la revue");
761
		editionFieldset.add(fasciculeChp, new FormData(75, 0));
765
		editionFieldset.add(fasciculeChp, new FormData(75, 0));
762
 
766
 
763
		/*********************************/
767
		/*********************************/
764
		/**			Champ 'Pages'		**/
768
		/**			Champ 'Pages'		**/
765
		/*********************************/	
769
		/*********************************/	
766
		pagesChp = new TextField<String>();
770
		pagesChp = new TextField<String>();
767
		pagesChp.setFieldLabel("Pages");
771
		pagesChp.setFieldLabel("Pages");
768
		pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
772
		pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
769
		editionFieldset.add(pagesChp, new FormData(100, 0));
773
		editionFieldset.add(pagesChp, new FormData(100, 0));
770
	}
774
	}
771
	
775
	
772
	
776
	
773
	//+----------------------------------------------------------------------------------------------------------------+
777
	//+----------------------------------------------------------------------------------------------------------------+
774
	//    Méthodes privées
778
	//    Méthodes privées
775
	
779
	
776
	private void miseAJourAuteursInitialListe() {
780
	private void miseAJourAuteursInitialListe() {
777
		Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
781
		Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
778
		while (clesAjoutees.hasNext()) {
782
		while (clesAjoutees.hasNext()) {
779
			PublicationAPersonne auteurAjoute = auteursAjoutes.get(clesAjoutees.next());
783
			PublicationAPersonne auteurAjoute = auteursAjoutes.get(clesAjoutees.next());
780
			auteursInitialListe.put(auteurAjoute.getId(), auteurAjoute);
784
			auteursInitialListe.put(auteurAjoute.getId(), auteurAjoute);
781
		}
785
		}
782
		
786
		
783
		Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
787
		Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
784
		while (clesSupprimees.hasNext()) {
788
		while (clesSupprimees.hasNext()) {
785
			PublicationAPersonne auteurSupprime = auteursSupprimes.get(clesSupprimees.next());
789
			PublicationAPersonne auteurSupprime = auteursSupprimes.get(clesSupprimees.next());
786
			auteursInitialListe.remove(auteurSupprime.getId());
790
			auteursInitialListe.remove(auteurSupprime.getId());
787
		}
791
		}
788
	}
792
	}
789
	
793
	
790
	public boolean soumettreFormulaire() {
794
	public boolean soumettreFormulaire() {
791
		boolean formulaireValideOk = verifierFormulaire();
795
		boolean formulaireValideOk = verifierFormulaire();
792
		if (formulaireValideOk) {
796
		if (formulaireValideOk) {
793
			soumettrePublication();
797
			soumettrePublication();
794
		}
798
		}
795
		
799
		
796
		if(clicBoutonvalidation) {
800
		if(clicBoutonvalidation) {
797
			fermerFormulaire();
801
			fermerFormulaire();
798
		}
802
		}
799
		
803
		
800
		return formulaireValideOk;
804
		return formulaireValideOk;
801
	}
805
	}
802
 
806
 
803
	private void soumettrePublication() {
807
	private void soumettrePublication() {
804
		Publication publicationCollectee = collecterPublication();
808
		Publication publicationCollectee = collecterPublication();
805
		if (publicationCollectee != null) {
809
		if (publicationCollectee != null) {
806
			// Pour l'enregistrement des publications, on utilise le séquenceur
810
			// Pour l'enregistrement des publications, on utilise le séquenceur
807
			// Il doit attendre le retour de l'enregistrement pour poursuivre
811
			// Il doit attendre le retour de l'enregistrement pour poursuivre
808
			sequenceur = new Sequenceur();
812
			sequenceur = new Sequenceur();
809
			int seqId = sequenceur.lancerRequeteSynchrone(this);
813
			int seqId = sequenceur.lancerRequeteSynchrone(this);
810
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
814
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
811
				mediateur.ajouterPublication(sequenceur, publicationCollectee, seqId);
815
				mediateur.ajouterPublication(sequenceur, publicationCollectee, seqId);
812
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
816
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
813
				mediateur.modifierPublication(sequenceur, publicationCollectee, seqId);
817
				mediateur.modifierPublication(sequenceur, publicationCollectee, seqId);
814
			}
818
			}
815
			
819
			
816
		// si l'on est en mode MODIFIER, on soumet les auteurs meme si les informations de la publication
820
		// si l'on est en mode MODIFIER, on soumet les auteurs meme si les informations de la publication
817
		// restent inchangées car il se peut que les auteurs aient été modifiés
821
		// restent inchangées car il se peut que les auteurs aient été modifiés
818
		} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
822
		} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
819
			soumettreAuteurs();
823
			soumettreAuteurs();
820
			if(clicBoutonvalidation) {
824
			if(clicBoutonvalidation) {
821
				fermerFormulaire();
825
				fermerFormulaire();
822
			}
826
			}
823
		}
827
		}
824
	}
828
	}
825
	
829
	
826
	private void soumettreAuteurs() {
830
	private void soumettreAuteurs() {
827
		//1) Auteurs ajoutés : 
831
		//1) Auteurs ajoutés : 
828
		PublicationAPersonneListe listeAuteursAAjouter = new PublicationAPersonneListe();
832
		PublicationAPersonneListe listeAuteursAAjouter = new PublicationAPersonneListe();
829
		Iterator<String> itAuteur = auteursAjoutes.keySet().iterator();
833
		Iterator<String> itAuteur = auteursAjoutes.keySet().iterator();
830
		while (itAuteur.hasNext())	{			
834
		while (itAuteur.hasNext())	{			
831
			String cle = itAuteur.next();
835
			String cle = itAuteur.next();
832
			PublicationAPersonne publiAPersonne = auteursAjoutes.get(cle);
836
			PublicationAPersonne publiAPersonne = auteursAjoutes.get(cle);
833
			Log.debug("Ajouter :"+publiAPersonne.toString());
837
			Log.debug("Ajouter :"+publiAPersonne.toString());
834
			publiAPersonne.setIdPublication(this.publicationId);
838
			publiAPersonne.setIdPublication(this.publicationId);
835
			publiAPersonne.setOrdreAuteurs(publiAPersonne.getOrdreAuteurs());
839
			publiAPersonne.setOrdreAuteurs(publiAPersonne.getOrdreAuteurs());
836
			listeAuteursAAjouter.put(cle, publiAPersonne);
840
			listeAuteursAAjouter.put(cle, publiAPersonne);
837
		}
841
		}
838
		
842
		
839
		// - envoyer au mediateur SSI personnes à ajouter
843
		// - envoyer au mediateur SSI personnes à ajouter
840
		if (listeAuteursAAjouter.size() > 0)	{
844
		if (listeAuteursAAjouter.size() > 0)	{
841
			int seqId = sequenceur.lancerRequeteSynchrone(this);
845
			int seqId = sequenceur.lancerRequeteSynchrone(this);
842
			mediateur.ajouterPublicationAPersonne(sequenceur, this.publicationId, listeAuteursAAjouter, PublicationAPersonne.ROLE_AUTEUR, seqId);
846
			mediateur.ajouterPublicationAPersonne(sequenceur, this.publicationId, listeAuteursAAjouter, PublicationAPersonne.ROLE_AUTEUR, seqId);
843
		}
847
		}
844
		
848
		
845
		//2) Auteurs supprimés : 
849
		//2) Auteurs supprimés : 
846
		PublicationAPersonneListe listeAuteursASupprimer = new PublicationAPersonneListe();
850
		PublicationAPersonneListe listeAuteursASupprimer = new PublicationAPersonneListe();
847
		itAuteur = auteursSupprimes.keySet().iterator();
851
		itAuteur = auteursSupprimes.keySet().iterator();
848
		while (itAuteur.hasNext())	{
852
		while (itAuteur.hasNext())	{
849
			String cle = itAuteur.next();
853
			String cle = itAuteur.next();
850
			PublicationAPersonne publiAPersonne = auteursSupprimes.get(cle);
854
			PublicationAPersonne publiAPersonne = auteursSupprimes.get(cle);
851
			Log.debug("Supprimer :"+publiAPersonne.toString());
855
			Log.debug("Supprimer :"+publiAPersonne.toString());
852
			listeAuteursASupprimer.put(cle, publiAPersonne);
856
			listeAuteursASupprimer.put(cle, publiAPersonne);
853
		}
857
		}
854
		
858
		
855
		// - Envoyer au médiateur SSI personnes à supprimer
859
		// - Envoyer au médiateur SSI personnes à supprimer
856
		if (listeAuteursASupprimer.size() > 0) {
860
		if (listeAuteursASupprimer.size() > 0) {
857
			// Pour une suppression des auteurs, on a pas besoin d'attendre le retour
861
			// Pour une suppression des auteurs, on a pas besoin d'attendre le retour
858
			Log.debug("Lancement suppression :"+listeAuteursASupprimer.size());
862
			Log.debug("Lancement suppression :"+listeAuteursASupprimer.size());
859
			mediateur.supprimerPublicationAPersonne(this, listeAuteursASupprimer);
863
			mediateur.supprimerPublicationAPersonne(this, listeAuteursASupprimer);
860
		}
864
		}
861
		
865
		
862
		//3) Auteurs modifiés : 
866
		//3) Auteurs modifiés : 
863
		PublicationAPersonneListe listeAuteursAModifier = new PublicationAPersonneListe();
867
		PublicationAPersonneListe listeAuteursAModifier = new PublicationAPersonneListe();
864
		itAuteur = auteursModifies.keySet().iterator();
868
		itAuteur = auteursModifies.keySet().iterator();
865
		while (itAuteur.hasNext())	{
869
		while (itAuteur.hasNext())	{
866
			String cle = itAuteur.next();
870
			String cle = itAuteur.next();
867
			PublicationAPersonne publiAPersonne = auteursModifies.get(cle);
871
			PublicationAPersonne publiAPersonne = auteursModifies.get(cle);
868
			Log.debug("Modifier :"+publiAPersonne.toString());
872
			Log.debug("Modifier :"+publiAPersonne.toString());
869
			listeAuteursAModifier.put(cle, publiAPersonne);
873
			listeAuteursAModifier.put(cle, publiAPersonne);
870
		}
874
		}
871
		
875
		
872
		// - Envoyer au médiateur SSI personnes à modifier
876
		// - Envoyer au médiateur SSI personnes à modifier
873
		if (listeAuteursAModifier.size() > 0) {
877
		if (listeAuteursAModifier.size() > 0) {
874
			int seqId = sequenceur.lancerRequeteSynchrone(this);
878
			int seqId = sequenceur.lancerRequeteSynchrone(this);
875
			mediateur.modifierPublicationAPersonne(sequenceur, this.publicationId, listeAuteursAModifier, PublicationAPersonne.ROLE_AUTEUR, seqId);
879
			mediateur.modifierPublicationAPersonne(sequenceur, this.publicationId, listeAuteursAModifier, PublicationAPersonne.ROLE_AUTEUR, seqId);
876
		}
880
		}
877
		
881
		
878
		sequenceur.enfilerRafraichissement(this, new Information("auteurs_enregistres"));
882
		sequenceur.enfilerRafraichissement(this, new Information("auteurs_enregistres"));
879
	}
883
	}
880
	
884
	
881
	private void peuplerFormulaire() {
885
	private void peuplerFormulaire() {
882
		titreChp.setValue(publication.getTitre());
886
		titreChp.setValue(publication.getTitre());
883
		collectionChp.setValue(publication.getCollection());
887
		collectionChp.setValue(publication.getCollection());
884
		uriChp.setValue(publication.getURI());
888
		uriChp.setValue(publication.getURI());
885
		datePublicationChp.setValue(publication.getAnneeParution());
889
		datePublicationChp.setValue(publication.getAnneeParution());
886
		tomeChp.setValue(publication.getIndicationNvt());
890
		tomeChp.setValue(publication.getIndicationNvt());
887
		fasciculeChp.setValue(publication.getFascicule());
891
		fasciculeChp.setValue(publication.getFascicule());
888
		pagesChp.setValue(publication.getPages());
892
		pagesChp.setValue(publication.getPages());
889
		
893
		
890
		// Éditeur est soit une référence à une structure de la base soit une chaine
894
		// Éditeur est soit une référence à une structure de la base soit une chaine
891
		if (publication.getEditeur().matches("^[0-9]+$")) {
895
		if (publication.getEditeur().matches("^[0-9]+$")) {
892
			//editeurCombobox.getCombo().setValue(editeurCombobox.getStore().findModel("cs_id_structure", publication.getEditeur()));
896
			//editeurCombobox.getCombo().setValue(editeurCombobox.getStore().findModel("cs_id_structure", publication.getEditeur()));
893
			editeurCombobox.chargerValeurInitiale(publication.getEditeur(), "cs_id_structure");
897
			editeurCombobox.chargerValeurInitiale(publication.getEditeur(), "cs_id_structure");
894
		} else {
898
		} else {
895
			editeurCombobox.getCombo().setRawValue(publication.getEditeur());
899
			editeurCombobox.getCombo().setRawValue(publication.getEditeur());
896
		}
900
		}
897
	}
901
	}
898
	
902
	
899
	private Publication collecterPublication() {
903
	private Publication collecterPublication() {
900
 
904
 
901
		Publication publicationCollectee = (Publication) publication.cloner(new Publication());
905
		Publication publicationCollectee = (Publication) publication.cloner(new Publication());
902
		publicationCollectee.setAuteur(construireIntituleAuteur());
906
		publicationCollectee.setAuteur(construireIntituleAuteur());
903
		
907
		
904
		String titre = titreChp.getValue();
908
		String titre = titreChp.getValue();
905
		publicationCollectee.setTitre(titre);
909
		publicationCollectee.setTitre(titre);
906
		
910
		
907
		String collection = collectionChp.getValue();
911
		String collection = collectionChp.getValue();
908
		publicationCollectee.setCollection(collection);
912
		publicationCollectee.setCollection(collection);
909
		
913
		
910
		publicationCollectee.setNomComplet(construireNomComplet());
914
		publicationCollectee.setNomComplet(construireNomComplet());
911
		
915
		
912
		String uri = uriChp.getValue();
916
		String uri = uriChp.getValue();
913
		publicationCollectee.setUri(uri);
917
		publicationCollectee.setUri(uri);
914
		
918
		
915
		String editeur = "";
919
		String editeur = "";
916
		if (editeurCombobox.getValeur() != null) {
920
		if (editeurCombobox.getValeur() != null) {
917
			Structure structure = new Structure(editeurCombobox.getValeur());
921
			Structure structure = new Structure(editeurCombobox.getValeur());
918
			editeur = structure.getId();
922
			editeur = structure.getId();
919
			publicationCollectee.setStructureEditeur(structure);
923
			publicationCollectee.setStructureEditeur(structure);
920
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
924
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
921
			editeur = editeurCombobox.getCombo().getRawValue();
925
			editeur = editeurCombobox.getCombo().getRawValue();
922
		}
926
		}
923
		publicationCollectee.setEditeur(editeur);
927
		publicationCollectee.setEditeur(editeur);
924
		
928
		
925
		String anneePublication = datePublicationChp.getRawValue();
929
		String anneePublication = datePublicationChp.getRawValue();
926
		publicationCollectee.setAnneeParution(anneePublication);
930
		publicationCollectee.setAnneeParution(anneePublication);
927
		
931
		
928
		String tome = tomeChp.getValue();
932
		String tome = tomeChp.getValue();
929
		publicationCollectee.setIndicationNvt(tome);
933
		publicationCollectee.setIndicationNvt(tome);
930
		
934
		
931
		String fascicule = fasciculeChp.getValue();
935
		String fascicule = fasciculeChp.getValue();
932
		publicationCollectee.setFascicule(fascicule);
936
		publicationCollectee.setFascicule(fascicule);
933
		
937
		
934
		String pages = pagesChp.getValue();
938
		String pages = pagesChp.getValue();
935
		publicationCollectee.setPages(pages);
939
		publicationCollectee.setPages(pages);
936
		
940
		
937
		Publication publicationARetourner = null;
941
		Publication publicationARetourner = null;
938
		if (!publicationCollectee.comparer(publication)) {
942
		if (!publicationCollectee.comparer(publication)) {
939
			publicationARetourner = publication = publicationCollectee;
943
			publicationARetourner = publication = publicationCollectee;
940
		}
944
		}
941
		return publicationARetourner;
945
		return publicationARetourner;
942
	}
946
	}
943
	
947
	
944
	private String construireDate(String valeurDate) {
948
	private String construireDate(String valeurDate) {
945
		
949
		
946
		String dateComplete = "";
950
		String dateComplete = "";
947
		if (!UtilString.isEmpty(valeurDate)){
951
		if (!UtilString.isEmpty(valeurDate)){
948
			String jour = "00";
952
			String jour = "00";
949
			String mois = "00";
953
			String mois = "00";
950
			String annee = "0000";
954
			String annee = "0000";
951
			String messageErreur = null;
955
			String messageErreur = null;
952
			
956
			
953
			/**  JJ/MM/AAAA  **/
957
			/**  JJ/MM/AAAA  **/
954
			if (valeurDate.matches("\\d{2}/\\d{2}/\\d{4}")) {	
958
			if (valeurDate.matches("\\d{2}/\\d{2}/\\d{4}")) {	
955
				
959
				
956
			}
960
			}
957
				
961
				
958
			/**  MM/AAAA  **/
962
			/**  MM/AAAA  **/
959
			if (valeurDate.matches("\\d{2}/\\d{4}")) {
963
			if (valeurDate.matches("\\d{2}/\\d{4}")) {
960
				dateComplete = valeurDate+"-00";				
964
				dateComplete = valeurDate+"-00";				
961
			}
965
			}
962
			
966
			
963
			/**  AAAA  **/
967
			/**  AAAA  **/
964
			if (valeurDate.matches("\\d{4}")) {
968
			if (valeurDate.matches("\\d{4}")) {
965
				dateComplete = valeurDate+"-00-00";	
969
				dateComplete = valeurDate+"-00-00";	
966
			}
970
			}
967
		}
971
		}
968
		
972
		
969
		return dateComplete;
973
		return dateComplete;
970
	}
974
	}
971
	
975
	
972
	private String construireIntituleEditeur() {
976
	private String construireIntituleEditeur() {
973
		String editeur = "";
977
		String editeur = "";
974
		if (editeurCombobox.getValeur() != null) {
978
		if (editeurCombobox.getValeur() != null) {
975
			Structure structure = new Structure(editeurCombobox.getValeur());
979
			Structure structure = new Structure(editeurCombobox.getValeur());
976
			editeur = structure.getNom();
980
			editeur = structure.getNom();
977
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
981
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
978
			editeur = editeurCombobox.getCombo().getRawValue();
982
			editeur = editeurCombobox.getCombo().getRawValue();
979
		}
983
		}
980
		return editeur;
984
		return editeur;
981
	}
985
	}
982
	
986
	
983
	private String construireIntituleAuteur() {
987
	private String construireIntituleAuteur() {
984
		String intituleAuteur = "";
988
		String intituleAuteur = "";
985
		
989
		
986
		// rangé par ordre désigné par le champ 'cpuap_ordre' de la table PublicationAPersonne
990
		// rangé par ordre désigné par le champ 'cpuap_ordre' de la table PublicationAPersonne
987
		grilleAuteurs.getStore().sort("_ordre_", SortDir.ASC);
991
		grilleAuteurs.getStore().sort("_ordre_", SortDir.ASC);
988
		List<ModelData> auteurs = grilleAuteurs.getStore().getModels();
992
		List<ModelData> auteurs = grilleAuteurs.getStore().getModels();
989
		Iterator<ModelData> itAuteurs = auteurs.iterator();
993
		Iterator<ModelData> itAuteurs = auteurs.iterator();
990
				
994
				
991
		while (itAuteurs.hasNext())	{
995
		while (itAuteurs.hasNext())	{
992
			Personne personneCourante = new PublicationAPersonne(itAuteurs.next(), false).getPersonne();
996
			Personne personneCourante = new PublicationAPersonne(itAuteurs.next(), false).getPersonne();
993
			intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
997
			intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
994
			if (itAuteurs.hasNext())	{
998
			if (itAuteurs.hasNext())	{
995
				intituleAuteur+=", ";
999
				intituleAuteur+=", ";
996
			}
1000
			}
997
		} 
1001
		} 
998
		return intituleAuteur;
1002
		return intituleAuteur;
999
	}
1003
	}
1000
	
1004
	
1001
	private String construireNomComplet() {
1005
	private String construireNomComplet() {
1002
		// Intitulé de la publication complet : fmt_auteur, date_parution(année). titre. Editeur (nom), collection, fascicule, indication_nvt. pages.
1006
		// Intitulé de la publication complet : fmt_auteur, date_parution(année). titre. Editeur (nom), collection, fascicule, indication_nvt. pages.
1003
		String nomComplet = "";
1007
		String nomComplet = "";
1004
		String auteurs = construireIntituleAuteur();
1008
		String auteurs = construireIntituleAuteur();
1005
		String annee = datePublicationChp.getRawValue();
1009
		String annee = datePublicationChp.getRawValue();
1006
		String titre = titreChp.getValue();
1010
		String titre = titreChp.getValue();
1007
		String editeur = construireIntituleEditeur();
1011
		String editeur = construireIntituleEditeur();
1008
		
1012
		
1009
		nomComplet += auteurs+", "+annee+". "+titre+".";
1013
		nomComplet += auteurs+", "+annee+". "+titre+".";
1010
		
1014
		
1011
		if (!UtilString.isEmpty(editeur)) {
1015
		if (!UtilString.isEmpty(editeur)) {
1012
			nomComplet += " Éditeur "+editeur+".";
1016
			nomComplet += " Éditeur "+editeur+".";
1013
		}
1017
		}
1014
		
1018
		
1015
		if (collectionChp.getValue() != null) {
1019
		if (collectionChp.getValue() != null) {
1016
			String revue = collectionChp.getValue();
1020
			String revue = collectionChp.getValue();
1017
			nomComplet += ", "+revue;
1021
			nomComplet += ", "+revue;
1018
		}
1022
		}
1019
		
1023
		
1020
		if (fasciculeChp.getValue() != null) {
1024
		if (fasciculeChp.getValue() != null) {
1021
			String fascicule = fasciculeChp.getValue();
1025
			String fascicule = fasciculeChp.getValue();
1022
			nomComplet += ", "+fascicule;
1026
			nomComplet += ", "+fascicule;
1023
		}
1027
		}
1024
		
1028
		
1025
		if (tomeChp.getValue() != null) {
1029
		if (tomeChp.getValue() != null) {
1026
			String tomaison = tomeChp.getValue();
1030
			String tomaison = tomeChp.getValue();
1027
			nomComplet += ", "+tomaison;
1031
			nomComplet += ", "+tomaison;
1028
		}
1032
		}
1029
		
1033
		
1030
		if (collectionChp.getValue() != null || fasciculeChp.getValue() != null || tomeChp.getValue() != null) {
1034
		if (collectionChp.getValue() != null || fasciculeChp.getValue() != null || tomeChp.getValue() != null) {
1031
			nomComplet += ".";	
1035
			nomComplet += ".";	
1032
		}
1036
		}
1033
		
1037
		
1034
		if (pagesChp.getValue() != null) {
1038
		if (pagesChp.getValue() != null) {
1035
			String pages = pagesChp.getValue();
1039
			String pages = pagesChp.getValue();
1036
			nomComplet += pages+".";
1040
			nomComplet += pages+".";
1037
		}
1041
		}
1038
		
1042
		
1039
		return nomComplet;
1043
		return nomComplet;
1040
	}
1044
	}
1041
	
1045
	
1042
	//+----------------------------------------------------------------------------------------------------------------+
1046
	//+----------------------------------------------------------------------------------------------------------------+
1043
	//    Méthodes publiques
1047
	//    Méthodes publiques
1044
	
1048
	
1045
	public boolean verifierFormulaire() {
1049
	public boolean verifierFormulaire() {
1046
		boolean valide = true;
1050
		boolean valide = true;
1047
		ArrayList<String> messages = new ArrayList<String>();
1051
		ArrayList<String> messages = new ArrayList<String>();
1048
		
1052
		
1049
		// Tester si au moins un auteur est présent
1053
		// Tester si au moins un auteur est présent
1050
		if (grilleAuteurs.getStore().getModels().size() == 0) {
1054
		if (grilleAuteurs.getStore().getModels().size() == 0) {
1051
			messages.add("Veuillez saisir au moins un auteur.");
1055
			messages.add("Veuillez saisir au moins un auteur.");
1052
		}
1056
		}
1053
		
1057
		
1054
		String titre = titreChp.getValue();
1058
		String titre = titreChp.getValue();
1055
		if (titre == null || titre.equals("")) {
1059
		if (titre == null || titre.equals("")) {
1056
			messages.add("Veuillez saisir le titre de la publication !");
1060
			messages.add("Veuillez saisir le titre de la publication !");
1057
		}
1061
		}
1058
		
1062
		
1059
		String uri = uriChp.getValue();
1063
		String uri = uriChp.getValue();
1060
		if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
1064
		if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
1061
			messages.add("L'URL saisie n'est pas valide !");
1065
			messages.add("L'URL saisie n'est pas valide !");
1062
		}
1066
		}
1063
		
1067
		
1064
		String datePublication = datePublicationChp.getRawValue();
1068
		String datePublication = datePublicationChp.getRawValue();
1065
		if (datePublication == null || datePublication.equals("")) {
1069
		if (datePublication == null || datePublication.equals("")) {
1066
			messages.add("Veuillez saisir une année de parution !");
1070
			messages.add("Veuillez saisir une année de parution !");
1067
		} else {
1071
		} else {
1068
			if (!Publication.etreAnneeParutionValide(datePublication)) {
1072
			if (!Publication.etreAnneeParutionValide(datePublication)) {
1069
				messages.add("Le format de l'année saisie est incorrect ! Formats acceptés : AAAA ou AAAA-AAAA");
1073
				messages.add("Le format de l'année saisie est incorrect ! Formats acceptés : AAAA ou AAAA-AAAA");
1070
			}
1074
			}
1071
		}
1075
		}
1072
		
1076
		
1073
		String pages = pagesChp.getValue();
1077
		String pages = pagesChp.getValue();
1074
		String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
1078
		String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
1075
		if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
1079
		if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
1076
			messages.add("Le format des pages est incorrect !");
1080
			messages.add("Le format des pages est incorrect !");
1077
		}
1081
		}
1078
		
1082
		
1079
		if (messages.size() != 0) {
1083
		if (messages.size() != 0) {
1080
			String[] tableauDeMessages = {};
1084
			String[] tableauDeMessages = {};
1081
			tableauDeMessages = messages.toArray(tableauDeMessages);
1085
			tableauDeMessages = messages.toArray(tableauDeMessages);
1082
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
1086
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
1083
			valide = false;
1087
			valide = false;
1084
		}
1088
		}
1085
		return valide;		
1089
		return valide;		
1086
	}
1090
	}
1087
	
1091
	
1088
	
1092
	
1089
	//+----------------------------------------------------------------------------------------------------------------+
1093
	//+----------------------------------------------------------------------------------------------------------------+
1090
	//    Accesseurs
1094
	//    Accesseurs
1091
	
1095
	
1092
	//+----------------------------------------------------------------------------------------------------------------+
1096
	//+----------------------------------------------------------------------------------------------------------------+
1093
	//    Rafraichir
1097
	//    Rafraichir
1094
	
1098
	
1095
	public void rafraichir(Object nouvellesDonnees) {
1099
	public void rafraichir(Object nouvellesDonnees) {
1096
		if (nouvellesDonnees instanceof Publication) {
1100
		if (nouvellesDonnees instanceof Publication) {
1097
			publication = (Publication) nouvellesDonnees;
1101
			publication = (Publication) nouvellesDonnees;
1098
		} else if (nouvellesDonnees instanceof Information) {
1102
		} else if (nouvellesDonnees instanceof Information) {
1099
			rafraichirInformation((Information) nouvellesDonnees);
1103
			rafraichirInformation((Information) nouvellesDonnees);
1100
		} else {
1104
		} else {
1101
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
1105
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
1102
		}
1106
		}
1103
	}
1107
	}
1104
	
1108
	
1105
	private void rafraichirInformation(Information info) {
1109
	private void rafraichirInformation(Information info) {
1106
		
1110
		
1107
		String type = info.getType();
1111
		String type = info.getType();
1108
		if (type.equals("auteurs_enregistres")) {
1112
		if (type.equals("auteurs_enregistres")) {
1109
			miseAJourAuteursInitialListe();
1113
			miseAJourAuteursInitialListe();
1110
			initialiserAuteurs();
1114
			initialiserAuteurs();
1111
			repandreRafraichissement();
1115
			repandreRafraichissement();
1112
			controlerFermeture();
1116
			controlerFermeture();
1113
		} else if (type.equals("chargement_modifier_ok"))	{
1117
		} else if (type.equals("chargement_modifier_ok"))	{
1114
			Debug.log("Chargement 1");
1118
			Debug.log("Chargement 1");
1115
			peuplerFormulaire();
1119
			peuplerFormulaire();
1116
			genererTitreFormulaire();
1120
			genererTitreFormulaire();
1117
		}
1121
		}
1118
 
1122
 
1119
		if (type.equals("personne_ajoutee")) {
1123
		if (type.equals("personne_ajoutee")) {
1120
			if (info.getDonnee(0) != null) {
1124
			if (info.getDonnee(0) != null) {
1121
				Personne personne = (Personne) info.getDonnee(0);
1125
				Personne personne = (Personne) info.getDonnee(0);
1122
				personne = formaterChampPersonnePourGrille(personne);
1126
				personne = formaterChampPersonnePourGrille(personne);
1123
				PublicationAPersonne pap = new PublicationAPersonne(personne, false);
1127
				PublicationAPersonne pap = new PublicationAPersonne(personne, false);
1124
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
1128
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
1125
				ajouterDansGrille(pap);
1129
				ajouterDansGrille(pap);
1126
			}
1130
			}
1127
		} else if (type.equals("personne_modifiee")) {
1131
		} else if (type.equals("personne_modifiee")) {
1128
			if (info.getDonnee(0) != null) {
1132
			if (info.getDonnee(0) != null) {
1129
				
1133
				
1130
				// créer la nouvelle entrée
1134
				// créer la nouvelle entrée
1131
				Personne personne = (Personne) info.getDonnee(0);
1135
				Personne personne = (Personne) info.getDonnee(0);
1132
				PublicationAPersonne pap = new PublicationAPersonne();
1136
				PublicationAPersonne pap = new PublicationAPersonne();
1133
				pap.setPersonne(personne);
1137
				pap.setPersonne(personne);
1134
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
1138
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
1135
				
1139
				
1136
				// supprimer l'entrée précédente
1140
				// supprimer l'entrée précédente
1137
				PublicationAPersonne personneDansGrille = new PublicationAPersonne(grilleAuteurs.getStore().findModel("cp_id_personne", personne.getId()), false);
1141
				PublicationAPersonne personneDansGrille = new PublicationAPersonne(grilleAuteurs.getStore().findModel("cp_id_personne", personne.getId()), false);
1138
				int index = grilleAuteurs.getStore().indexOf(personneDansGrille);
1142
				int index = grilleAuteurs.getStore().indexOf(personneDansGrille);
1139
				grilleAuteurs.getStore().remove(personneDansGrille);
1143
				grilleAuteurs.getStore().remove(personneDansGrille);
1140
				if(index != -1) {
1144
				if(index != -1) {
1141
					// ajouter la nouvelle entrée dans la grille
1145
					// ajouter la nouvelle entrée dans la grille
1142
					ajouterDansGrille(pap, index);
1146
					ajouterDansGrille(pap, index);
1143
				} else {
1147
				} else {
1144
					ajouterDansGrille(pap);
1148
					ajouterDansGrille(pap);
1145
				}
1149
				}
1146
			}
1150
			}
1147
		} else if (info.getType().equals("modif_publication")) {
1151
		} else if (info.getType().equals("modif_publication")) {
1148
			InfoLogger.display("Modification d'une publication", info.toString());
1152
			InfoLogger.display("Modification d'une publication", info.toString());
1149
			soumettreAuteurs();
1153
			soumettreAuteurs();
1150
		} else if (info.getType().equals("ajout_publication")) {
1154
		} else if (info.getType().equals("ajout_publication")) {
1151
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String && ((String) info.getDonnee(0)).matches("[0-9]+")) {
1155
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String && ((String) info.getDonnee(0)).matches("[0-9]+")) {
1152
				String idPublication = (String) info.getDonnee(0);
1156
				String idPublication = (String) info.getDonnee(0);
1153
				this.publicationId = idPublication;
1157
				this.publicationId = idPublication;
1154
				this.publication.setId(idPublication);				
1158
				this.publication.setId(idPublication);				
1155
				soumettreAuteurs();
1159
				soumettreAuteurs();
1156
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
1160
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
1157
			} else {
1161
			} else {
1158
				InfoLogger.display("Ajout d'une publication", info.toString());
1162
				InfoLogger.display("Ajout d'une publication", info.toString());
1159
			}
1163
			}
1160
		} else if (info.getType().equals("suppression_publication_a_personne")) {
1164
		} else if (info.getType().equals("suppression_publication_a_personne")) {
1161
			InfoLogger.display("Suppression d'auteur", info.getMessages().toString());
1165
			InfoLogger.display("Suppression d'auteur", info.getMessages().toString());
1162
		}
1166
		}
1163
	}
1167
	}
1164
	
1168
	
1165
	private Personne formaterChampPersonnePourGrille(Personne personne) {
1169
	private Personne formaterChampPersonnePourGrille(Personne personne) {
1166
		personne.set("cp_id_personne", personne.getId());
1170
		personne.set("cp_id_personne", personne.getId());
1167
		personne.set("cp_fmt_nom_complet", personne.getNomComplet());
1171
		personne.set("cp_fmt_nom_complet", personne.getNomComplet());
1168
		personne.set("cp_fmt_nom_complet", personne.getNomComplet());
1172
		personne.set("cp_fmt_nom_complet", personne.getNomComplet());
1169
		personne.set("cpuap_id_personne", personne.getId());
1173
		personne.set("cpuap_id_personne", personne.getId());
1170
		personne.set("cp_code_postal", personne.get("code_postal"));
1174
		personne.set("cp_code_postal", personne.get("code_postal"));
1171
		personne.set("cp_ville", personne.get("ville"));
1175
		personne.set("cp_ville", personne.get("ville"));
1172
		personne.set("cp_truk_courriel", personne.getCourriel());
1176
		personne.set("cp_truk_courriel", personne.getCourriel());
1173
		
1177
		
1174
		personne.set("cpuap_ordre", grilleAuteurs.getStore().getCount());
1178
		personne.set("cpuap_ordre", grilleAuteurs.getStore().getCount());
1175
		personne.set("cp_nom", personne.getNom());
1179
		personne.set("cp_nom", personne.getNom());
1176
		personne.set("cp_prenom", personne.getPrenom());
1180
		personne.set("cp_prenom", personne.getPrenom());
1177
		return personne;
1181
		return personne;
1178
	}
1182
	}
1179
	
1183
	
1180
	private void repandreRafraichissement() {
1184
	private void repandreRafraichissement() {
1181
		if (vueExterneARafraichirApresValidation != null) {
1185
		if (vueExterneARafraichirApresValidation != null) {
1182
			String type = "publication_modifiee";
1186
			String type = "publication_modifiee";
1183
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
1187
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
1184
				type = "publication_ajoutee";
1188
				type = "publication_ajoutee";
1185
			}
1189
			}
1186
			Information info = new Information(type);
1190
			Information info = new Information(type);
1187
			info.setDonnee(0, publication);
1191
			info.setDonnee(0, publication);
1188
			vueExterneARafraichirApresValidation.rafraichir(info);
1192
			vueExterneARafraichirApresValidation.rafraichir(info);
1189
		}
1193
		}
1190
	}
1194
	}
1191
}
1195
}