Subversion Repositories eFlore/Applications.coel

Rev

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

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