Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1896 Rev 1899
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
			publicationLiee.set("_etat_", aDonnee.ETAT_AJOUTE);
321
			publicationLiee.set("_etat_", aDonnee.ETAT_AJOUTE);
322
			
322
			
323
			grille.getGrille().stopEditing();
323
			grille.getGrille().stopEditing();
324
			grille.getGrille().getStore().insert(publicationLiee, index);
324
			grille.getGrille().getStore().insert(publicationLiee, index);
325
			grille.getGrille().startEditing(index, 0);
325
			grille.getGrille().startEditing(index, 0);
326
			grille.getGrille().getSelectionModel().select(index, false);
326
			grille.getGrille().getSelectionModel().select(index, false);
327
		}
327
		}
328
	}
328
	}
329
	
329
	
330
	private void supprimerDansGrille(CollectionAPublication publicationLiee, ModelData publicationLieeModele) {
330
	private void supprimerDansGrille(CollectionAPublication publicationLiee, ModelData publicationLieeModele) {
331
		if (publicationLiee != null) {
331
		if (publicationLiee != null) {
332
			// Ajout de la personne supprimée à la liste
332
			// Ajout de la personne supprimée à la liste
333
			if ((publicationLiee.get("_etat_").equals("") || !publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) 
333
			if ((publicationLiee.get("_etat_").equals("") || !publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) 
334
					&& publicationLiee.getId() != null 
334
					&& publicationLiee.getId() != null 
335
					&& !publicationLiee.getId().equals("")) {
335
					&& !publicationLiee.getId().equals("")) {
336
				publicationsSupprimees.put("id"+idGenere++, publicationLiee);
336
				publicationsSupprimees.put("id"+idGenere++, publicationLiee);
337
			}
337
			}
338
			
338
			
339
			// Suppression de l'enregistrement de la grille
339
			// Suppression de l'enregistrement de la grille
340
			grille.getStore().remove(publicationLieeModele);
340
			grille.getStore().remove(publicationLieeModele);
341
		}
341
		}
342
	}
342
	}
343
	
343
	
344
	private GrillePaginable<ModelData> creerGrille() {
344
	private GrillePaginable<ModelData> creerGrille() {
345
		
345
		
346
		GrillePaginable<ModelData> grillePublications = null;
346
		GrillePaginable<ModelData> grillePublications = null;
347
		
347
		
348
		// ModelType
348
		// ModelType
349
		ModelType modelTypeCollectionAPublication = new ModelType();
349
		ModelType modelTypeCollectionAPublication = new ModelType();
350
		modelTypeCollectionAPublication.setRoot("collectionsAPublication");
350
		modelTypeCollectionAPublication.setRoot("collectionsAPublication");
351
		modelTypeCollectionAPublication.setTotalName("nbElements");
351
		modelTypeCollectionAPublication.setTotalName("nbElements");
352
		modelTypeCollectionAPublication.addField("ccapu_id_collection");
352
		modelTypeCollectionAPublication.addField("ccapu_id_collection");
353
		modelTypeCollectionAPublication.addField("ccapu_id_publication");
353
		modelTypeCollectionAPublication.addField("ccapu_id_publication");
354
		modelTypeCollectionAPublication.addField("ccapu_source");
354
		modelTypeCollectionAPublication.addField("ccapu_source");
355
		modelTypeCollectionAPublication.addField("ccapu_mark_licence");
355
		modelTypeCollectionAPublication.addField("ccapu_mark_licence");
356
		modelTypeCollectionAPublication.addField("cpu_id_publication");
356
		modelTypeCollectionAPublication.addField("cpu_id_publication");
357
		modelTypeCollectionAPublication.addField("cpu_fmt_auteur");
357
		modelTypeCollectionAPublication.addField("cpu_fmt_auteur");
358
		modelTypeCollectionAPublication.addField("cpu_titre");
358
		modelTypeCollectionAPublication.addField("cpu_titre");
359
		modelTypeCollectionAPublication.addField("cpu_collection");
359
		modelTypeCollectionAPublication.addField("cpu_collection");
360
		modelTypeCollectionAPublication.addField("cpu_ce_truk_editeur");
360
		modelTypeCollectionAPublication.addField("cpu_ce_truk_editeur");
361
		modelTypeCollectionAPublication.addField("cpu_date_parution");
361
		modelTypeCollectionAPublication.addField("cpu_date_parution");
362
		modelTypeCollectionAPublication.addField("cpu_fascicule");
362
		modelTypeCollectionAPublication.addField("cpu_fascicule");
363
		modelTypeCollectionAPublication.addField("cpu_truk_pages");
363
		modelTypeCollectionAPublication.addField("cpu_truk_pages");
364
		modelTypeCollectionAPublication.addField("cpu_indication_nvt");
364
		modelTypeCollectionAPublication.addField("cpu_indication_nvt");
365
		
365
		
366
		// Proxy
366
		// Proxy
367
		ProxyCollectionAPublication<ModelData> proxyCollectionAPublication = new ProxyCollectionAPublication<ModelData>(null, collection.getId());		
367
		ProxyCollectionAPublication<ModelData> proxyCollectionAPublication = new ProxyCollectionAPublication<ModelData>(null, collection.getId());		
368
 
368
 
369
		// Colonnes
369
		// Colonnes
370
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
370
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
371
		RowNumberer numeroPlugin = new RowNumberer();
371
		RowNumberer numeroPlugin = new RowNumberer();
372
		numeroPlugin.setHeaderHtml("#");
372
		numeroPlugin.setHeaderHtml("#");
373
		XTemplate infoTpl = XTemplate.create("<p>"+
373
		XTemplate infoTpl = XTemplate.create("<p>"+
374
			"<span style='font-weight:bold;'>"+i18nC.publicationAuteurs()+" :</span> {cpu_fmt_auteur}<br />"+
374
			"<span style='font-weight:bold;'>"+i18nC.publicationAuteurs()+" :</span> {cpu_fmt_auteur}<br />"+
375
			"<span style='font-weight:bold;'>"+i18nC.publicationTitre()+" :</span> {cpu_titre}<br />"+
375
			"<span style='font-weight:bold;'>"+i18nC.publicationTitre()+" :</span> {cpu_titre}<br />"+
376
			"<span style='font-weight:bold;'>"+i18nC.publicationRevueCollection()+" :</span> {cpu_collection}<br />"+
376
			"<span style='font-weight:bold;'>"+i18nC.publicationRevueCollection()+" :</span> {cpu_collection}<br />"+
377
			"<span style='font-weight:bold;'>"+i18nC.publicationEditeur()+" :</span> {_editeur_}"+
377
			"<span style='font-weight:bold;'>"+i18nC.publicationEditeur()+" :</span> {_editeur_}"+
378
			"</p>");  
378
			"</p>");  
379
		RowExpander expansionPlugin = new RowExpander();  
379
		RowExpander expansionPlugin = new RowExpander();  
380
		expansionPlugin.setTemplate(infoTpl);
380
		expansionPlugin.setTemplate(infoTpl);
381
		colonnes.add(expansionPlugin);
381
		colonnes.add(expansionPlugin);
382
		
382
		
383
		ColumnConfig sourceColonne = new ColumnConfig("ccapu_source", i18nC.collectionPublicationSource(), 60);
383
		ColumnConfig sourceColonne = new ColumnConfig("ccapu_source", i18nC.collectionPublicationSource(), 60);
384
		sourceColonne.setRenderer(new GridCellRenderer<ModelData>() {
384
		sourceColonne.setRenderer(new GridCellRenderer<ModelData>() {
385
			@Override
385
			@Override
386
			public Object render(ModelData model, String property,
386
			public Object render(ModelData model, String property,
387
					ColumnData config, int rowIndex, int colIndex,
387
					ColumnData config, int rowIndex, int colIndex,
388
					ListStore<ModelData> store, Grid<ModelData> grid) {
388
					ListStore<ModelData> store, Grid<ModelData> grid) {
389
				
389
				
390
				CheckBox cbSource = new CheckBox();
390
				CheckBox cbSource = new CheckBox();
391
				boolean source = model.get("ccapu_source") != null && model.get("ccapu_source").equals("1");
391
				boolean source = model.get("ccapu_source") != null && model.get("ccapu_source").equals("1");
392
				
392
				
393
				Publication publiFromCache = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId());
393
				Publication publiFromCache = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId());
394
				if(publiFromCache != null) {
394
				if(publiFromCache != null) {
395
					source = publiFromCache.get("ccapu_source") != null && publiFromCache.get("ccapu_source").equals("1");
395
					source = publiFromCache.get("ccapu_source") != null && publiFromCache.get("ccapu_source").equals("1");
396
				}
396
				}
397
				
397
				
398
				cbSource.setValue(source);
398
				cbSource.setValue(source);
399
 
399
 
400
				final Integer ligne = rowIndex;
400
				final Integer ligne = rowIndex;
401
				final ModelData ceModele = model;
401
				final ModelData ceModele = model;
402
				
402
				
403
				cbSource.addListener(Events.Change, new Listener<BaseEvent>() {
403
				cbSource.addListener(Events.Change, new Listener<BaseEvent>() {
404
					@Override
404
					@Override
405
					public void handleEvent(BaseEvent be) {
405
					public void handleEvent(BaseEvent be) {
406
						String estSource = ((CheckBox)be.getSource()).getValue() ? "1" : "0";
406
						String estSource = ((CheckBox)be.getSource()).getValue() ? "1" : "0";
407
						ceModele.set("ccapu_source", estSource);
407
						ceModele.set("ccapu_source", estSource);
408
						if (!(ceModele.get("_etat_") != null && ceModele.get("_etat_").equals(aDonnee.ETAT_AJOUTE))) {
408
						if (!(ceModele.get("_etat_") != null && ceModele.get("_etat_").equals(aDonnee.ETAT_AJOUTE))) {
409
							ceModele.set("_etat_", aDonnee.ETAT_MODIFIE);
409
							ceModele.set("_etat_", aDonnee.ETAT_MODIFIE);
410
						}
410
						}
411
						grille.getStore().commitChanges();
411
						grille.getStore().commitChanges();
412
					}
412
					}
413
				});
413
				});
414
				return cbSource;	
414
				return cbSource;	
415
			}
415
			}
416
		});
416
		});
417
		colonnes.add(sourceColonne);
417
		colonnes.add(sourceColonne);
418
		
418
		
419
		colonnes.add(numeroPlugin);
419
		colonnes.add(numeroPlugin);
420
		colonnes.add(new ColumnConfig("cpu_fmt_auteur", i18nC.publicationAuteurs(), 135));
420
		colonnes.add(new ColumnConfig("cpu_fmt_auteur", i18nC.publicationAuteurs(), 135));
421
		colonnes.add(new ColumnConfig("cpu_titre", i18nC.publicationTitre(), 135));
421
		colonnes.add(new ColumnConfig("cpu_titre", i18nC.publicationTitre(), 135));
422
		colonnes.add(new ColumnConfig("cpu_collection", i18nC.publicationRevueCollection(), 100));
422
		colonnes.add(new ColumnConfig("cpu_collection", i18nC.publicationRevueCollection(), 100));
423
		colonnes.add(creerColonneEditeur());
423
		colonnes.add(creerColonneEditeur());
424
		colonnes.add(creerColonneAnneePublication());
424
		colonnes.add(creerColonneAnneePublication());
425
		colonnes.add(new ColumnConfig("cpu_indication_nvt", i18nC.publicationNvt(), 75));
425
		colonnes.add(new ColumnConfig("cpu_indication_nvt", i18nC.publicationNvt(), 75));
426
		colonnes.add(new ColumnConfig("cpu_fascicule", i18nC.publicationFascicule(), 70));
426
		colonnes.add(new ColumnConfig("cpu_fascicule", i18nC.publicationFascicule(), 70));
427
		colonnes.add(new ColumnConfig("cpu_truk_pages", i18nC.publicationPage(), 50));
427
		colonnes.add(new ColumnConfig("cpu_truk_pages", i18nC.publicationPage(), 50));
428
		
428
		
429
		HashMap<String, String> virtualFields = new HashMap<String, String>();
429
		HashMap<String, String> virtualFields = new HashMap<String, String>();
430
		virtualFields.put("_editeur_", "cpu_ce_truk_editeur");
430
		virtualFields.put("_editeur_", "cpu_ce_truk_editeur");
431
		virtualFields.put("_annee_", "cpu_date_parution");
431
		virtualFields.put("_annee_", "cpu_date_parution");
432
		virtualFields.put("_etat_", "");
432
		virtualFields.put("_etat_", "");
433
		
433
		
434
		// Modele de selection
434
		// Modele de selection
435
		GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>();
435
		GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>();
436
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
436
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
437
		modeleDeColonnes.getColumn(0).setWidget(Images.ICONES.information().createImage(), "Info");
437
		modeleDeColonnes.getColumn(0).setWidget(Images.ICONES.information().createImage(), "Info");
438
		
438
		
439
		// Grille
439
		// Grille
440
		grillePublications = new GrillePaginable<ModelData>(modelTypeCollectionAPublication, virtualFields, proxyCollectionAPublication, colonnes, modeleDeColonnes);
440
		grillePublications = new GrillePaginable<ModelData>(modelTypeCollectionAPublication, virtualFields, proxyCollectionAPublication, colonnes, modeleDeColonnes);
441
		grillePublications.getGrille().setBorders(true);
441
		grillePublications.getGrille().setBorders(true);
442
		grillePublications.getGrille().setSelectionModel(modeleDeSelection);
442
		grillePublications.getGrille().setSelectionModel(modeleDeSelection);
443
		grillePublications.getGrille().addPlugin(expansionPlugin);
443
		grillePublications.getGrille().addPlugin(expansionPlugin);
444
		grillePublications.getGrille().addPlugin(numeroPlugin);
444
		grillePublications.getGrille().addPlugin(numeroPlugin);
445
		grillePublications.getGrille().getView().setForceFit(true);
445
		grillePublications.getGrille().getView().setForceFit(true);
446
		grillePublications.getGrille().setAutoExpandColumn("titre");
446
		grillePublications.getGrille().setAutoExpandColumn("titre");
447
		grillePublications.getGrille().setStripeRows(true);
447
		grillePublications.getGrille().setStripeRows(true);
448
		grillePublications.getGrille().setTrackMouseOver(true);
448
		grillePublications.getGrille().setTrackMouseOver(true);
449
		
449
		
450
		// Rajouter des écouteurs
450
		// Rajouter des écouteurs
451
		grillePublications.getStore().addListener(Store.Add, new Listener<StoreEvent<ModelData>>() {
451
		grillePublications.getStore().addListener(Store.Add, new Listener<StoreEvent<ModelData>>() {
452
			public void handleEvent(StoreEvent<ModelData> ce) {
452
			public void handleEvent(StoreEvent<ModelData> ce) {
453
				actualiserEtatBoutonsBarreOutils();
453
				actualiserEtatBoutonsBarreOutils();
454
			}
454
			}
455
		});
455
		});
456
		grillePublications.getStore().addListener(Store.Remove, new Listener<StoreEvent<ModelData>>() {
456
		grillePublications.getStore().addListener(Store.Remove, new Listener<StoreEvent<ModelData>>() {
457
			public void handleEvent(StoreEvent<ModelData> ce) {
457
			public void handleEvent(StoreEvent<ModelData> ce) {
458
				actualiserEtatBoutonsBarreOutils();
458
				actualiserEtatBoutonsBarreOutils();
459
			}
459
			}
460
		});
460
		});
461
		
461
		
462
		return grillePublications;
462
		return grillePublications;
463
	}
463
	}
464
	
464
	
465
	private ColumnConfig creerColonneEditeur() {
465
	private ColumnConfig creerColonneEditeur() {
466
		GridCellRenderer<ModelData> editeurRendu = new GridCellRenderer<ModelData>() {
466
		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) {
467
			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();
468
				String editeur = (new CollectionAPublication(model, false)).getPublication().getNomEditeur();
469
				// Des fois l'éditeur est vide, là intervient le caché fabriqué dans publication
469
				// Des fois l'éditeur est vide, là intervient le caché fabriqué dans publication
470
				if(editeur.isEmpty()) {
470
				if(editeur.isEmpty() &&  Publication.publisSaisiesModifieesCache.containsKey((new CollectionAPublication(model, false)).getPublication().getId())) {
471
					editeur = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getNomEditeur();
471
					editeur = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getNomEditeur();
472
				}
472
				}
473
				model.set("_editeur_", editeur);
473
				model.set("_editeur_", editeur);
474
				return editeur;
474
				return editeur;
475
			}
475
			}
476
		};
476
		};
477
		ColumnConfig editeurColonne = new ColumnConfig("_editeur_", Mediateur.i18nC.publicationEditeur(), 130);
477
		ColumnConfig editeurColonne = new ColumnConfig("_editeur_", Mediateur.i18nC.publicationEditeur(), 130);
478
		editeurColonne.setRenderer(editeurRendu);
478
		editeurColonne.setRenderer(editeurRendu);
479
		return editeurColonne;
479
		return editeurColonne;
480
	}
480
	}
481
	
481
	
482
	private ColumnConfig creerColonneAnneePublication() {
482
	private ColumnConfig creerColonneAnneePublication() {
483
		GridCellRenderer<ModelData> datePublicationRendu = new GridCellRenderer<ModelData>() {
483
		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) {
484
			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();
485
				String annee = (new CollectionAPublication(model, false)).getPublication().getAnneeParution();
486
				if(annee.isEmpty()) {
486
				if(annee.isEmpty()) {
487
					annee = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getAnneeParution();
487
					annee = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getAnneeParution();
488
				}
488
				}
489
				model.set("_annee_", annee);
489
				model.set("_annee_", annee);
490
				return annee;
490
				return annee;
491
			}
491
			}
492
		};
492
		};
493
		ColumnConfig datePublicationColonne = new ColumnConfig("_annee_", Mediateur.i18nC.publicationDateParution(), 40);
493
		ColumnConfig datePublicationColonne = new ColumnConfig("_annee_", Mediateur.i18nC.publicationDateParution(), 40);
494
		datePublicationColonne.setRenderer(datePublicationRendu);
494
		datePublicationColonne.setRenderer(datePublicationRendu);
495
		return datePublicationColonne;
495
		return datePublicationColonne;
496
	}
496
	}
497
 
497
 
498
	public void actualiserEtatBoutonsBarreOutils() {
498
	public void actualiserEtatBoutonsBarreOutils() {
499
		// Activation des boutons si la grille contient un élément
499
		// Activation des boutons si la grille contient un élément
500
		if (grille.getStore().getCount() > 0) {  
500
		if (grille.getStore().getCount() > 0) {  
501
			publicationsBoutonSupprimer.enable();
501
			publicationsBoutonSupprimer.enable();
502
			publicationsBoutonModifier.enable();
502
			publicationsBoutonModifier.enable();
503
		}
503
		}
504
		// Désactivation des boutons si la grille ne contient plus d'élément
504
		// Désactivation des boutons si la grille ne contient plus d'élément
505
		if (grille.getStore().getCount() == 0) {  
505
		if (grille.getStore().getCount() == 0) {  
506
			publicationsBoutonSupprimer.disable();
506
			publicationsBoutonSupprimer.disable();
507
			publicationsBoutonModifier.disable();
507
			publicationsBoutonModifier.disable();
508
		}
508
		}
509
	}
509
	}
510
	
510
	
511
	public void rafraichir(Object nouvellesDonnees) {
511
	public void rafraichir(Object nouvellesDonnees) {
512
		if (nouvellesDonnees instanceof Information) {
512
		if (nouvellesDonnees instanceof Information) {
513
			Information info = (Information) nouvellesDonnees;
513
			Information info = (Information) nouvellesDonnees;
514
			rafraichirInformation(info);
514
			rafraichirInformation(info);
515
		} else {
515
		} else {
516
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
516
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
517
		}
517
		}
518
	}
518
	}
519
	
519
	
520
	public void rafraichirInformation(Information info) {
520
	public void rafraichirInformation(Information info) {
521
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
521
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
522
			GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
522
			GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
523
		}
523
		}
524
		String type = info.getType();
524
		String type = info.getType();
525
		if (type.equals("liste_collection_a_publication")) {
525
		if (type.equals("liste_collection_a_publication")) {
526
			if (info.getDonnee(0) != null) {
526
			if (info.getDonnee(0) != null) {
527
				initialiser();
527
				initialiser();
528
				collection.setPublicationsLiees((CollectionAPublicationListe) info.getDonnee(0));
528
				collection.setPublicationsLiees((CollectionAPublicationListe) info.getDonnee(0));
529
				peupler();
529
				peupler();
530
			}
530
			}
531
		} else if (info.getType().equals("ajout_collection")) {
531
		} else if (info.getType().equals("ajout_collection")) {
532
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
532
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
533
				String collectionId = (String) info.getDonnee(0);
533
				String collectionId = (String) info.getDonnee(0);
534
				
534
				
535
				// Suite à la récupération de l'id de la collection nouvellement ajoutée nous ajoutons les publications liées
535
				// 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
536
				// En mode AJOUT, il ne peut que y avoir des publications liées ajoutées
537
				mediateur.ajouterCollectionAPublication(this, collectionId, publicationsAjoutees);
537
				mediateur.ajouterCollectionAPublication(this, collectionId, publicationsAjoutees);
538
			}
538
			}
539
		} else if (type.equals("publication_modifiee")) {
539
		} else if (type.equals("publication_modifiee")) {
540
			if (info.getDonnee(0) != null) {				
540
			if (info.getDonnee(0) != null) {				
541
				Publication publication = (Publication) info.getDonnee(0);				
541
				Publication publication = (Publication) info.getDonnee(0);				
542
				ModelData publicationDansGrille = null;
542
				ModelData publicationDansGrille = null;
543
				publicationDansGrille = grille.getStore().findModel("cpu_id_publication", publication.getId());	
543
				publicationDansGrille = grille.getStore().findModel("cpu_id_publication", publication.getId());	
544
				publication.set("ccapu_source", publicationDansGrille.get("ccapu_source"));
544
				publication.set("ccapu_source", publicationDansGrille.get("ccapu_source"));
545
				int index = grille.getStore().indexOf(publicationDansGrille);
545
				int index = grille.getStore().indexOf(publicationDansGrille);
546
				grille.getStore().remove(publicationDansGrille);
546
				grille.getStore().remove(publicationDansGrille);
547
				ajouterDansGrille(publication, index);
547
				ajouterDansGrille(publication, index);
548
			}
548
			}
549
		} else if (type.equals("publication_ajoutee")) {			
549
		} else if (type.equals("publication_ajoutee")) {			
550
			if (info.getDonnee(0) != null) {
550
			if (info.getDonnee(0) != null) {
551
				Publication publication = (Publication) info.getDonnee(0);
551
				Publication publication = (Publication) info.getDonnee(0);
552
				ajouterDansGrille(publication);
552
				ajouterDansGrille(publication);
553
			}
553
			}
554
		} else if (type.equals("suppression_collection_a_publication")) {
554
		} else if (type.equals("suppression_collection_a_publication")) {
555
			InfoLogger.display("Suppression des publications liées à la collection", info.toString());
555
			InfoLogger.display("Suppression des publications liées à la collection", info.toString());
556
		} else if (type.equals("ajout_collection_a_publication")) {
556
		} else if (type.equals("ajout_collection_a_publication")) {
557
			InfoLogger.display("Ajout des publications liées à la collection", info.toString());
557
			InfoLogger.display("Ajout des publications liées à la collection", info.toString());
558
		} else {
558
		} else {
559
			GWT.log(Mediateur.i18nM.erreurRafraichir(info.getClass(), this.getClass()), null);
559
			GWT.log(Mediateur.i18nM.erreurRafraichir(info.getClass(), this.getClass()), null);
560
		}
560
		}
561
	}
561
	}
562
 
562
 
563
	public void peupler() {
563
	public void peupler() {
564
		grille.getStore().removeAll();
564
		grille.getStore().removeAll();
565
		grille.getStore().add(collection.getPublicationsLiees().toList());
565
		grille.getStore().add(collection.getPublicationsLiees().toList());
566
		layout();
566
		layout();
567
		InfoLogger.display(i18nC.chargementPublication(), i18nC.ok());
567
		InfoLogger.display(i18nC.chargementPublication(), i18nC.ok());
568
	}
568
	}
569
 
569
 
570
	public void collecter() {
570
	public void collecter() {
571
		if (etreAccede()) {
571
		if (etreAccede()) {
572
			int nbrePublication = grille.getStore().getCount();
572
			int nbrePublication = grille.getStore().getCount();
573
			for (int i = 0; i < nbrePublication; i++) {
573
			for (int i = 0; i < nbrePublication; i++) {
574
				ModelData publicationLiee = grille.getStore().getAt(i);
574
				ModelData publicationLiee = grille.getStore().getAt(i);
575
				CollectionAPublication cap = new CollectionAPublication(grille.getStore().getAt(i), false);
575
				CollectionAPublication cap = new CollectionAPublication(grille.getStore().getAt(i), false);
576
				if (publicationLiee.get("_etat_") != null) {
576
				if (publicationLiee.get("_etat_") != null) {
577
					if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_MODIFIE)) {
577
					if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_MODIFIE)) {
578
						publicationsModifiees.put(cap.getIdPublication(), cap);
578
						publicationsModifiees.put(cap.getIdPublication(), cap);
579
					} 
579
					} 
580
					if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
580
					if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
581
						publicationsAjoutees.put("id"+idGenere++, cap);
581
						publicationsAjoutees.put("id"+idGenere++, cap);
582
					}
582
					}
583
					// Initialisation de la grille
583
					// Initialisation de la grille
584
					publicationLiee.set("_etat_", "");
584
					publicationLiee.set("_etat_", "");
585
				}
585
				}
586
			}
586
			}
587
			grille.getStore().commitChanges();
587
			grille.getStore().commitChanges();
588
		}
588
		}
589
	}
589
	}
590
	
590
	
591
	public void soumettre() {
591
	public void soumettre() {
592
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
592
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
593
			if (publicationsAjoutees.size() == 0 && publicationsSupprimees.size() == 0 && publicationsModifiees.size() == 0) {
593
			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é.");
594
				//InfoLogger.display("Modification des publications liées", "Rien n'a été enregistré car le formulaire n'a pas été modifié.");
595
			} else {
595
			} else {
596
				//Window.alert(publicationsAjoutees.size()+" | "+publicationsSupprimees.size()+" | "+publicationsModifiees.size());
596
				//Window.alert(publicationsAjoutees.size()+" | "+publicationsSupprimees.size()+" | "+publicationsModifiees.size());
597
				publicationsSontModifiees = true;
597
				publicationsSontModifiees = true;
598
				// Ajout des relations CollectionAPublication
598
				// Ajout des relations CollectionAPublication
599
				if (publicationsAjoutees.size() != 0) {
599
				if (publicationsAjoutees.size() != 0) {
600
					mediateur.ajouterCollectionAPublication(this, collection.getId(), publicationsAjoutees);
600
					mediateur.ajouterCollectionAPublication(this, collection.getId(), publicationsAjoutees);
601
				}
601
				}
602
				
602
				
603
				// Modification des relations CollectionAPublication
603
				// Modification des relations CollectionAPublication
604
				if (publicationsModifiees.size() != 0) {
604
				if (publicationsModifiees.size() != 0) {
605
					mediateur.modifierCollectionAPublication(this, publicationsModifiees);
605
					mediateur.modifierCollectionAPublication(this, publicationsModifiees);
606
				}
606
				}
607
				
607
				
608
				// Suppression des relations CollectionAPublication
608
				// Suppression des relations CollectionAPublication
609
				if (publicationsSupprimees.size() != 0) {
609
				if (publicationsSupprimees.size() != 0) {
610
					mediateur.supprimerCollectionAPublication(this, publicationsSupprimees);
610
					mediateur.supprimerCollectionAPublication(this, publicationsSupprimees);
611
				}
611
				}
612
			}
612
			}
613
		}
613
		}
614
	}
614
	}
615
}
615
}