Subversion Repositories eFlore/Applications.coel

Rev

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

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