Subversion Repositories eFlore/Applications.coel

Rev

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

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