Subversion Repositories eFlore/Applications.coel

Rev

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

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