Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1899 Rev 1900
1
package org.tela_botanica.client.vues.collection;
1
package org.tela_botanica.client.vues.collection;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.HashMap;
4
import java.util.HashMap;
5
import java.util.List;
5
import java.util.List;
6
 
6
 
7
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
8
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
9
import org.tela_botanica.client.composants.GrillePaginable;
9
import org.tela_botanica.client.composants.GrillePaginable;
10
import org.tela_botanica.client.composants.InfoLogger;
10
import org.tela_botanica.client.composants.InfoLogger;
11
import org.tela_botanica.client.composants.pagination.ProxyCollectionAPublication;
11
import org.tela_botanica.client.composants.pagination.ProxyCollectionAPublication;
12
import org.tela_botanica.client.composants.pagination.ProxyPublications;
12
import org.tela_botanica.client.composants.pagination.ProxyPublications;
13
import org.tela_botanica.client.images.Images;
13
import org.tela_botanica.client.images.Images;
14
import org.tela_botanica.client.interfaces.Rafraichissable;
14
import org.tela_botanica.client.interfaces.Rafraichissable;
15
import org.tela_botanica.client.modeles.Information;
15
import org.tela_botanica.client.modeles.Information;
16
import org.tela_botanica.client.modeles.aDonnee;
16
import org.tela_botanica.client.modeles.aDonnee;
17
import org.tela_botanica.client.modeles.collection.Collection;
17
import org.tela_botanica.client.modeles.collection.Collection;
18
import org.tela_botanica.client.modeles.collection.CollectionAPublication;
18
import org.tela_botanica.client.modeles.collection.CollectionAPublication;
19
import org.tela_botanica.client.modeles.collection.CollectionAPublicationListe;
19
import org.tela_botanica.client.modeles.collection.CollectionAPublicationListe;
20
import org.tela_botanica.client.modeles.publication.Publication;
20
import org.tela_botanica.client.modeles.publication.Publication;
21
import org.tela_botanica.client.util.Debug;
21
import org.tela_botanica.client.util.Debug;
22
import org.tela_botanica.client.vues.FenetreForm;
22
import org.tela_botanica.client.vues.FenetreForm;
23
import org.tela_botanica.client.vues.Formulaire;
23
import org.tela_botanica.client.vues.Formulaire;
24
import org.tela_botanica.client.vues.FormulaireBarreValidation;
24
import org.tela_botanica.client.vues.FormulaireBarreValidation;
25
import org.tela_botanica.client.vues.FormulaireOnglet;
25
import org.tela_botanica.client.vues.FormulaireOnglet;
26
import org.tela_botanica.client.vues.publication.PublicationForm;
26
import org.tela_botanica.client.vues.publication.PublicationForm;
27
 
27
 
28
import com.extjs.gxt.ui.client.core.XTemplate;
28
import com.extjs.gxt.ui.client.core.XTemplate;
29
import com.extjs.gxt.ui.client.data.ModelData;
29
import com.extjs.gxt.ui.client.data.ModelData;
30
import com.extjs.gxt.ui.client.data.ModelType;
30
import com.extjs.gxt.ui.client.data.ModelType;
31
import com.extjs.gxt.ui.client.event.BaseEvent;
31
import com.extjs.gxt.ui.client.event.BaseEvent;
32
import com.extjs.gxt.ui.client.event.ButtonEvent;
32
import com.extjs.gxt.ui.client.event.ButtonEvent;
33
import com.extjs.gxt.ui.client.event.Events;
33
import com.extjs.gxt.ui.client.event.Events;
34
import com.extjs.gxt.ui.client.event.Listener;
34
import com.extjs.gxt.ui.client.event.Listener;
35
import com.extjs.gxt.ui.client.event.SelectionListener;
35
import com.extjs.gxt.ui.client.event.SelectionListener;
36
import com.extjs.gxt.ui.client.store.ListStore;
36
import com.extjs.gxt.ui.client.store.ListStore;
37
import com.extjs.gxt.ui.client.store.Store;
37
import com.extjs.gxt.ui.client.store.Store;
38
import com.extjs.gxt.ui.client.store.StoreEvent;
38
import com.extjs.gxt.ui.client.store.StoreEvent;
39
import com.extjs.gxt.ui.client.widget.ContentPanel;
39
import com.extjs.gxt.ui.client.widget.ContentPanel;
40
import com.extjs.gxt.ui.client.widget.Text;
40
import com.extjs.gxt.ui.client.widget.Text;
41
import com.extjs.gxt.ui.client.widget.button.Button;
41
import com.extjs.gxt.ui.client.widget.button.Button;
42
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
42
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
43
import com.extjs.gxt.ui.client.widget.form.Field;
43
import com.extjs.gxt.ui.client.widget.form.Field;
44
import com.extjs.gxt.ui.client.widget.form.FormPanel;
44
import com.extjs.gxt.ui.client.widget.form.FormPanel;
45
import com.extjs.gxt.ui.client.widget.form.Validator;
45
import com.extjs.gxt.ui.client.widget.form.Validator;
46
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
46
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
47
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
47
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
48
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
48
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
49
import com.extjs.gxt.ui.client.widget.grid.Grid;
49
import com.extjs.gxt.ui.client.widget.grid.Grid;
50
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
50
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
51
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
51
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
52
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
52
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
53
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
53
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
54
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
54
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
55
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
55
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
56
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
56
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
57
import com.google.gwt.core.client.GWT;
57
import com.google.gwt.core.client.GWT;
58
import com.extjs.gxt.ui.client.widget.form.CheckBox;
58
import com.extjs.gxt.ui.client.widget.form.CheckBox;
59
 
59
 
60
public class CollectionFormPublication extends FormulaireOnglet implements Rafraichissable {
60
public class CollectionFormPublication extends FormulaireOnglet implements Rafraichissable {
61
	
61
	
62
	public static final String ID = "publication";
62
	public static final String ID = "publication";
63
	private Collection collection = null;
63
	private Collection collection = null;
64
	private static int idGenere = 1;
64
	private static int idGenere = 1;
65
	
65
	
66
	private ContentPanel panneauPrincipal = null;
66
	private ContentPanel panneauPrincipal = null;
67
	private ToolBar barreOutils = null;
67
	private ToolBar barreOutils = null;
68
	private GrillePaginable<ModelData> grille;
68
	private GrillePaginable<ModelData> grille;
69
	
69
	
70
	private CollectionAPublicationListe publicationsAjoutees = null;
70
	private CollectionAPublicationListe publicationsAjoutees = null;
71
	private CollectionAPublicationListe publicationsSupprimees = null;
71
	private CollectionAPublicationListe publicationsSupprimees = null;
72
	private CollectionAPublicationListe publicationsModifiees = null;
72
	private CollectionAPublicationListe publicationsModifiees = null;
73
	private ChampComboBoxRechercheTempsReelPaginable publicationsSaisiesComboBox = null;
73
	private ChampComboBoxRechercheTempsReelPaginable publicationsSaisiesComboBox = null;
74
	private Button publicationsBoutonSupprimer = null;
74
	private Button publicationsBoutonSupprimer = null;
75
	private Button publicationsBoutonModifier = null;
75
	private Button publicationsBoutonModifier = null;
76
	
76
	
77
	private FenetreForm fenetreFormulaire = null;
77
	private FenetreForm fenetreFormulaire = null;
78
	
78
	
79
	public boolean publicationsSontModifiees = false;
79
	public boolean publicationsSontModifiees = false;
80
	
80
	
81
	public CollectionFormPublication(Formulaire formulaireCourrant) {
81
	public CollectionFormPublication(Formulaire formulaireCourrant) {
82
		
82
		
83
		initialiserOnglet(formulaireCourrant);
83
		initialiserOnglet(formulaireCourrant);
84
		setId(ID);
84
		setId(ID);
85
		setText(Mediateur.i18nC.collectionPublication());
85
		setText(Mediateur.i18nC.collectionPublication());
86
		setStyleAttribute("padding", "0");
86
		setStyleAttribute("padding", "0");
87
		
87
		
88
		initialiser();
88
		initialiser();
89
		
89
		
90
		panneauPrincipal = creerPanneauContenantGrille();
90
		panneauPrincipal = creerPanneauContenantGrille();
91
		setLayout(new FitLayout());
91
		setLayout(new FitLayout());
92
		barreOutils = creerBarreOutilsGrille();
92
		barreOutils = creerBarreOutilsGrille();
93
		panneauPrincipal.setTopComponent(barreOutils);
93
		panneauPrincipal.setTopComponent(barreOutils);
94
		grille = creerGrille();
94
		grille = creerGrille();
95
		panneauPrincipal.setLayout(new FitLayout());
95
		panneauPrincipal.setLayout(new FitLayout());
96
		panneauPrincipal.add(grille);
96
		panneauPrincipal.add(grille);
97
		
97
		
98
		add(panneauPrincipal);		
98
		add(panneauPrincipal);		
99
	}
99
	}
100
	
100
	
101
	private void initialiser() {
101
	private void initialiser() {
102
		// Remise à zéro des modification dans la liste des auteurs
102
		// Remise à zéro des modification dans la liste des auteurs
103
		idGenere = 1;
103
		idGenere = 1;
104
		publicationsAjoutees = new CollectionAPublicationListe();
104
		publicationsAjoutees = new CollectionAPublicationListe();
105
		publicationsSupprimees = new CollectionAPublicationListe();
105
		publicationsSupprimees = new CollectionAPublicationListe();
106
		publicationsModifiees = new CollectionAPublicationListe();
106
		publicationsModifiees = new CollectionAPublicationListe();
107
		
107
		
108
		collection = ((CollectionForm) formulaire).collection;
108
		collection = ((CollectionForm) formulaire).collection;
109
	}
109
	}
110
	
110
	
111
	private ContentPanel creerPanneauContenantGrille() {
111
	private ContentPanel creerPanneauContenantGrille() {
112
		ContentPanel panneau = new ContentPanel();
112
		ContentPanel panneau = new ContentPanel();
113
		
113
		
114
		panneau.setHeadingHtml(i18nC.collectionPublicationTitre());
114
		panneau.setHeadingHtml(i18nC.collectionPublicationTitre());
115
		panneau.setIcon(Images.ICONES.table());
115
		panneau.setIcon(Images.ICONES.table());
116
		panneau.setLayout(new FitLayout());
116
		panneau.setLayout(new FitLayout());
117
		panneau.setFrame(true);
117
		panneau.setFrame(true);
118
		
118
		
119
		return panneau;
119
		return panneau;
120
	}
120
	}
121
 
121
 
122
	private ToolBar creerBarreOutilsGrille() {
122
	private ToolBar creerBarreOutilsGrille() {
123
		ToolBar barreOutils = new ToolBar();  
123
		ToolBar barreOutils = new ToolBar();  
124
 
124
 
125
		publicationsSaisiesComboBox = creerComboBoxPublicationsSaisis();
125
		publicationsSaisiesComboBox = creerComboBoxPublicationsSaisis();
126
		barreOutils.add(publicationsSaisiesComboBox);
126
		barreOutils.add(publicationsSaisiesComboBox);
127
		
127
		
128
		barreOutils.add(new Text(" ou "));
128
		barreOutils.add(new Text(" ou "));
129
 
129
 
130
		Button ajouterBouton = creerBoutonAjouter();
130
		Button ajouterBouton = creerBoutonAjouter();
131
		barreOutils.add(ajouterBouton);
131
		barreOutils.add(ajouterBouton);
132
		
132
		
133
		barreOutils.add(new SeparatorToolItem());
133
		barreOutils.add(new SeparatorToolItem());
134
		
134
		
135
		publicationsBoutonModifier = creerBoutonModifier();
135
		publicationsBoutonModifier = creerBoutonModifier();
136
		barreOutils.add(publicationsBoutonModifier);
136
		barreOutils.add(publicationsBoutonModifier);
137
		
137
		
138
		barreOutils.add(new SeparatorToolItem());
138
		barreOutils.add(new SeparatorToolItem());
139
		
139
		
140
		publicationsBoutonSupprimer = creerBoutonSupprimer();
140
		publicationsBoutonSupprimer = creerBoutonSupprimer();
141
		barreOutils.add(publicationsBoutonSupprimer);		
141
		barreOutils.add(publicationsBoutonSupprimer);		
142
		
142
		
143
		barreOutils.add(new SeparatorToolItem());
143
		barreOutils.add(new SeparatorToolItem());
144
 
144
 
145
		return barreOutils;
145
		return barreOutils;
146
	}
146
	}
147
 
147
 
148
	private Button creerBoutonAjouter() {
148
	private Button creerBoutonAjouter() {
149
		Button bouton = new Button(i18nC.ajouter());
149
		Button bouton = new Button(i18nC.ajouter());
150
		bouton.setIcon(Images.ICONES.vcardAjouter());
150
		bouton.setIcon(Images.ICONES.vcardAjouter());
151
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
151
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
152
			public void componentSelected(ButtonEvent ce) {  
152
			public void componentSelected(ButtonEvent ce) {  
153
				fenetreFormulaire = creerFenetreModaleAvecFormulairePublication(Formulaire.MODE_AJOUTER);
153
				fenetreFormulaire = creerFenetreModaleAvecFormulairePublication(Formulaire.MODE_AJOUTER);
154
				fenetreFormulaire.show();
154
				fenetreFormulaire.show();
155
			}  
155
			}  
156
		});
156
		});
157
		return bouton;
157
		return bouton;
158
	}
158
	}
159
	
159
	
160
	private Button creerBoutonModifier() {
160
	private Button creerBoutonModifier() {
161
		Button bouton = new Button(i18nC.modifier());
161
		Button bouton = new Button(i18nC.modifier());
162
		bouton.setIcon(Images.ICONES.vcardModifier());
162
		bouton.setIcon(Images.ICONES.vcardModifier());
163
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
163
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
164
			public void componentSelected(ButtonEvent ce) {  
164
			public void componentSelected(ButtonEvent ce) {  
165
				ModelData publicationSaisieSelectionnee = grille.getGrille().getSelectionModel().getSelectedItem();
165
				ModelData publicationSaisieSelectionnee = grille.getGrille().getSelectionModel().getSelectedItem();
166
				if (publicationSaisieSelectionnee == null) {
166
				if (publicationSaisieSelectionnee == null) {
167
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
167
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
168
				} else {
168
				} else {
169
					fenetreFormulaire = creerFenetreModaleAvecFormulairePublication(Formulaire.MODE_MODIFIER);
169
					fenetreFormulaire = creerFenetreModaleAvecFormulairePublication(Formulaire.MODE_MODIFIER);
170
					fenetreFormulaire.show();
170
					fenetreFormulaire.show();
171
				}
171
				}
172
			}  
172
			}  
173
		});
173
		});
174
		return bouton;
174
		return bouton;
175
	}
175
	}
176
	
176
	
177
	private FenetreForm creerFenetreModaleAvecFormulairePublication(String mode) {
177
	private FenetreForm creerFenetreModaleAvecFormulairePublication(String mode) {
178
		String publicationId = null;
178
		String publicationId = null;
179
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
179
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
180
			CollectionAPublication publicationSaisiSelectionne = new CollectionAPublication(grille.getGrille().getSelectionModel().getSelectedItem(), false);
180
			CollectionAPublication publicationSaisiSelectionne = new CollectionAPublication(grille.getGrille().getSelectionModel().getSelectedItem(), false);
181
			publicationId = publicationSaisiSelectionne.getIdPublication();
181
			publicationId = publicationSaisiSelectionne.getIdPublication();
182
		}
182
		}
183
		
183
		
184
		final FenetreForm fenetre = new FenetreForm("");
184
		final FenetreForm fenetre = new FenetreForm("");
185
		final PublicationForm formulaire = creerFormulairePublication(fenetre, publicationId);
185
		final PublicationForm formulaire = creerFormulairePublication(fenetre, publicationId);
186
		fenetre.add(formulaire);
186
		fenetre.add(formulaire);
187
		return fenetre;
187
		return fenetre;
188
	}
188
	}
189
	
189
	
190
	private PublicationForm creerFormulairePublication(final FenetreForm fenetre, final String publicationId) {
190
	private PublicationForm creerFormulairePublication(final FenetreForm fenetre, final String publicationId) {
191
		PublicationForm formulairePublication = new PublicationForm(mediateur, publicationId, this);
191
		PublicationForm formulairePublication = new PublicationForm(mediateur, publicationId, this);
192
		FormPanel panneauFormulaire = formulairePublication.getFormulaire();
192
		FormPanel panneauFormulaire = formulairePublication.getFormulaire();
193
		fenetre.setHeadingHtml(panneauFormulaire.getHeadingHtml());
193
		fenetre.setHeadingHtml(panneauFormulaire.getHeadingHtml());
194
		panneauFormulaire.setHeaderVisible(false);
194
		panneauFormulaire.setHeaderVisible(false);
195
		panneauFormulaire.setTopComponent(null);
195
		panneauFormulaire.setTopComponent(null);
196
		
196
		
197
		// 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.
197
		// 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.
198
		panneauFormulaire.getBottomComponent().hide();
198
		panneauFormulaire.getBottomComponent().hide();
199
		SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePublication(fenetre, formulairePublication);
199
		SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePublication(fenetre, formulairePublication);
200
		final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
200
		final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
201
		fenetre.setBottomComponent(barreValidation);
201
		fenetre.setBottomComponent(barreValidation);
202
		
202
		
203
		return formulairePublication;
203
		return formulairePublication;
204
	}
204
	}
205
	
205
	
206
	private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePublication(final FenetreForm fenetre, final PublicationForm formulaire) {
206
	private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePublication(final FenetreForm fenetre, final PublicationForm formulaire) {
207
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
207
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
208
			public void componentSelected(ButtonEvent ce) {
208
			public void componentSelected(ButtonEvent ce) {
209
				String code = ((Button) ce.getComponent()).getData("code");
209
				String code = ((Button) ce.getComponent()).getData("code");
210
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
210
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
211
					if (formulaire.soumettreFormulaire()) {
211
					if (formulaire.soumettreFormulaire()) {
212
						fenetre.hide();
212
						fenetre.hide();
213
					}
213
					}
214
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
214
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
215
					formulaire.soumettreFormulaire();
215
					formulaire.soumettreFormulaire();
216
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
216
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
217
					fenetre.hide();
217
					fenetre.hide();
218
				}
218
				}
219
			}
219
			}
220
		};
220
		};
221
		
221
		
222
		return ecouteur;
222
		return ecouteur;
223
	}
223
	}
224
	
224
	
225
	private Button creerBoutonSupprimer() {
225
	private Button creerBoutonSupprimer() {
226
		Button bouton = new Button(i18nC.supprimer());
226
		Button bouton = new Button(i18nC.supprimer());
227
		bouton.setIcon(Images.ICONES.vcardSupprimer());
227
		bouton.setIcon(Images.ICONES.vcardSupprimer());
228
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
228
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
229
			public void componentSelected(ButtonEvent ce) {
229
			public void componentSelected(ButtonEvent ce) {
230
				List<ModelData> listeDonneesSelectionnees = grille.getGrille().getSelectionModel().getSelectedItems();
230
				List<ModelData> listeDonneesSelectionnees = grille.getGrille().getSelectionModel().getSelectedItems();
231
				for (ModelData donneeSelectionnee : listeDonneesSelectionnees) {
231
				for (ModelData donneeSelectionnee : listeDonneesSelectionnees) {
232
					CollectionAPublication publicationSaisieSelectionnee = new CollectionAPublication(grille.getGrille().getSelectionModel().getSelectedItem(), false);
232
					CollectionAPublication publicationSaisieSelectionnee = new CollectionAPublication(grille.getGrille().getSelectionModel().getSelectedItem(), false);
233
					supprimerDansGrille(publicationSaisieSelectionnee, donneeSelectionnee);
233
					supprimerDansGrille(publicationSaisieSelectionnee, donneeSelectionnee);
234
				}
234
				}
235
			}   
235
			}   
236
		});
236
		});
237
		return bouton;
237
		return bouton;
238
	}
238
	}
239
 
239
 
240
	private void actualiserGrille() {
240
	private void actualiserGrille() {
241
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
241
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
242
			mediateur.selectionnerCollectionAPublication(this, collection.getId(), null);
242
			mediateur.selectionnerCollectionAPublication(this, collection.getId(), null);
243
		} else {
243
		} else {
244
			grille.getStore().removeAll();
244
			grille.getStore().removeAll();
245
			layout();
245
			layout();
246
		}
246
		}
247
	}
247
	}
248
	
248
	
249
	private ChampComboBoxRechercheTempsReelPaginable creerComboBoxPublicationsSaisis() {
249
	private ChampComboBoxRechercheTempsReelPaginable creerComboBoxPublicationsSaisis() {
250
		
250
		
251
		ModelType modelTypePublications = new ModelType();
251
		ModelType modelTypePublications = new ModelType();
252
		modelTypePublications.setRoot("publications");
252
		modelTypePublications.setRoot("publications");
253
		modelTypePublications.setTotalName("nbElements");
253
		modelTypePublications.setTotalName("nbElements");
254
		modelTypePublications.addField("ccapu_id_collection");
254
		modelTypePublications.addField("ccapu_id_collection");
255
		modelTypePublications.addField("ccapu_id_publication");
255
		modelTypePublications.addField("ccapu_id_publication");
256
		modelTypePublications.addField("ccapu_source");
256
		modelTypePublications.addField("ccapu_source");
257
		modelTypePublications.addField("cc_nom");
257
		modelTypePublications.addField("cc_nom");
258
		modelTypePublications.addField("cc_id_collection");
258
		modelTypePublications.addField("cc_id_collection");
259
		modelTypePublications.addField("cpu_id_publication");
259
		modelTypePublications.addField("cpu_id_publication");
260
		modelTypePublications.addField("cpu_fmt_nom_complet");
260
		modelTypePublications.addField("cpu_fmt_nom_complet");
261
		modelTypePublications.addField("cpu_titre");
261
		modelTypePublications.addField("cpu_titre");
262
		modelTypePublications.addField("cpu_nom");
262
		modelTypePublications.addField("cpu_nom");
263
		modelTypePublications.addField("cpu_fmt_auteur");
263
		modelTypePublications.addField("cpu_fmt_auteur");
264
		modelTypePublications.addField("cpu_indication_nvt");
264
		modelTypePublications.addField("cpu_indication_nvt");
265
		modelTypePublications.addField("cpu_truk_pages");
265
		modelTypePublications.addField("cpu_truk_pages");
266
		modelTypePublications.addField("cpu_fascicule");
266
		modelTypePublications.addField("cpu_fascicule");
267
		modelTypePublications.addField("cpu_date_parution");
267
		modelTypePublications.addField("cpu_date_parution");
268
		modelTypePublications.addField("cpu_ce_truk_editeur");
268
		modelTypePublications.addField("cpu_ce_truk_editeur");
269
		
269
		
270
		String displayNamePublications = "cpu_fmt_nom_complet";
270
		String displayNamePublications = "cpu_fmt_nom_complet";
271
		ProxyPublications<ModelData> proxyPublications= new ProxyPublications<ModelData>(null);
271
		ProxyPublications<ModelData> proxyPublications= new ProxyPublications<ModelData>(null);
272
		
272
		
273
		final ChampComboBoxRechercheTempsReelPaginable publicationsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyPublications, modelTypePublications, displayNamePublications);
273
		final ChampComboBoxRechercheTempsReelPaginable publicationsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyPublications, modelTypePublications, displayNamePublications);
274
		publicationsCombo.getCombo().setTabIndex(tabIndex++);
274
		publicationsCombo.getCombo().setTabIndex(tabIndex++);
275
		publicationsCombo.getCombo().setForceSelection(true);
275
		publicationsCombo.getCombo().setForceSelection(true);
276
		
276
		
277
		publicationsCombo.getCombo().setValidator(new Validator() {
277
		publicationsCombo.getCombo().setValidator(new Validator() {
278
			public String validate(Field<?> field, String value) {
278
			public String validate(Field<?> field, String value) {
279
				String retour = null;
279
				String retour = null;
280
				if (field.getRawValue().equals("")) {
280
				if (field.getRawValue().equals("")) {
281
					field.setValue(null);
281
					field.setValue(null);
282
				} else if (publicationsCombo.getStore().findModel("cpu_fmt_nom_complet", field.getRawValue()) == null) {
282
				} else if (publicationsCombo.getStore().findModel("cpu_fmt_nom_complet", field.getRawValue()) == null) {
283
					String contenuBrut = field.getRawValue();
283
					String contenuBrut = field.getRawValue();
284
					field.setValue(null);
284
					field.setValue(null);
285
					field.setRawValue(contenuBrut);
285
					field.setRawValue(contenuBrut);
286
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
286
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
287
				}
287
				}
288
				return retour;
288
				return retour;
289
			}
289
			}
290
		});
290
		});
291
		
291
		
292
		publicationsCombo.getCombo().setEmptyText("Rechercher et sélectionner une publication existante dans la base");
292
		publicationsCombo.getCombo().setEmptyText("Rechercher et sélectionner une publication existante dans la base");
293
		
293
		
294
		publicationsCombo.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
294
		publicationsCombo.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
295
			public void handleEvent(BaseEvent be) {
295
			public void handleEvent(BaseEvent be) {
296
				if (publicationsSaisiesComboBox.getValeur() instanceof ModelData) {
296
				if (publicationsSaisiesComboBox.getValeur() instanceof ModelData) {
297
					Publication publicationSaisieSelectionne = new Publication(publicationsSaisiesComboBox.getValeur(), false);					
297
					Publication publicationSaisieSelectionne = new Publication(publicationsSaisiesComboBox.getValeur(), false);					
298
					ajouterDansGrille(publicationSaisieSelectionne);
298
					ajouterDansGrille(publicationSaisieSelectionne);
299
					publicationsSaisiesComboBox.getCombo().setValue(null);
299
					publicationsSaisiesComboBox.getCombo().setValue(null);
300
				}
300
				}
301
			}
301
			}
302
		});
302
		});
303
		
303
		
304
		return publicationsCombo;
304
		return publicationsCombo;
305
	}
305
	}
306
	
306
	
307
	private void ajouterDansGrille(Publication publication) {
307
	private void ajouterDansGrille(Publication publication) {
308
		ajouterDansGrille(publication, 0);
308
		ajouterDansGrille(publication, 0);
309
	}
309
	}
310
	
310
	
311
	private void ajouterDansGrille(Publication publication, int index) {
311
	private void ajouterDansGrille(Publication publication, int index) {
312
		if (publication != null) {			
312
		if (publication != null) {			
313
			CollectionAPublication publicationLiee = new CollectionAPublication(false);
313
			CollectionAPublication publicationLiee = new CollectionAPublication(false);
314
			publicationLiee.setPublication(publication);
314
			publicationLiee.setPublication(publication);
315
			publicationLiee.setIdPublication(publication.getId());
315
			publicationLiee.setIdPublication(publication.getId());
316
			
316
			
317
			// Gestion de l'id de la collection
317
			// Gestion de l'id de la collection
318
			if (mode.equals(Formulaire.MODE_MODIFIER)) {
318
			if (mode.equals(Formulaire.MODE_MODIFIER)) {
319
				publicationLiee.setIdCollection(collection.getId());
319
				publicationLiee.setIdCollection(collection.getId());
320
			}
320
			}
-
 
321
			
-
 
322
			// ajout au cache si nécessaire
-
 
323
			if(!Publication.publisSaisiesModifieesCache.containsKey(publication.getId())) {
-
 
324
				Publication.publisSaisiesModifieesCache.put(publication.getId(), publication);
-
 
325
			}
-
 
326
			
321
			publicationLiee.set("_etat_", aDonnee.ETAT_AJOUTE);
327
			publicationLiee.set("_etat_", aDonnee.ETAT_AJOUTE);
322
			
328
			
323
			grille.getGrille().stopEditing();
329
			grille.getGrille().stopEditing();
324
			grille.getGrille().getStore().insert(publicationLiee, index);
330
			grille.getGrille().getStore().insert(publicationLiee, index);
325
			grille.getGrille().startEditing(index, 0);
331
			grille.getGrille().startEditing(index, 0);
326
			grille.getGrille().getSelectionModel().select(index, false);
332
			grille.getGrille().getSelectionModel().select(index, false);
327
		}
333
		}
328
	}
334
	}
329
	
335
	
330
	private void supprimerDansGrille(CollectionAPublication publicationLiee, ModelData publicationLieeModele) {
336
	private void supprimerDansGrille(CollectionAPublication publicationLiee, ModelData publicationLieeModele) {
331
		if (publicationLiee != null) {
337
		if (publicationLiee != null) {
332
			// Ajout de la personne supprimée à la liste
338
			// Ajout de la personne supprimée à la liste
333
			if ((publicationLiee.get("_etat_").equals("") || !publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) 
339
			if ((publicationLiee.get("_etat_").equals("") || !publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) 
334
					&& publicationLiee.getId() != null 
340
					&& publicationLiee.getId() != null 
335
					&& !publicationLiee.getId().equals("")) {
341
					&& !publicationLiee.getId().equals("")) {
336
				publicationsSupprimees.put("id"+idGenere++, publicationLiee);
342
				publicationsSupprimees.put("id"+idGenere++, publicationLiee);
337
			}
343
			}
338
			
344
			
339
			// Suppression de l'enregistrement de la grille
345
			// Suppression de l'enregistrement de la grille
340
			grille.getStore().remove(publicationLieeModele);
346
			grille.getStore().remove(publicationLieeModele);
341
		}
347
		}
342
	}
348
	}
343
	
349
	
344
	private GrillePaginable<ModelData> creerGrille() {
350
	private GrillePaginable<ModelData> creerGrille() {
345
		
351
		
346
		GrillePaginable<ModelData> grillePublications = null;
352
		GrillePaginable<ModelData> grillePublications = null;
347
		
353
		
348
		// ModelType
354
		// ModelType
349
		ModelType modelTypeCollectionAPublication = new ModelType();
355
		ModelType modelTypeCollectionAPublication = new ModelType();
350
		modelTypeCollectionAPublication.setRoot("collectionsAPublication");
356
		modelTypeCollectionAPublication.setRoot("collectionsAPublication");
351
		modelTypeCollectionAPublication.setTotalName("nbElements");
357
		modelTypeCollectionAPublication.setTotalName("nbElements");
352
		modelTypeCollectionAPublication.addField("ccapu_id_collection");
358
		modelTypeCollectionAPublication.addField("ccapu_id_collection");
353
		modelTypeCollectionAPublication.addField("ccapu_id_publication");
359
		modelTypeCollectionAPublication.addField("ccapu_id_publication");
354
		modelTypeCollectionAPublication.addField("ccapu_source");
360
		modelTypeCollectionAPublication.addField("ccapu_source");
355
		modelTypeCollectionAPublication.addField("ccapu_mark_licence");
361
		modelTypeCollectionAPublication.addField("ccapu_mark_licence");
356
		modelTypeCollectionAPublication.addField("cpu_id_publication");
362
		modelTypeCollectionAPublication.addField("cpu_id_publication");
357
		modelTypeCollectionAPublication.addField("cpu_fmt_auteur");
363
		modelTypeCollectionAPublication.addField("cpu_fmt_auteur");
358
		modelTypeCollectionAPublication.addField("cpu_titre");
364
		modelTypeCollectionAPublication.addField("cpu_titre");
359
		modelTypeCollectionAPublication.addField("cpu_collection");
365
		modelTypeCollectionAPublication.addField("cpu_collection");
360
		modelTypeCollectionAPublication.addField("cpu_ce_truk_editeur");
366
		modelTypeCollectionAPublication.addField("cpu_ce_truk_editeur");
361
		modelTypeCollectionAPublication.addField("cpu_date_parution");
367
		modelTypeCollectionAPublication.addField("cpu_date_parution");
362
		modelTypeCollectionAPublication.addField("cpu_fascicule");
368
		modelTypeCollectionAPublication.addField("cpu_fascicule");
363
		modelTypeCollectionAPublication.addField("cpu_truk_pages");
369
		modelTypeCollectionAPublication.addField("cpu_truk_pages");
364
		modelTypeCollectionAPublication.addField("cpu_indication_nvt");
370
		modelTypeCollectionAPublication.addField("cpu_indication_nvt");
365
		
371
		
366
		// Proxy
372
		// Proxy
367
		ProxyCollectionAPublication<ModelData> proxyCollectionAPublication = new ProxyCollectionAPublication<ModelData>(null, collection.getId());		
373
		ProxyCollectionAPublication<ModelData> proxyCollectionAPublication = new ProxyCollectionAPublication<ModelData>(null, collection.getId());		
368
 
374
 
369
		// Colonnes
375
		// Colonnes
370
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
376
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
371
		RowNumberer numeroPlugin = new RowNumberer();
377
		RowNumberer numeroPlugin = new RowNumberer();
372
		numeroPlugin.setHeaderHtml("#");
378
		numeroPlugin.setHeaderHtml("#");
373
		XTemplate infoTpl = XTemplate.create("<p>"+
379
		XTemplate infoTpl = XTemplate.create("<p>"+
374
			"<span style='font-weight:bold;'>"+i18nC.publicationAuteurs()+" :</span> {cpu_fmt_auteur}<br />"+
380
			"<span style='font-weight:bold;'>"+i18nC.publicationAuteurs()+" :</span> {cpu_fmt_auteur}<br />"+
375
			"<span style='font-weight:bold;'>"+i18nC.publicationTitre()+" :</span> {cpu_titre}<br />"+
381
			"<span style='font-weight:bold;'>"+i18nC.publicationTitre()+" :</span> {cpu_titre}<br />"+
376
			"<span style='font-weight:bold;'>"+i18nC.publicationRevueCollection()+" :</span> {cpu_collection}<br />"+
382
			"<span style='font-weight:bold;'>"+i18nC.publicationRevueCollection()+" :</span> {cpu_collection}<br />"+
377
			"<span style='font-weight:bold;'>"+i18nC.publicationEditeur()+" :</span> {_editeur_}"+
383
			"<span style='font-weight:bold;'>"+i18nC.publicationEditeur()+" :</span> {_editeur_}"+
378
			"</p>");  
384
			"</p>");  
379
		RowExpander expansionPlugin = new RowExpander();  
385
		RowExpander expansionPlugin = new RowExpander();  
380
		expansionPlugin.setTemplate(infoTpl);
386
		expansionPlugin.setTemplate(infoTpl);
381
		colonnes.add(expansionPlugin);
387
		colonnes.add(expansionPlugin);
382
		
388
		
383
		ColumnConfig sourceColonne = new ColumnConfig("ccapu_source", i18nC.collectionPublicationSource(), 60);
389
		ColumnConfig sourceColonne = new ColumnConfig("ccapu_source", i18nC.collectionPublicationSource(), 60);
384
		sourceColonne.setRenderer(new GridCellRenderer<ModelData>() {
390
		sourceColonne.setRenderer(new GridCellRenderer<ModelData>() {
385
			@Override
391
			@Override
386
			public Object render(ModelData model, String property,
392
			public Object render(ModelData model, String property,
387
					ColumnData config, int rowIndex, int colIndex,
393
					ColumnData config, int rowIndex, int colIndex,
388
					ListStore<ModelData> store, Grid<ModelData> grid) {
394
					ListStore<ModelData> store, Grid<ModelData> grid) {
389
				
395
				
390
				CheckBox cbSource = new CheckBox();
396
				CheckBox cbSource = new CheckBox();
391
				boolean source = model.get("ccapu_source") != null && model.get("ccapu_source").equals("1");
397
				boolean source = model.get("ccapu_source") != null && model.get("ccapu_source").equals("1");
392
				
398
				
393
				Publication publiFromCache = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId());
399
				Publication publiFromCache = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId());
394
				if(publiFromCache != null) {
400
				if(publiFromCache != null) {
395
					source = publiFromCache.get("ccapu_source") != null && publiFromCache.get("ccapu_source").equals("1");
401
					source = publiFromCache.get("ccapu_source") != null && publiFromCache.get("ccapu_source").equals("1");
396
				}
402
				}
397
				
403
				
398
				cbSource.setValue(source);
404
				cbSource.setValue(source);
399
 
405
 
400
				final Integer ligne = rowIndex;
406
				final Integer ligne = rowIndex;
401
				final ModelData ceModele = model;
407
				final ModelData ceModele = model;
402
				
408
				
403
				cbSource.addListener(Events.Change, new Listener<BaseEvent>() {
409
				cbSource.addListener(Events.Change, new Listener<BaseEvent>() {
404
					@Override
410
					@Override
405
					public void handleEvent(BaseEvent be) {
411
					public void handleEvent(BaseEvent be) {
406
						String estSource = ((CheckBox)be.getSource()).getValue() ? "1" : "0";
412
						String estSource = ((CheckBox)be.getSource()).getValue() ? "1" : "0";
407
						ceModele.set("ccapu_source", estSource);
413
						ceModele.set("ccapu_source", estSource);
408
						if (!(ceModele.get("_etat_") != null && ceModele.get("_etat_").equals(aDonnee.ETAT_AJOUTE))) {
414
						if (!(ceModele.get("_etat_") != null && ceModele.get("_etat_").equals(aDonnee.ETAT_AJOUTE))) {
409
							ceModele.set("_etat_", aDonnee.ETAT_MODIFIE);
415
							ceModele.set("_etat_", aDonnee.ETAT_MODIFIE);
410
						}
416
						}
411
						grille.getStore().commitChanges();
417
						grille.getStore().commitChanges();
412
					}
418
					}
413
				});
419
				});
414
				return cbSource;	
420
				return cbSource;	
415
			}
421
			}
416
		});
422
		});
417
		colonnes.add(sourceColonne);
423
		colonnes.add(sourceColonne);
418
		
424
		
419
		colonnes.add(numeroPlugin);
425
		colonnes.add(numeroPlugin);
420
		colonnes.add(new ColumnConfig("cpu_fmt_auteur", i18nC.publicationAuteurs(), 135));
426
		colonnes.add(new ColumnConfig("cpu_fmt_auteur", i18nC.publicationAuteurs(), 135));
421
		colonnes.add(new ColumnConfig("cpu_titre", i18nC.publicationTitre(), 135));
427
		colonnes.add(new ColumnConfig("cpu_titre", i18nC.publicationTitre(), 135));
422
		colonnes.add(new ColumnConfig("cpu_collection", i18nC.publicationRevueCollection(), 100));
428
		colonnes.add(new ColumnConfig("cpu_collection", i18nC.publicationRevueCollection(), 100));
423
		colonnes.add(creerColonneEditeur());
429
		colonnes.add(creerColonneEditeur());
424
		colonnes.add(creerColonneAnneePublication());
430
		colonnes.add(creerColonneAnneePublication());
425
		colonnes.add(new ColumnConfig("cpu_indication_nvt", i18nC.publicationNvt(), 75));
431
		colonnes.add(new ColumnConfig("cpu_indication_nvt", i18nC.publicationNvt(), 75));
426
		colonnes.add(new ColumnConfig("cpu_fascicule", i18nC.publicationFascicule(), 70));
432
		colonnes.add(new ColumnConfig("cpu_fascicule", i18nC.publicationFascicule(), 70));
427
		colonnes.add(new ColumnConfig("cpu_truk_pages", i18nC.publicationPage(), 50));
433
		colonnes.add(new ColumnConfig("cpu_truk_pages", i18nC.publicationPage(), 50));
428
		
434
		
429
		HashMap<String, String> virtualFields = new HashMap<String, String>();
435
		HashMap<String, String> virtualFields = new HashMap<String, String>();
430
		virtualFields.put("_editeur_", "cpu_ce_truk_editeur");
436
		virtualFields.put("_editeur_", "cpu_ce_truk_editeur");
431
		virtualFields.put("_annee_", "cpu_date_parution");
437
		virtualFields.put("_annee_", "cpu_date_parution");
432
		virtualFields.put("_etat_", "");
438
		virtualFields.put("_etat_", "");
433
		
439
		
434
		// Modele de selection
440
		// Modele de selection
435
		GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>();
441
		GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>();
436
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
442
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
437
		modeleDeColonnes.getColumn(0).setWidget(Images.ICONES.information().createImage(), "Info");
443
		modeleDeColonnes.getColumn(0).setWidget(Images.ICONES.information().createImage(), "Info");
438
		
444
		
439
		// Grille
445
		// Grille
440
		grillePublications = new GrillePaginable<ModelData>(modelTypeCollectionAPublication, virtualFields, proxyCollectionAPublication, colonnes, modeleDeColonnes);
446
		grillePublications = new GrillePaginable<ModelData>(modelTypeCollectionAPublication, virtualFields, proxyCollectionAPublication, colonnes, modeleDeColonnes);
441
		grillePublications.getGrille().setBorders(true);
447
		grillePublications.getGrille().setBorders(true);
442
		grillePublications.getGrille().setSelectionModel(modeleDeSelection);
448
		grillePublications.getGrille().setSelectionModel(modeleDeSelection);
443
		grillePublications.getGrille().addPlugin(expansionPlugin);
449
		grillePublications.getGrille().addPlugin(expansionPlugin);
444
		grillePublications.getGrille().addPlugin(numeroPlugin);
450
		grillePublications.getGrille().addPlugin(numeroPlugin);
445
		grillePublications.getGrille().getView().setForceFit(true);
451
		grillePublications.getGrille().getView().setForceFit(true);
446
		grillePublications.getGrille().setAutoExpandColumn("titre");
452
		grillePublications.getGrille().setAutoExpandColumn("titre");
447
		grillePublications.getGrille().setStripeRows(true);
453
		grillePublications.getGrille().setStripeRows(true);
448
		grillePublications.getGrille().setTrackMouseOver(true);
454
		grillePublications.getGrille().setTrackMouseOver(true);
449
		
455
		
450
		// Rajouter des écouteurs
456
		// Rajouter des écouteurs
451
		grillePublications.getStore().addListener(Store.Add, new Listener<StoreEvent<ModelData>>() {
457
		grillePublications.getStore().addListener(Store.Add, new Listener<StoreEvent<ModelData>>() {
452
			public void handleEvent(StoreEvent<ModelData> ce) {
458
			public void handleEvent(StoreEvent<ModelData> ce) {
453
				actualiserEtatBoutonsBarreOutils();
459
				actualiserEtatBoutonsBarreOutils();
454
			}
460
			}
455
		});
461
		});
456
		grillePublications.getStore().addListener(Store.Remove, new Listener<StoreEvent<ModelData>>() {
462
		grillePublications.getStore().addListener(Store.Remove, new Listener<StoreEvent<ModelData>>() {
457
			public void handleEvent(StoreEvent<ModelData> ce) {
463
			public void handleEvent(StoreEvent<ModelData> ce) {
458
				actualiserEtatBoutonsBarreOutils();
464
				actualiserEtatBoutonsBarreOutils();
459
			}
465
			}
460
		});
466
		});
461
		
467
		
462
		return grillePublications;
468
		return grillePublications;
463
	}
469
	}
464
	
470
	
465
	private ColumnConfig creerColonneEditeur() {
471
	private ColumnConfig creerColonneEditeur() {
466
		GridCellRenderer<ModelData> editeurRendu = new GridCellRenderer<ModelData>() {
472
		GridCellRenderer<ModelData> editeurRendu = new GridCellRenderer<ModelData>() {
467
			public String render(ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) {
473
			public String render(ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) {
468
				String editeur = (new CollectionAPublication(model, false)).getPublication().getNomEditeur();
474
				String editeur = (new CollectionAPublication(model, false)).getPublication().getNomEditeur();
469
				// Des fois l'éditeur est vide, là intervient le caché fabriqué dans publication
475
				// Des fois l'éditeur est vide, là intervient le caché fabriqué dans publication
470
				if(editeur.isEmpty() &&  Publication.publisSaisiesModifieesCache.containsKey((new CollectionAPublication(model, false)).getPublication().getId())) {
476
				if(editeur.isEmpty() &&  Publication.publisSaisiesModifieesCache.containsKey((new CollectionAPublication(model, false)).getPublication().getId())) {
471
					editeur = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getNomEditeur();
477
					editeur = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getNomEditeur();
472
				}
478
				}
473
				model.set("_editeur_", editeur);
479
				model.set("_editeur_", editeur);
474
				return editeur;
480
				return editeur;
475
			}
481
			}
476
		};
482
		};
477
		ColumnConfig editeurColonne = new ColumnConfig("_editeur_", Mediateur.i18nC.publicationEditeur(), 130);
483
		ColumnConfig editeurColonne = new ColumnConfig("_editeur_", Mediateur.i18nC.publicationEditeur(), 130);
478
		editeurColonne.setRenderer(editeurRendu);
484
		editeurColonne.setRenderer(editeurRendu);
479
		return editeurColonne;
485
		return editeurColonne;
480
	}
486
	}
481
	
487
	
482
	private ColumnConfig creerColonneAnneePublication() {
488
	private ColumnConfig creerColonneAnneePublication() {
483
		GridCellRenderer<ModelData> datePublicationRendu = new GridCellRenderer<ModelData>() {
489
		GridCellRenderer<ModelData> datePublicationRendu = new GridCellRenderer<ModelData>() {
484
			public String render(ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) {
490
			public String render(ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) {
485
				String annee = (new CollectionAPublication(model, false)).getPublication().getAnneeParution();
491
				String annee = (new CollectionAPublication(model, false)).getPublication().getAnneeParution();
486
				if(annee.isEmpty()) {
492
				if(annee.isEmpty() && Publication.publisSaisiesModifieesCache.containsKey((new CollectionAPublication(model, false)).getPublication().getId())) {
487
					annee = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getAnneeParution();
493
					annee = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getAnneeParution();
488
				}
494
				}
489
				model.set("_annee_", annee);
495
				model.set("_annee_", annee);
490
				return annee;
496
				return annee;
491
			}
497
			}
492
		};
498
		};
493
		ColumnConfig datePublicationColonne = new ColumnConfig("_annee_", Mediateur.i18nC.publicationDateParution(), 40);
499
		ColumnConfig datePublicationColonne = new ColumnConfig("_annee_", Mediateur.i18nC.publicationDateParution(), 40);
494
		datePublicationColonne.setRenderer(datePublicationRendu);
500
		datePublicationColonne.setRenderer(datePublicationRendu);
495
		return datePublicationColonne;
501
		return datePublicationColonne;
496
	}
502
	}
497
 
503
 
498
	public void actualiserEtatBoutonsBarreOutils() {
504
	public void actualiserEtatBoutonsBarreOutils() {
499
		// Activation des boutons si la grille contient un élément
505
		// Activation des boutons si la grille contient un élément
500
		if (grille.getStore().getCount() > 0) {  
506
		if (grille.getStore().getCount() > 0) {  
501
			publicationsBoutonSupprimer.enable();
507
			publicationsBoutonSupprimer.enable();
502
			publicationsBoutonModifier.enable();
508
			publicationsBoutonModifier.enable();
503
		}
509
		}
504
		// Désactivation des boutons si la grille ne contient plus d'élément
510
		// Désactivation des boutons si la grille ne contient plus d'élément
505
		if (grille.getStore().getCount() == 0) {  
511
		if (grille.getStore().getCount() == 0) {  
506
			publicationsBoutonSupprimer.disable();
512
			publicationsBoutonSupprimer.disable();
507
			publicationsBoutonModifier.disable();
513
			publicationsBoutonModifier.disable();
508
		}
514
		}
509
	}
515
	}
510
	
516
	
511
	public void rafraichir(Object nouvellesDonnees) {
517
	public void rafraichir(Object nouvellesDonnees) {
512
		if (nouvellesDonnees instanceof Information) {
518
		if (nouvellesDonnees instanceof Information) {
513
			Information info = (Information) nouvellesDonnees;
519
			Information info = (Information) nouvellesDonnees;
514
			rafraichirInformation(info);
520
			rafraichirInformation(info);
515
		} else {
521
		} else {
516
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
522
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
517
		}
523
		}
518
	}
524
	}
519
	
525
	
520
	public void rafraichirInformation(Information info) {
526
	public void rafraichirInformation(Information info) {
521
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
527
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
522
			GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
528
			GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
523
		}
529
		}
524
		String type = info.getType();
530
		String type = info.getType();
525
		if (type.equals("liste_collection_a_publication")) {
531
		if (type.equals("liste_collection_a_publication")) {
526
			if (info.getDonnee(0) != null) {
532
			if (info.getDonnee(0) != null) {
527
				initialiser();
533
				initialiser();
528
				collection.setPublicationsLiees((CollectionAPublicationListe) info.getDonnee(0));
534
				collection.setPublicationsLiees((CollectionAPublicationListe) info.getDonnee(0));
529
				peupler();
535
				peupler();
530
			}
536
			}
531
		} else if (info.getType().equals("ajout_collection")) {
537
		} else if (info.getType().equals("ajout_collection")) {
532
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
538
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
533
				String collectionId = (String) info.getDonnee(0);
539
				String collectionId = (String) info.getDonnee(0);
534
				
540
				
535
				// Suite à la récupération de l'id de la collection nouvellement ajoutée nous ajoutons les publications liées
541
				// Suite à la récupération de l'id de la collection nouvellement ajoutée nous ajoutons les publications liées
536
				// En mode AJOUT, il ne peut que y avoir des publications liées ajoutées
542
				// En mode AJOUT, il ne peut que y avoir des publications liées ajoutées
537
				mediateur.ajouterCollectionAPublication(this, collectionId, publicationsAjoutees);
543
				mediateur.ajouterCollectionAPublication(this, collectionId, publicationsAjoutees);
538
			}
544
			}
539
		} else if (type.equals("publication_modifiee")) {
545
		} else if (type.equals("publication_modifiee")) {
540
			if (info.getDonnee(0) != null) {				
546
			if (info.getDonnee(0) != null) {				
541
				Publication publication = (Publication) info.getDonnee(0);				
547
				Publication publication = (Publication) info.getDonnee(0);				
542
				ModelData publicationDansGrille = null;
548
				ModelData publicationDansGrille = null;
543
				publicationDansGrille = grille.getStore().findModel("cpu_id_publication", publication.getId());	
549
				publicationDansGrille = grille.getStore().findModel("cpu_id_publication", publication.getId());	
544
				publication.set("ccapu_source", publicationDansGrille.get("ccapu_source"));
550
				publication.set("ccapu_source", publicationDansGrille.get("ccapu_source"));
545
				int index = grille.getStore().indexOf(publicationDansGrille);
551
				int index = grille.getStore().indexOf(publicationDansGrille);
546
				grille.getStore().remove(publicationDansGrille);
552
				grille.getStore().remove(publicationDansGrille);
547
				ajouterDansGrille(publication, index);
553
				ajouterDansGrille(publication, index);
548
			}
554
			}
549
		} else if (type.equals("publication_ajoutee")) {			
555
		} else if (type.equals("publication_ajoutee")) {			
550
			if (info.getDonnee(0) != null) {
556
			if (info.getDonnee(0) != null) {
551
				Publication publication = (Publication) info.getDonnee(0);
557
				Publication publication = (Publication) info.getDonnee(0);
552
				ajouterDansGrille(publication);
558
				ajouterDansGrille(publication);
553
			}
559
			}
554
		} else if (type.equals("suppression_collection_a_publication")) {
560
		} else if (type.equals("suppression_collection_a_publication")) {
555
			InfoLogger.display("Suppression des publications liées à la collection", info.toString());
561
			InfoLogger.display("Suppression des publications liées à la collection", info.toString());
556
		} else if (type.equals("ajout_collection_a_publication")) {
562
		} else if (type.equals("ajout_collection_a_publication")) {
557
			InfoLogger.display("Ajout des publications liées à la collection", info.toString());
563
			InfoLogger.display("Ajout des publications liées à la collection", info.toString());
558
		} else {
564
		} else {
559
			GWT.log(Mediateur.i18nM.erreurRafraichir(info.getClass(), this.getClass()), null);
565
			GWT.log(Mediateur.i18nM.erreurRafraichir(info.getClass(), this.getClass()), null);
560
		}
566
		}
561
	}
567
	}
562
 
568
 
563
	public void peupler() {
569
	public void peupler() {
564
		grille.getStore().removeAll();
570
		grille.getStore().removeAll();
565
		grille.getStore().add(collection.getPublicationsLiees().toList());
571
		grille.getStore().add(collection.getPublicationsLiees().toList());
566
		layout();
572
		layout();
567
		InfoLogger.display(i18nC.chargementPublication(), i18nC.ok());
573
		InfoLogger.display(i18nC.chargementPublication(), i18nC.ok());
568
	}
574
	}
569
 
575
 
570
	public void collecter() {
576
	public void collecter() {
571
		if (etreAccede()) {
577
		if (etreAccede()) {
572
			int nbrePublication = grille.getStore().getCount();
578
			int nbrePublication = grille.getStore().getCount();
573
			for (int i = 0; i < nbrePublication; i++) {
579
			for (int i = 0; i < nbrePublication; i++) {
574
				ModelData publicationLiee = grille.getStore().getAt(i);
580
				ModelData publicationLiee = grille.getStore().getAt(i);
575
				CollectionAPublication cap = new CollectionAPublication(grille.getStore().getAt(i), false);
581
				CollectionAPublication cap = new CollectionAPublication(grille.getStore().getAt(i), false);
576
				if (publicationLiee.get("_etat_") != null) {
582
				if (publicationLiee.get("_etat_") != null) {
577
					if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_MODIFIE)) {
583
					if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_MODIFIE)) {
578
						publicationsModifiees.put(cap.getIdPublication(), cap);
584
						publicationsModifiees.put(cap.getIdPublication(), cap);
579
					} 
585
					} 
580
					if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
586
					if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
581
						publicationsAjoutees.put("id"+idGenere++, cap);
587
						publicationsAjoutees.put("id"+idGenere++, cap);
582
					}
588
					}
583
					// Initialisation de la grille
589
					// Initialisation de la grille
584
					publicationLiee.set("_etat_", "");
590
					publicationLiee.set("_etat_", "");
585
				}
591
				}
586
			}
592
			}
587
			grille.getStore().commitChanges();
593
			grille.getStore().commitChanges();
588
		}
594
		}
589
	}
595
	}
590
	
596
	
591
	public void soumettre() {
597
	public void soumettre() {
592
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
598
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
593
			if (publicationsAjoutees.size() == 0 && publicationsSupprimees.size() == 0 && publicationsModifiees.size() == 0) {
599
			if (publicationsAjoutees.size() == 0 && publicationsSupprimees.size() == 0 && publicationsModifiees.size() == 0) {
594
				//InfoLogger.display("Modification des publications liées", "Rien n'a été enregistré car le formulaire n'a pas été modifié.");
600
				//InfoLogger.display("Modification des publications liées", "Rien n'a été enregistré car le formulaire n'a pas été modifié.");
595
			} else {
601
			} else {
596
				//Window.alert(publicationsAjoutees.size()+" | "+publicationsSupprimees.size()+" | "+publicationsModifiees.size());
602
				//Window.alert(publicationsAjoutees.size()+" | "+publicationsSupprimees.size()+" | "+publicationsModifiees.size());
597
				publicationsSontModifiees = true;
603
				publicationsSontModifiees = true;
598
				// Ajout des relations CollectionAPublication
604
				// Ajout des relations CollectionAPublication
599
				if (publicationsAjoutees.size() != 0) {
605
				if (publicationsAjoutees.size() != 0) {
600
					mediateur.ajouterCollectionAPublication(this, collection.getId(), publicationsAjoutees);
606
					mediateur.ajouterCollectionAPublication(this, collection.getId(), publicationsAjoutees);
601
				}
607
				}
602
				
608
				
603
				// Modification des relations CollectionAPublication
609
				// Modification des relations CollectionAPublication
604
				if (publicationsModifiees.size() != 0) {
610
				if (publicationsModifiees.size() != 0) {
605
					mediateur.modifierCollectionAPublication(this, publicationsModifiees);
611
					mediateur.modifierCollectionAPublication(this, publicationsModifiees);
606
				}
612
				}
607
				
613
				
608
				// Suppression des relations CollectionAPublication
614
				// Suppression des relations CollectionAPublication
609
				if (publicationsSupprimees.size() != 0) {
615
				if (publicationsSupprimees.size() != 0) {
610
					mediateur.supprimerCollectionAPublication(this, publicationsSupprimees);
616
					mediateur.supprimerCollectionAPublication(this, publicationsSupprimees);
611
				}
617
				}
612
			}
618
			}
613
		}
619
		}
614
	}
620
	}
615
}
621
}