Subversion Repositories eFlore/Applications.coel

Rev

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

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