Subversion Repositories eFlore/Applications.coel

Rev

Rev 1880 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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