Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 862 Rev 883
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.List;
4
import java.util.List;
5
 
5
 
6
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.images.Images;
7
import org.tela_botanica.client.images.Images;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
9
import org.tela_botanica.client.modeles.Collection;
-
 
10
import org.tela_botanica.client.modeles.CollectionAPublicationListe;
9
import org.tela_botanica.client.modeles.Information;
11
import org.tela_botanica.client.modeles.Information;
10
import org.tela_botanica.client.modeles.Publication;
12
import org.tela_botanica.client.modeles.Publication;
11
import org.tela_botanica.client.modeles.PublicationListe;
13
import org.tela_botanica.client.modeles.PublicationListe;
12
import org.tela_botanica.client.modeles.ValeurListe;
14
import org.tela_botanica.client.modeles.ValeurListe;
13
 
15
 
14
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
16
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
15
import com.extjs.gxt.ui.client.core.XTemplate;
17
import com.extjs.gxt.ui.client.core.XTemplate;
16
import com.extjs.gxt.ui.client.event.BaseEvent;
18
import com.extjs.gxt.ui.client.event.BaseEvent;
17
import com.extjs.gxt.ui.client.event.ButtonEvent;
19
import com.extjs.gxt.ui.client.event.ButtonEvent;
18
import com.extjs.gxt.ui.client.event.ComponentEvent;
20
import com.extjs.gxt.ui.client.event.ComponentEvent;
19
import com.extjs.gxt.ui.client.event.Events;
21
import com.extjs.gxt.ui.client.event.Events;
20
import com.extjs.gxt.ui.client.event.KeyListener;
22
import com.extjs.gxt.ui.client.event.KeyListener;
21
import com.extjs.gxt.ui.client.event.Listener;
23
import com.extjs.gxt.ui.client.event.Listener;
22
import com.extjs.gxt.ui.client.event.SelectionListener;
24
import com.extjs.gxt.ui.client.event.SelectionListener;
23
import com.extjs.gxt.ui.client.store.ListStore;
25
import com.extjs.gxt.ui.client.store.ListStore;
24
import com.extjs.gxt.ui.client.store.Store;
26
import com.extjs.gxt.ui.client.store.Store;
25
import com.extjs.gxt.ui.client.store.StoreEvent;
27
import com.extjs.gxt.ui.client.store.StoreEvent;
26
import com.extjs.gxt.ui.client.widget.ContentPanel;
28
import com.extjs.gxt.ui.client.widget.ContentPanel;
27
import com.extjs.gxt.ui.client.widget.Info;
29
import com.extjs.gxt.ui.client.widget.Info;
28
import com.extjs.gxt.ui.client.widget.Text;
30
import com.extjs.gxt.ui.client.widget.Text;
29
import com.extjs.gxt.ui.client.widget.button.Button;
31
import com.extjs.gxt.ui.client.widget.button.Button;
30
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
32
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
31
import com.extjs.gxt.ui.client.widget.form.ComboBox;
33
import com.extjs.gxt.ui.client.widget.form.ComboBox;
32
import com.extjs.gxt.ui.client.widget.form.FormPanel;
34
import com.extjs.gxt.ui.client.widget.form.FormPanel;
33
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
35
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
34
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
36
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
35
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
37
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
36
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
38
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
37
import com.extjs.gxt.ui.client.widget.grid.Grid;
39
import com.extjs.gxt.ui.client.widget.grid.Grid;
38
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
40
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
39
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
41
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
40
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig;
42
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig;
41
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
43
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
42
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
44
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
43
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
45
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
44
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
46
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
45
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
47
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
46
import com.google.gwt.core.client.GWT;
48
import com.google.gwt.core.client.GWT;
47
import com.google.gwt.event.shared.GwtEvent;
49
import com.google.gwt.event.shared.GwtEvent;
48
import com.google.gwt.user.client.Event;
50
import com.google.gwt.user.client.Event;
49
import com.google.gwt.user.client.ui.Image;
51
import com.google.gwt.user.client.ui.Image;
50
 
52
 
51
public class CollectionFormPublication extends FormulaireOnglet implements Rafraichissable {
53
public class CollectionFormPublication extends FormulaireOnglet implements Rafraichissable {
-
 
54
	
-
 
55
	private Collection collection = null;
-
 
56
	private static int idGenere = 1;
-
 
57
	
52
	private ContentPanel panneauPrincipal = null;
58
	private ContentPanel panneauPrincipal = null;
53
	private ToolBar barreOutils = null;
59
	private ToolBar barreOutils = null;
54
	private Grid<Publication> grille;
60
	private Grid<Publication> grille;
55
	
-
 
56
	private PublicationListe publications = null;
61
	
57
	private PublicationListe publicationsAjoutees = null;
62
	private PublicationListe publicationsAjoutees = null;
58
	private PublicationListe publicationsSupprimees = null;
63
	private PublicationListe publicationsSupprimees = null;
59
	private ComboBox<Publication> publicationsSaisiesComboBox = null;
64
	private ComboBox<Publication> publicationsSaisiesComboBox = null;
60
	private Button publicationsBoutonSupprimer = null;
65
	private Button publicationsBoutonSupprimer = null;
61
	private Button publicationsBoutonModifier = null;
66
	private Button publicationsBoutonModifier = null;
62
	private Button ajouterPublicationSaisieBouton = null;
-
 
63
	
67
	
64
	private FenetreForm fenetreFormulaire = null;
68
	private FenetreForm fenetreFormulaire = null;
65
	
69
	
66
	private static final String ETAT_AJOUTE = "A";
70
	private static final String ETAT_AJOUTE = "A";
67
	private static final String ETAT_SUPPRIME = "S";
-
 
68
	
71
	
69
	public CollectionFormPublication(Formulaire formulaireCourrant) {
72
	public CollectionFormPublication(Formulaire formulaireCourrant) {
70
		initialiserOnglet(formulaireCourrant);
73
		initialiserOnglet(formulaireCourrant);
71
		setId("publication");
74
		setId("publication");
72
		setText(Mediateur.i18nC.collectionPublication());
75
		setText(Mediateur.i18nC.collectionPublication());
73
		setStyleAttribute("padding", "0");
76
		setStyleAttribute("padding", "0");
74
		
77
		
75
		panneauPrincipal = creerPanneauContenantGrille();
78
		panneauPrincipal = creerPanneauContenantGrille();
76
		barreOutils = creerBarreOutilsGrille();
79
		barreOutils = creerBarreOutilsGrille();
77
		panneauPrincipal.setTopComponent(barreOutils);
80
		panneauPrincipal.setTopComponent(barreOutils);
78
		grille = creerGrille();
81
		grille = creerGrille();
79
  		panneauPrincipal.add(grille);
82
  		panneauPrincipal.add(grille);
80
		add(panneauPrincipal);
83
		add(panneauPrincipal);
81
		
84
		
82
		initialiser();
85
		initialiser();
83
	}
86
	}
84
	
87
	
85
	private void initialiser() {
88
	private void initialiser() {
86
		// Remise à zéro des modification dans la liste des auteurs
89
		// Remise à zéro des modification dans la liste des auteurs
-
 
90
		idGenere = 1;
87
		publicationsAjoutees = new PublicationListe();
91
		publicationsAjoutees = new PublicationListe();
88
		publicationsSupprimees = new PublicationListe();
92
		publicationsSupprimees = new PublicationListe();
89
		
93
		
90
		// Actualisation de l'état des boutons de la barre d'outils
94
		// Actualisation de l'état des boutons de la barre d'outils
91
		actualiserEtatBoutonsBarreOutils();
95
		actualiserEtatBoutonsBarreOutils();
92
	}
-
 
-
 
96
		
-
 
97
		collection = ((CollectionForm) formulaire).collection;
-
 
98
	}
93
		
99
	
94
	private ContentPanel creerPanneauContenantGrille() {
100
	private ContentPanel creerPanneauContenantGrille() {
95
		ContentPanel panneau = new ContentPanel();
101
		ContentPanel panneau = new ContentPanel();
96
		
102
		
97
		panneau.setHeading(i18nC.collectionPublicationTitre());
103
		panneau.setHeading(i18nC.collectionPublicationTitre());
98
		panneau.setIcon(Images.ICONES.table());
104
		panneau.setIcon(Images.ICONES.table());
99
		panneau.setLayout(new FitLayout());
105
		panneau.setLayout(new FitLayout());
100
		panneau.setFrame(true);
106
		panneau.setFrame(true);
101
		
107
		
102
		return panneau;
108
		return panneau;
103
	}
109
	}
104
 
110
 
105
	private ToolBar creerBarreOutilsGrille() {
111
	private ToolBar creerBarreOutilsGrille() {
106
		ToolBar barreOutils = new ToolBar();  
112
		ToolBar barreOutils = new ToolBar();  
107
		
113
		
108
		Button ajouterBouton = creerBoutonAjouter();
114
		Button ajouterBouton = creerBoutonAjouter();
109
		barreOutils.add(ajouterBouton);
115
		barreOutils.add(ajouterBouton);
110
		
116
		
111
		barreOutils.add(new Text(" ou "));
117
		barreOutils.add(new Text(" ou "));
112
		
118
		
113
		publicationsSaisiesComboBox = creerComboBoxPublicationsSaisis();
119
		publicationsSaisiesComboBox = creerComboBoxPublicationsSaisis();
114
		barreOutils.add(publicationsSaisiesComboBox);
120
		barreOutils.add(publicationsSaisiesComboBox);
115
		
121
		
116
		barreOutils.add(new SeparatorToolItem());
122
		barreOutils.add(new SeparatorToolItem());
117
		
123
		
118
		publicationsBoutonModifier = creerBoutonModifier();
124
		publicationsBoutonModifier = creerBoutonModifier();
119
		barreOutils.add(publicationsBoutonModifier);
125
		barreOutils.add(publicationsBoutonModifier);
120
		
126
		
121
		barreOutils.add(new SeparatorToolItem());
127
		barreOutils.add(new SeparatorToolItem());
122
		
128
		
123
		publicationsBoutonSupprimer = creerBoutonSupprimer();
129
		publicationsBoutonSupprimer = creerBoutonSupprimer();
124
		barreOutils.add(publicationsBoutonSupprimer);		
130
		barreOutils.add(publicationsBoutonSupprimer);		
125
		
131
		
126
		barreOutils.add(new SeparatorToolItem());
132
		barreOutils.add(new SeparatorToolItem());
127
		
133
		
128
		Button rafraichirBouton = creerBoutonRafraichir();
134
		Button rafraichirBouton = creerBoutonRafraichir();
129
		barreOutils.add(rafraichirBouton);
135
		barreOutils.add(rafraichirBouton);
130
		
136
		
131
		return barreOutils;
137
		return barreOutils;
132
	}
138
	}
133
 
139
 
134
	private Button creerBoutonAjouter() {
140
	private Button creerBoutonAjouter() {
135
		Button bouton = new Button(i18nC.ajouter());
141
		Button bouton = new Button(i18nC.ajouter());
136
		bouton.setIcon(Images.ICONES.vcardAjouter());
142
		bouton.setIcon(Images.ICONES.vcardAjouter());
137
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
143
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
138
			@Override  
144
			@Override  
139
			public void componentSelected(ButtonEvent ce) {  
145
			public void componentSelected(ButtonEvent ce) {  
140
				fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
146
				fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
141
				fenetreFormulaire.show();
147
				fenetreFormulaire.show();
142
			}  
148
			}  
143
		});
149
		});
144
		return bouton;
150
		return bouton;
145
	}
151
	}
146
	
152
	
147
	private Button creerBoutonModifier() {
153
	private Button creerBoutonModifier() {
148
		Button bouton = new Button(i18nC.modifier());
154
		Button bouton = new Button(i18nC.modifier());
149
		bouton.setIcon(Images.ICONES.vcardModifier());
155
		bouton.setIcon(Images.ICONES.vcardModifier());
150
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
156
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
151
			@Override  
157
			@Override  
152
			public void componentSelected(ButtonEvent ce) {  
158
			public void componentSelected(ButtonEvent ce) {  
153
				Publication publicationSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
159
				Publication publicationSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
154
				
160
				
155
				if (publicationSaisieSelectionnee == null) {
161
				if (publicationSaisieSelectionnee == null) {
156
					Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
162
					Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
157
				} else {
163
				} else {
158
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
164
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
159
					fenetreFormulaire.show();
165
					fenetreFormulaire.show();
160
				}
166
				}
161
			}  
167
			}  
162
		});
168
		});
163
		return bouton;
169
		return bouton;
164
	}
170
	}
165
	
171
	
166
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
172
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
167
		String publicationId = null;
173
		String publicationId = null;
168
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
174
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
169
			Publication publicationSaisiSelectionne = grille.getSelectionModel().getSelectedItem();
175
			Publication publicationSaisiSelectionne = grille.getSelectionModel().getSelectedItem();
170
			publicationId = publicationSaisiSelectionne.getId();
176
			publicationId = publicationSaisiSelectionne.getId();
171
		}
177
		}
172
		
178
		
173
		final FenetreForm fenetre = new FenetreForm("");
179
		final FenetreForm fenetre = new FenetreForm("");
174
		final PublicationForm formulaire = creerFormulairePublication(fenetre, publicationId);
180
		final PublicationForm formulaire = creerFormulairePublication(fenetre, publicationId);
175
		fenetre.add(formulaire);
181
		fenetre.add(formulaire);
176
		return fenetre;
182
		return fenetre;
177
	}
183
	}
178
	
184
	
179
	private PublicationForm creerFormulairePublication(final FenetreForm fenetre, final String publicationId) {
185
	private PublicationForm creerFormulairePublication(final FenetreForm fenetre, final String publicationId) {
180
		PublicationForm formulairePublication = new PublicationForm(mediateur, publicationId, this);
186
		PublicationForm formulairePublication = new PublicationForm(mediateur, publicationId, this);
181
		FormPanel panneauFormulaire = formulairePublication.getFormulaire();
187
		FormPanel panneauFormulaire = formulairePublication.getFormulaire();
182
		fenetre.setHeading(panneauFormulaire.getHeading());
188
		fenetre.setHeading(panneauFormulaire.getHeading());
183
		panneauFormulaire.setHeaderVisible(false);
189
		panneauFormulaire.setHeaderVisible(false);
184
		panneauFormulaire.setTopComponent(null);
190
		panneauFormulaire.setTopComponent(null);
185
 
191
 
186
		// TODO : gérer la barre d'outil avec des évènements spécifique au contexte de fenêtre modale
192
		// TODO : gérer la barre d'outil avec des évènements spécifique au contexte de fenêtre modale
187
		SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePublication(fenetre, formulairePublication);
193
		SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePublication(fenetre, formulairePublication);
188
		final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
194
		final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
189
		panneauFormulaire.setBottomComponent(barreValidation);
195
		panneauFormulaire.setBottomComponent(barreValidation);
190
		
196
		
191
		return formulairePublication;
197
		return formulairePublication;
192
	}
198
	}
193
	
199
	
194
	private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePublication(final FenetreForm fenetre, final PublicationForm formulaire) {
200
	private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePublication(final FenetreForm fenetre, final PublicationForm formulaire) {
195
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
201
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
196
			@Override
202
			@Override
197
			public void componentSelected(ButtonEvent ce) {
203
			public void componentSelected(ButtonEvent ce) {
198
				String code = ((Button) ce.getComponent()).getData("code");
204
				String code = ((Button) ce.getComponent()).getData("code");
199
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
205
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
200
					if (formulaire.soumettreFormulaire()) {
206
					if (formulaire.soumettreFormulaire()) {
201
						fenetre.hide();
207
						fenetre.hide();
202
					}
208
					}
203
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
209
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
204
					formulaire.soumettreFormulaire();
210
					formulaire.soumettreFormulaire();
205
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
211
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
206
					fenetre.hide();
212
					fenetre.hide();
207
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
213
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
208
					fenetreFormulaire.hide();
214
					fenetreFormulaire.hide();
209
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(formulaire.mode);
215
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(formulaire.mode);
210
					fenetreFormulaire.show();
216
					fenetreFormulaire.show();
211
				}
217
				}
212
			}
218
			}
213
		};
219
		};
214
		
220
		
215
		return ecouteur;
221
		return ecouteur;
216
	}
222
	}
217
	
223
	
218
	private Button creerBoutonSupprimer() {
224
	private Button creerBoutonSupprimer() {
219
		Button bouton = new Button(i18nC.supprimer());
225
		Button bouton = new Button(i18nC.supprimer());
220
		bouton.setIcon(Images.ICONES.vcardSupprimer());
226
		bouton.setIcon(Images.ICONES.vcardSupprimer());
221
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
227
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
222
			@Override
228
			@Override
223
			public void componentSelected(ButtonEvent ce) {
229
			public void componentSelected(ButtonEvent ce) {
224
				Publication publicationSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
230
				Publication publicationSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
225
				if (publicationSaisieSelectionnee == null) {
231
				if (publicationSaisieSelectionnee == null) {
226
					Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
232
					Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
227
				} else {
233
				} else {
228
					supprimerDansGrille(publicationSaisieSelectionnee);
234
					supprimerDansGrille(publicationSaisieSelectionnee);
229
				}
235
				}
230
			}   
236
			}   
231
		});
237
		});
232
		return bouton;
238
		return bouton;
233
	}
239
	}
234
	
240
	
235
	private Button creerBoutonRafraichir() {
241
	private Button creerBoutonRafraichir() {
236
		Button bouton = new Button(i18nC.rafraichir());
242
		Button bouton = new Button(i18nC.rafraichir());
237
		bouton.setIcon(Images.ICONES.rafraichir());
243
		bouton.setIcon(Images.ICONES.rafraichir());
238
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
244
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
239
			@Override
245
			@Override
240
			public void componentSelected(ButtonEvent ce) {
246
			public void componentSelected(ButtonEvent ce) {
241
				// TODO : mettre en place le rafraichissement de la liste
247
				actualiserGrille();
242
			}   
248
			}   
243
		});
249
		});
244
		return bouton;
250
		return bouton;
245
	}
251
	}
-
 
252
	
-
 
253
	private void actualiserGrille() {
-
 
254
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
-
 
255
			mediateur.selectionnerCollectionAPublication(this, collection.getId());
-
 
256
		} else {
-
 
257
			grille.getStore().removeAll();
-
 
258
			layout();
-
 
259
		}
-
 
260
	}
246
	
261
	
247
	private ComboBox<Publication> creerComboBoxPublicationsSaisis() {
262
	private ComboBox<Publication> creerComboBoxPublicationsSaisis() {
248
		ListStore<Publication> publicationsSaisiesStore = new ListStore<Publication>();
263
		ListStore<Publication> publicationsSaisiesStore = new ListStore<Publication>();
249
		
264
		
250
		ComboBox<Publication> comboBox = new ComboBox<Publication>();
265
		ComboBox<Publication> comboBox = new ComboBox<Publication>();
251
		comboBox.setWidth(400);
266
		comboBox.setWidth(400);
252
		comboBox.setEmptyText(i18nC.chercherPublicationSaisi());
267
		comboBox.setEmptyText(i18nC.chercherPublicationSaisi());
253
		comboBox.setTriggerAction(TriggerAction.ALL);  
268
		comboBox.setTriggerAction(TriggerAction.ALL);  
254
		comboBox.setEditable(true);
269
		comboBox.setEditable(true);
255
		comboBox.setDisplayField("fmt_nom_complet");
270
		comboBox.setDisplayField("fmt_nom_complet");
256
		comboBox.setStore(publicationsSaisiesStore);
271
		comboBox.setStore(publicationsSaisiesStore);
257
		comboBox.addKeyListener(new KeyListener() {
272
		comboBox.addKeyListener(new KeyListener() {
258
			public void componentKeyUp(ComponentEvent ce) {
273
			public void componentKeyUp(ComponentEvent ce) {
259
				if (publicationsSaisiesComboBox.getRawValue() != null && publicationsSaisiesComboBox.getRawValue().length() > 0) {
274
				if (publicationsSaisiesComboBox.getRawValue() != null && publicationsSaisiesComboBox.getRawValue().length() > 0) {
260
					if (!ce.isNavKeyPress()) {
275
					if (!ce.isNavKeyPress()) {
261
						obtenirPublicationsSaisies(publicationsSaisiesComboBox.getRawValue());
276
						obtenirPublicationsSaisies(publicationsSaisiesComboBox.getRawValue());
262
					}
277
					}
263
				}
278
				}
264
			}
279
			}
265
		});
280
		});
266
		comboBox.addListener(Events.Select, new Listener<BaseEvent>() {
281
		comboBox.addListener(Events.Select, new Listener<BaseEvent>() {
267
			@Override
282
			@Override
268
			public void handleEvent(BaseEvent be) {
283
			public void handleEvent(BaseEvent be) {
269
				if (publicationsSaisiesComboBox.getValue() instanceof Publication) {
284
				if (publicationsSaisiesComboBox.getValue() instanceof Publication) {
270
					Publication publicationSaisieSelectionne = publicationsSaisiesComboBox.getValue();
285
					Publication publicationSaisieSelectionne = publicationsSaisiesComboBox.getValue();
271
					ajouterDansGrille(publicationSaisieSelectionne);
286
					ajouterDansGrille(publicationSaisieSelectionne);
272
					publicationsSaisiesComboBox.setValue(null);
287
					publicationsSaisiesComboBox.setValue(null);
273
				}
288
				}
274
			}
289
			}
275
		});
290
		});
276
		return comboBox;
291
		return comboBox;
277
	}
292
	}
278
		
293
		
279
	private void ajouterDansGrille(Publication publication) {
294
	private void ajouterDansGrille(Publication publication) {
280
		if (publication != null) {
295
		if (publication != null) {
281
			// Ajout de la personne ajoutée à la liste
296
			// Ajout de la personne ajoutée à la liste
282
			if (publication.getId() != null && !publication.getId().equals("")) {
297
			if (publication.getId() != null && !publication.getId().equals("")) {
283
				publicationsAjoutees.put(publication.getId(), publication);
298
				publicationsAjoutees.put(publication.getId(), publication);
284
			}
299
			}
285
			
300
			
286
			// Définition de l'état
301
			// Définition de l'état
287
			publication.set("etat", ETAT_AJOUTE);
302
			publication.set("_etat_", ETAT_AJOUTE);
288
			
303
			
289
			// Ajout à la grille
304
			// Ajout à la grille
290
			grille.getStore().insert(publication, 0);
305
			grille.getStore().insert(publication, 0);
291
			grille.getSelectionModel().select(0, false);
306
			grille.getSelectionModel().select(0, false);
292
		}
307
		}
293
	}
308
	}
294
	
309
	
295
	private void supprimerDansGrille(Publication publication) {
310
	private void supprimerDansGrille(Publication publication) {
296
		if (publication != null) {
311
		if (publication != null) {
297
			// Ajout de la personne supprimée à la liste
312
			// Ajout de la personne supprimée à la liste
298
			if ((publication.get("etat") == null || !publication.get("etat").equals(ETAT_AJOUTE)) && publication.getId() != null && !publication.getId().equals("")) {
313
			if ((publication.get("etat") == null || !publication.get("etat").equals(ETAT_AJOUTE)) && publication.getId() != null && !publication.getId().equals("")) {
299
				publicationsSupprimees.put(publication.getId(), publication);
314
				publicationsSupprimees.put(publication.getId(), publication);
300
			}
315
			}
301
			
316
			
302
			// Suppression de l'enregistrement de la grille
317
			// Suppression de l'enregistrement de la grille
303
			grille.getStore().remove(publication);			
318
			grille.getStore().remove(publication);			
304
		}
319
		}
305
	}
320
	}
306
 
321
 
307
	private Grid<Publication> creerGrille() {
322
	private Grid<Publication> creerGrille() {
308
		ListStore<Publication> storeGrille = new ListStore<Publication>();
323
		ListStore<Publication> storeGrille = new ListStore<Publication>();
309
		storeGrille.addListener(Store.Add, new Listener<StoreEvent<Publication>>() {
324
		storeGrille.addListener(Store.Add, new Listener<StoreEvent<Publication>>() {
310
			public void handleEvent(StoreEvent<Publication> ce) {
325
			public void handleEvent(StoreEvent<Publication> ce) {
311
				actualiserEtatBoutonsBarreOutils();
326
				actualiserEtatBoutonsBarreOutils();
312
			}
327
			}
313
		});
328
		});
314
		storeGrille.addListener(Store.Remove, new Listener<StoreEvent<Publication>>() {
329
		storeGrille.addListener(Store.Remove, new Listener<StoreEvent<Publication>>() {
315
			public void handleEvent(StoreEvent<Publication> ce) {
330
			public void handleEvent(StoreEvent<Publication> ce) {
316
				actualiserEtatBoutonsBarreOutils();
331
				actualiserEtatBoutonsBarreOutils();
317
			}
332
			}
318
		});
333
		});
319
		
334
		
320
		RowNumberer numeroPlugin = new RowNumberer();
335
		RowNumberer numeroPlugin = new RowNumberer();
321
		numeroPlugin.setHeader("#");
336
		numeroPlugin.setHeader("#");
322
		
337
		
323
		XTemplate infoTpl = XTemplate.create("<p>"+
338
		XTemplate infoTpl = XTemplate.create("<p>"+
324
			"<span style='font-weight:bold;'>"+i18nC.publicationAuteurs()+" :</span> {fmt_auteur}<br />"+
339
			"<span style='font-weight:bold;'>"+i18nC.publicationAuteurs()+" :</span> {fmt_auteur}<br />"+
325
			"<span style='font-weight:bold;'>"+i18nC.publicationTitre()+" :</span> {titre}<br />"+
340
			"<span style='font-weight:bold;'>"+i18nC.publicationTitre()+" :</span> {titre}<br />"+
326
			"<span style='font-weight:bold;'>"+i18nC.publicationRevueCollection()+" :</span> {collection}<br />"+
341
			"<span style='font-weight:bold;'>"+i18nC.publicationRevueCollection()+" :</span> {collection}<br />"+
327
			"<span style='font-weight:bold;'>"+i18nC.publicationEditeur()+" :</span> {_editeur_}"+
342
			"<span style='font-weight:bold;'>"+i18nC.publicationEditeur()+" :</span> {_editeur_}"+
328
			"</p>");  
343
			"</p>");  
329
		RowExpander expansionPlugin = new RowExpander();  
344
		RowExpander expansionPlugin = new RowExpander();  
330
		expansionPlugin.setTemplate(infoTpl);
345
		expansionPlugin.setTemplate(infoTpl);
331
		
346
		
332
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
347
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
333
		colonnes.add(expansionPlugin);
348
		colonnes.add(expansionPlugin);
334
		colonnes.add(numeroPlugin);
349
		colonnes.add(numeroPlugin);
335
		colonnes.add(new ColumnConfig("fmt_auteur", i18nC.publicationAuteurs(), 150));
350
		colonnes.add(new ColumnConfig("fmt_auteur", i18nC.publicationAuteurs(), 150));
336
		colonnes.add(new ColumnConfig("titre", i18nC.publicationTitre(), 150));
351
		colonnes.add(new ColumnConfig("titre", i18nC.publicationTitre(), 150));
337
		colonnes.add(new ColumnConfig("collection", i18nC.publicationRevueCollection(), 75));
352
		colonnes.add(new ColumnConfig("collection", i18nC.publicationRevueCollection(), 75));
338
		colonnes.add(PublicationListeVue.creerColonneEditeur());
353
		colonnes.add(PublicationListeVue.creerColonneEditeur());
339
		colonnes.add(PublicationListeVue.creerColonneAnneePublication());
354
		colonnes.add(PublicationListeVue.creerColonneAnneePublication());
340
		colonnes.add(new ColumnConfig("indication_nvt", i18nC.publicationNvt(), 75));
355
		colonnes.add(new ColumnConfig("indication_nvt", i18nC.publicationNvt(), 75));
341
		colonnes.add(new ColumnConfig("fascicule", i18nC.publicationFascicule(), 75));
356
		colonnes.add(new ColumnConfig("fascicule", i18nC.publicationFascicule(), 75));
342
		colonnes.add(new ColumnConfig("truk_pages", i18nC.publicationPage(), 50));
357
		colonnes.add(new ColumnConfig("truk_pages", i18nC.publicationPage(), 50));
343
		
358
		
344
		GridSelectionModel<Publication> modeleDeSelection = new GridSelectionModel<Publication>();
359
		GridSelectionModel<Publication> modeleDeSelection = new GridSelectionModel<Publication>();
345
		
360
		
346
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
361
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
347
		modeleDeColonnes.getColumn(0).setWidget(Images.ICONES.information().createImage(), "Info");
362
		modeleDeColonnes.getColumn(0).setWidget(Images.ICONES.information().createImage(), "Info");
348
		
363
		
349
		Grid<Publication> grillePublications = new Grid<Publication>(storeGrille, modeleDeColonnes);
364
		Grid<Publication> grillePublications = new Grid<Publication>(storeGrille, modeleDeColonnes);
350
		grillePublications.setHeight("100%");
365
		grillePublications.setHeight("100%");
351
		grillePublications.setBorders(true);
366
		grillePublications.setBorders(true);
352
		grillePublications.setSelectionModel(modeleDeSelection);
367
		grillePublications.setSelectionModel(modeleDeSelection);
353
		grillePublications.addPlugin(expansionPlugin);
368
		grillePublications.addPlugin(expansionPlugin);
354
		grillePublications.addPlugin(numeroPlugin);
369
		grillePublications.addPlugin(numeroPlugin);
355
		grillePublications.getView().setForceFit(true);
370
		grillePublications.getView().setForceFit(true);
356
		grillePublications.getView().setAutoFill(true);
371
		grillePublications.getView().setAutoFill(true);
357
		grillePublications.setAutoExpandColumn("titre");
372
		grillePublications.setAutoExpandColumn("titre");
358
		grillePublications.setStripeRows(true);
373
		grillePublications.setStripeRows(true);
359
		grillePublications.setTrackMouseOver(true);
374
		grillePublications.setTrackMouseOver(true);
360
		
375
		
361
		return grillePublications;
376
		return grillePublications;
362
	}
377
	}
363
 
378
 
364
	public void actualiserEtatBoutonsBarreOutils() {
379
	public void actualiserEtatBoutonsBarreOutils() {
365
		// Activation des boutons si la grille contient un élément
380
		// Activation des boutons si la grille contient un élément
366
		if (grille.getStore().getCount() > 0) {  
381
		if (grille.getStore().getCount() > 0) {  
367
			publicationsBoutonSupprimer.enable();
382
			publicationsBoutonSupprimer.enable();
368
			publicationsBoutonModifier.enable();
383
			publicationsBoutonModifier.enable();
369
		}
384
		}
370
		// Désactivation des boutons si la grille ne contient plus d'élément
385
		// Désactivation des boutons si la grille ne contient plus d'élément
371
		if (grille.getStore().getCount() == 0) {  
386
		if (grille.getStore().getCount() == 0) {  
372
			publicationsBoutonSupprimer.disable();
387
			publicationsBoutonSupprimer.disable();
373
			publicationsBoutonModifier.disable();
388
			publicationsBoutonModifier.disable();
374
		}
389
		}
375
	}
390
	}
376
	
391
	
377
	public void rafraichir(Object nouvellesDonnees) {
392
	public void rafraichir(Object nouvellesDonnees) {
378
		if (nouvellesDonnees instanceof Information) {
393
		if (nouvellesDonnees instanceof Information) {
379
			Information info = (Information) nouvellesDonnees;
394
			Information info = (Information) nouvellesDonnees;
380
			rafraichirInformation(info);
395
			rafraichirInformation(info);
381
		} else if (nouvellesDonnees instanceof PublicationListe) {
396
		} else if (nouvellesDonnees instanceof PublicationListe) {
382
			PublicationListe listePublications = (PublicationListe) nouvellesDonnees;
397
			PublicationListe listePublications = (PublicationListe) nouvellesDonnees;
383
			rafraichirPublicationListe(listePublications);
398
			rafraichirPublicationListe(listePublications);
384
		} else {
399
		} else {
385
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
400
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
386
		}
401
		}
387
	}
402
	}
388
		
403
		
389
	private void rafraichirPublicationListe(PublicationListe listePublications) {
404
	private void rafraichirPublicationListe(PublicationListe listePublications) {
390
		List<Publication> liste = listePublications.toList();
405
		List<Publication> liste = listePublications.toList();
391
		
406
		
392
		publicationsSaisiesComboBox.getStore().removeAll();
407
		publicationsSaisiesComboBox.getStore().removeAll();
393
		publicationsSaisiesComboBox.getStore().add(liste);
408
		publicationsSaisiesComboBox.getStore().add(liste);
394
		publicationsSaisiesComboBox.expand();
409
		publicationsSaisiesComboBox.expand();
395
	}
410
	}
396
	
411
	
397
	public void rafraichirInformation(Information info) {
412
	public void rafraichirInformation(Information info) {
398
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
413
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
399
			GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
414
			GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
400
		}
415
		}
401
		String type = info.getType();
416
		String type = info.getType();
402
		if (type.equals("liste_collection_a_publication")) {
417
		if (type.equals("liste_collection_a_publication")) {
403
			if (info.getDonnee(0) != null) {
418
			if (info.getDonnee(0) != null) {
404
				initialiser();
419
				initialiser();
405
				// TODO : passer à la méthode peupler un objet CollectionAPublicationListe et modifier le type de publications
420
				// TODO : passer à la méthode peupler un objet CollectionAPublicationListe et modifier le type de publications
406
				//publications = (CollectionAPublicationListe) info.getDonnee(0);
421
				//publications = (CollectionAPublicationListe) info.getDonnee(0);
407
				peupler();
422
				peupler();
408
			}
423
			}
409
		} else if (type.equals("publication_modifiee")) {
424
		} else if (type.equals("publication_modifiee")) {
410
			if (info.getDonnee(0) != null) {
425
			if (info.getDonnee(0) != null) {
411
				Publication publication = (Publication) info.getDonnee(0);
426
				Publication publication = (Publication) info.getDonnee(0);
412
				Publication publicationDansGrille = grille.getStore().findModel("id_publication", publication.getId());
427
				Publication publicationDansGrille = grille.getStore().findModel("id_publication", publication.getId());
413
				int index = grille.getStore().indexOf(publicationDansGrille);
428
				int index = grille.getStore().indexOf(publicationDansGrille);
414
				grille.getStore().remove(publicationDansGrille);
429
				grille.getStore().remove(publicationDansGrille);
415
				grille.getStore().insert(publication, index);
430
				grille.getStore().insert(publication, index);
416
				grille.getStore().commitChanges();
431
				grille.getStore().commitChanges();
417
			}
432
			}
418
		} else if (type.equals("publication_ajoutee")) {
433
		} else if (type.equals("publication_ajoutee")) {
419
			if (info.getDonnee(0) != null) {
434
			if (info.getDonnee(0) != null) {
420
				Publication publication = (Publication) info.getDonnee(0);
435
				Publication publication = (Publication) info.getDonnee(0);
421
				grille.getStore().add(publication);
436
				grille.getStore().add(publication);
422
				grille.getStore().commitChanges();
437
				grille.getStore().commitChanges();
423
			}
438
			}
-
 
439
		} else if (info.getType().equals("liste_collection_a_publication")) {
-
 
440
			if (info.getDonnee(0) != null) {
-
 
441
				initialiser();
-
 
442
				collection.setPublicationsLiees((CollectionAPublicationListe) info.getDonnee(0));
-
 
443
				peupler();
-
 
444
			}
424
		} else {
445
		} else {
425
			GWT.log(Mediateur.i18nM.erreurRafraichir(info.getClass(), this.getClass()), null);
446
			GWT.log(Mediateur.i18nM.erreurRafraichir(info.getClass(), this.getClass()), null);
426
		}
447
		}
427
	}
448
	}
428
 
449
 
-
 
450
	public void peupler() {
429
	private void peupler() {
451
		//grille.getStore().add(collection.getPublicationsLiees().toList());
430
		layout();
452
		layout();
431
		Info.display(i18nC.chargementPublication(), i18nC.ok());
453
		Info.display(i18nC.chargementPublication(), i18nC.ok());
432
	}
454
	}
433
 
455
 
434
	private void obtenirPublicationsSaisies(String nom) {
456
	private void obtenirPublicationsSaisies(String nom) {
435
		mediateur.selectionnerPublicationParNomComplet(this, null, nom+"%"); 
457
		mediateur.selectionnerPublicationParNomComplet(this, null, nom+"%"); 
436
	}
458
	}
437
}
459
}