Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1680 Rev 1687
1
package org.tela_botanica.client.vues.commentaire;
1
package org.tela_botanica.client.vues.commentaire;
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.Iterator;
5
import java.util.Iterator;
6
import java.util.List;
6
import java.util.List;
7
 
7
 
8
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.Mediateur;
9
import org.tela_botanica.client.RegistreId;
9
import org.tela_botanica.client.RegistreId;
10
import org.tela_botanica.client.composants.ChampFiltreRecherche;
10
import org.tela_botanica.client.composants.ChampFiltreRecherche;
11
import org.tela_botanica.client.composants.InfoLogger;
11
import org.tela_botanica.client.composants.InfoLogger;
12
import org.tela_botanica.client.i18n.Constantes;
12
import org.tela_botanica.client.i18n.Constantes;
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.MenuApplicationId;
16
import org.tela_botanica.client.modeles.MenuApplicationId;
17
import org.tela_botanica.client.modeles.Utilisateur;
17
import org.tela_botanica.client.modeles.Utilisateur;
18
import org.tela_botanica.client.modeles.Valeur;
18
import org.tela_botanica.client.modeles.Valeur;
19
import org.tela_botanica.client.modeles.ValeurListe;
19
import org.tela_botanica.client.modeles.ValeurListe;
20
import org.tela_botanica.client.modeles.aDonnee;
20
import org.tela_botanica.client.modeles.aDonnee;
21
import org.tela_botanica.client.modeles.collection.Collection;
21
import org.tela_botanica.client.modeles.collection.Collection;
22
import org.tela_botanica.client.modeles.commentaire.Commentaire;
22
import org.tela_botanica.client.modeles.commentaire.Commentaire;
23
import org.tela_botanica.client.modeles.commentaire.CommentaireListe;
23
import org.tela_botanica.client.modeles.commentaire.CommentaireListe;
24
import org.tela_botanica.client.modeles.structure.StructureListe;
24
import org.tela_botanica.client.modeles.structure.StructureListe;
25
import org.tela_botanica.client.util.Debug;
25
import org.tela_botanica.client.util.Debug;
26
import org.tela_botanica.client.vues.BarrePaginationVue;
26
import org.tela_botanica.client.vues.BarrePaginationVue;
27
 
27
 
28
import com.extjs.gxt.ui.client.Registry;
28
import com.extjs.gxt.ui.client.Registry;
29
import com.extjs.gxt.ui.client.Style.SortDir;
29
import com.extjs.gxt.ui.client.Style.SortDir;
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.SelectionChangedEvent;
34
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
35
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
35
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
36
import com.extjs.gxt.ui.client.event.SelectionListener;
36
import com.extjs.gxt.ui.client.event.SelectionListener;
37
import com.extjs.gxt.ui.client.store.GroupingStore;
37
import com.extjs.gxt.ui.client.store.GroupingStore;
38
import com.extjs.gxt.ui.client.store.ListStore;
38
import com.extjs.gxt.ui.client.store.ListStore;
39
import com.extjs.gxt.ui.client.util.Util;
39
import com.extjs.gxt.ui.client.util.Util;
40
import com.extjs.gxt.ui.client.widget.ContentPanel;
40
import com.extjs.gxt.ui.client.widget.ContentPanel;
41
import com.extjs.gxt.ui.client.widget.Info;
41
import com.extjs.gxt.ui.client.widget.Info;
42
import com.extjs.gxt.ui.client.widget.button.Button;
42
import com.extjs.gxt.ui.client.widget.button.Button;
43
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
43
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
44
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
44
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
45
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
45
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
46
import com.extjs.gxt.ui.client.widget.grid.Grid;
46
import com.extjs.gxt.ui.client.widget.grid.Grid;
47
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
47
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
48
import com.extjs.gxt.ui.client.widget.grid.GridGroupRenderer;
48
import com.extjs.gxt.ui.client.widget.grid.GridGroupRenderer;
49
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
49
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
50
import com.extjs.gxt.ui.client.widget.grid.GroupColumnData;
50
import com.extjs.gxt.ui.client.widget.grid.GroupColumnData;
51
import com.extjs.gxt.ui.client.widget.grid.GroupingView;
51
import com.extjs.gxt.ui.client.widget.grid.GroupingView;
52
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
52
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
53
import com.extjs.gxt.ui.client.widget.menu.Menu;
53
import com.extjs.gxt.ui.client.widget.menu.Menu;
54
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
54
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
55
import com.google.gwt.core.client.GWT;
55
import com.google.gwt.core.client.GWT;
56
import com.google.gwt.user.client.Window;
56
import com.google.gwt.user.client.Window;
57
 
57
 
58
public class CommentaireListeVue extends ContentPanel implements Rafraichissable {
58
public class CommentaireListeVue extends ContentPanel implements Rafraichissable {
59
 
59
 
60
	private Mediateur mediateur = null;
60
	private Mediateur mediateur = null;
61
	private Constantes i18nC = null;
61
	private Constantes i18nC = null;
62
 
62
 
63
	private Grid<Commentaire> grille = null;
63
	private Grid<Commentaire> grille = null;
64
	private GroupingStore<Commentaire> store = null;
64
	private GroupingStore<Commentaire> store = null;
65
	private ColumnModel modeleDesColonnes = null;
65
	private ColumnModel modeleDesColonnes = null;
66
	
66
	
67
	private Button ajouter;
67
	private Button ajouter;
68
	private Button modifier;
68
	private Button modifier;
69
	private Button supprimer;
69
	private Button supprimer;
70
	
70
	
71
	private BarrePaginationVue pagination = null;
71
	private BarrePaginationVue pagination = null;
72
	private ChampFiltreRecherche champFiltreRecherche = null;
72
	private ChampFiltreRecherche champFiltreRecherche = null;
73
	
73
	
74
	private CommentaireListe commentaires = null;
74
	private CommentaireListe commentaires = null;
75
	protected boolean commentairesChargementOk = false;
75
	protected boolean commentairesChargementOk = false;
76
	
76
	
77
	protected HashMap<String, Valeur> ontologie = null;
77
	protected HashMap<String, Valeur> ontologie = null;
78
	protected boolean ontologieChargementOk = false;
78
	protected boolean ontologieChargementOk = false;
79
	
79
	
80
	private int indexElementSelectionne = 0;
80
	private int indexElementSelectionne = 0;
81
	private Commentaire commentaireSelectionne = null;
81
	private Commentaire commentaireSelectionne = null;
82
	
82
	
83
	public CommentaireListeVue(Mediateur mediateurCourant) {
83
	public CommentaireListeVue(Mediateur mediateurCourant) {
84
		mediateur = mediateurCourant;
84
		mediateur = mediateurCourant;
85
		i18nC = Mediateur.i18nC;
85
		i18nC = Mediateur.i18nC;
86
		
86
		
87
		setLayout(new FitLayout());
87
		setLayout(new FitLayout());
88
		setHeadingHtml(i18nC.menuCommentaire());
88
		setHeadingHtml(i18nC.menuCommentaire());
89
		
89
		
90
		// Gestion de l'ontologie
90
		// Gestion de l'ontologie
91
		ontologie = new HashMap<String, Valeur>();
91
		ontologie = new HashMap<String, Valeur>();
92
		mediateur.obtenirListeValeurEtRafraichir(this, "typeCommentaireCollection", null);
92
		mediateur.obtenirListeValeurEtRafraichir(this, "typeCommentaireCollection", null);
93
		
93
		
94
		// Gestion de la barre d'outil
94
		// Gestion de la barre d'outil
95
		ToolBar toolBar = new ToolBar();
95
		ToolBar toolBar = new ToolBar();
96
		ajouter = new Button(i18nC.ajouter());
96
		ajouter = new Button(i18nC.ajouter());
97
		ajouter.setIcon(Images.ICONES.ajouter());
97
		ajouter.setIcon(Images.ICONES.ajouter());
98
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
98
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
99
			public void componentSelected(ButtonEvent be) {  
99
			public void componentSelected(ButtonEvent be) {  
100
				mediateur.clicAjouterCommentaire();
100
				mediateur.clicAjouterCommentaire();
101
			}  
101
			}  
102
		});
102
		});
103
		ajouter.setToolTip(i18nC.indicationCreerUneFiche()+" "+i18nC.commentaireSingulier());
103
		ajouter.setToolTip(i18nC.indicationCreerUneFiche()+" "+i18nC.commentaireSingulier());
104
		toolBar.add(ajouter);
104
		toolBar.add(ajouter);
105
 
105
 
106
		modifier = new Button(i18nC.modifier());
106
		modifier = new Button(i18nC.modifier());
107
		modifier.setIcon(Images.ICONES.formModifier());
107
		modifier.setIcon(Images.ICONES.formModifier());
108
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {  
108
		modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {  
109
			public void componentSelected(ButtonEvent be) { 
109
			public void componentSelected(ButtonEvent be) { 
110
				mediateur.clicModifierCommentaire(grille.getSelectionModel().getSelectedItems());
110
				mediateur.clicModifierCommentaire(grille.getSelectionModel().getSelectedItems());
111
			}  
111
			}  
112
		});
112
		});
113
		modifier.setToolTip(i18nC.indicationModifierUneFiche());
113
		modifier.setToolTip(i18nC.indicationModifierUneFiche());
114
		toolBar.add(modifier);
114
		toolBar.add(modifier);
115
		
115
		
116
		supprimer = new Button(i18nC.supprimer());
116
		supprimer = new Button(i18nC.supprimer());
117
		supprimer.setIcon(Images.ICONES.supprimer());
117
		supprimer.setIcon(Images.ICONES.supprimer());
118
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {  
118
		supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {  
119
			public void componentSelected(ButtonEvent be) { 
119
			public void componentSelected(ButtonEvent be) { 
120
				mediateur.clicSupprimerCommentaire(grille.getSelectionModel().getSelectedItems());
120
				mediateur.clicSupprimerCommentaire(grille.getSelectionModel().getSelectedItems());
121
			}  
121
			}  
122
		});
122
		});
123
		supprimer.setToolTip(i18nC.indicationSupprimerUneFiche());
123
		supprimer.setToolTip(i18nC.indicationSupprimerUneFiche());
124
		toolBar.add(supprimer);
124
		toolBar.add(supprimer);
125
		setTopComponent(toolBar);
125
		setTopComponent(toolBar);
126
 
126
 
127
		// Gestion de la grille
127
		// Gestion de la grille
128
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
128
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
129
		// ATTENTION : les noms des colonnes doivent correspondre aux noms variables de la classe utilisée dans la liste
129
		// ATTENTION : les noms des colonnes doivent correspondre aux noms variables de la classe utilisée dans la liste
130
		colonnes.add(new ColumnConfig("_collection_nom_", i18nC.commentaireCollection(), 150));		
130
		colonnes.add(new ColumnConfig("_collection_nom_", i18nC.commentaireCollection(), 150));		
131
		colonnes.add(creerColonneType());
131
		colonnes.add(creerColonneType());
132
		colonnes.add(new ColumnConfig("_titre_", i18nC.commentaireTitre(), 150));
132
		colonnes.add(new ColumnConfig("_titre_", i18nC.commentaireTitre(), 150));
133
		colonnes.add(new ColumnConfig("_ponderation_", i18nC.commentairePonderation(), 30));
133
		colonnes.add(new ColumnConfig("_ponderation_", i18nC.commentairePonderation(), 30));
134
		colonnes.add(creerColonneAcces());
134
		colonnes.add(creerColonneAcces());
135
		modeleDesColonnes = new ColumnModel(colonnes);
135
		modeleDesColonnes = new ColumnModel(colonnes);
136
 
136
 
137
		GridSelectionModel<Commentaire> modeleDeSelection = new GridSelectionModel<Commentaire>();
137
		GridSelectionModel<Commentaire> modeleDeSelection = new GridSelectionModel<Commentaire>();
138
		modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Commentaire>() {
138
		modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Commentaire>() {
139
			public void selectionChanged(SelectionChangedEvent<Commentaire> event) {
139
			public void selectionChanged(SelectionChangedEvent<Commentaire> event) {
140
				commentaireSelectionne = (Commentaire) event.getSelectedItem();
140
				commentaireSelectionne = (Commentaire) event.getSelectedItem();
141
				indexElementSelectionne = store.indexOf(commentaireSelectionne);
141
				indexElementSelectionne = store.indexOf(commentaireSelectionne);
142
				clicListe(commentaireSelectionne);
142
				clicListe(commentaireSelectionne);
143
			}
143
			}
144
		});
144
		});
145
		
145
		
146
		store = new GroupingStore<Commentaire>();
146
		store = new GroupingStore<Commentaire>();
147
		//store.sort("cmhl_date_modification", SortDir.ASC);
147
		//store.sort("cmhl_date_modification", SortDir.ASC);
148
		store.groupBy("_collection_nom_");
148
		store.groupBy("_collection_nom_");
149
		store.setRemoteGroup(false);
149
		store.setRemoteGroup(false);
150
		
150
		
151
		GroupingView vueDeGroupe = new GroupingView();
151
		GroupingView vueDeGroupe = new GroupingView();
152
		vueDeGroupe.setShowGroupedColumn(false);
152
		vueDeGroupe.setShowGroupedColumn(false);
153
		vueDeGroupe.setForceFit(true);
153
		vueDeGroupe.setForceFit(true);
154
		vueDeGroupe.setAutoFill(true);
154
		vueDeGroupe.setAutoFill(true);
155
		vueDeGroupe.setGroupRenderer(new GridGroupRenderer() {
155
		vueDeGroupe.setGroupRenderer(new GridGroupRenderer() {
156
			public String render(GroupColumnData data) {
156
			public String render(GroupColumnData data) {
157
				String f = modeleDesColonnes.getColumnById(data.field).getHeaderHtml();
157
				String f = modeleDesColonnes.getColumnById(data.field).getHeaderHtml();
158
				String l = data.models.size() == 1 ? i18nC.commentaireSingulier() : i18nC.commentairePluriel();
158
				String l = data.models.size() == 1 ? i18nC.commentaireSingulier() : i18nC.commentairePluriel();
159
				
159
				
160
				if (Util.isEmptyString(data.group)) return f + ": aucune (" + data.models.size() + " " + l + ")";
160
				if (Util.isEmptyString(data.group)) return f + ": aucune (" + data.models.size() + " " + l + ")";
161
				else return f + ": " + data.group + " (" + data.models.size() + " " + l + ")";
161
				else return f + ": " + data.group + " (" + data.models.size() + " " + l + ")";
162
			}
162
			}
163
		});
163
		});
164
		
164
		
165
		grille = new Grid<Commentaire>(store, modeleDesColonnes);
165
		grille = new Grid<Commentaire>(store, modeleDesColonnes);
166
		grille.setView(vueDeGroupe);
166
		grille.setView(vueDeGroupe);
167
		grille.setWidth("100%");
167
		grille.setWidth("100%");
168
		grille.setAutoExpandColumn("_titre_");
168
		grille.setAutoExpandColumn("_titre_");
169
		grille.setSelectionModel(modeleDeSelection);
169
		grille.setSelectionModel(modeleDeSelection);
170
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
170
		grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
171
			public void handleEvent(BaseEvent be) {
171
			public void handleEvent(BaseEvent be) {
172
				grille.getSelectionModel().select(0, false);
172
				grille.getSelectionModel().select(0, false);
173
			}
173
			}
174
		});
174
		});
175
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>(){
175
		grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>(){
176
			public void handleEvent(BaseEvent be) {
176
			public void handleEvent(BaseEvent be) {
177
				modifier.fireEvent(Events.Select);
177
				modifier.fireEvent(Events.Select);
178
			}
178
			}
179
		});
179
		});
180
		add(grille);
180
		add(grille);
181
		
181
		
182
		CommentaireListe commentaireListe = new CommentaireListe();
182
		CommentaireListe commentaireListe = new CommentaireListe();
183
		champFiltreRecherche = new ChampFiltreRecherche(mediateur, toolBar, commentaireListe);
183
		champFiltreRecherche = new ChampFiltreRecherche(mediateur, toolBar, commentaireListe);
184
		// Définition de la barre de pagination
184
		// Définition de la barre de pagination
185
		pagination = new BarrePaginationVue(commentaireListe, mediateur);
185
		pagination = new BarrePaginationVue(commentaireListe, mediateur, champFiltreRecherche);
186
		setBottomComponent(pagination);
186
		setBottomComponent(pagination);
187
	}
187
	}
188
	
188
	
189
	private ColumnConfig creerColonneType() {
189
	private ColumnConfig creerColonneType() {
190
		GridCellRenderer<Commentaire> typeRendu = new GridCellRenderer<Commentaire>() {
190
		GridCellRenderer<Commentaire> typeRendu = new GridCellRenderer<Commentaire>() {
191
			public String render(Commentaire model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<Commentaire> store, Grid<Commentaire> grid) {
191
			public String render(Commentaire model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<Commentaire> store, Grid<Commentaire> grid) {
192
				// FIXME : créer une classe Ontologie qui mixe le code ci-dessous et tout ce qui concerne l'ontologie dans DetailVue
192
				// FIXME : créer une classe Ontologie qui mixe le code ci-dessous et tout ce qui concerne l'ontologie dans DetailVue
193
				String type = "";
193
				String type = "";
194
				String[] valeurs = model.getCollectionACommentaire().getType().split(aDonnee.SEPARATEUR_VALEURS);
194
				String[] valeurs = model.getCollectionACommentaire().getType().split(aDonnee.SEPARATEUR_VALEURS);
195
				
195
				
196
				int nbreValeurs = valeurs.length;
196
				int nbreValeurs = valeurs.length;
197
				
197
				
198
				int indexAvtDernier = nbreValeurs - 1;
198
				int indexAvtDernier = nbreValeurs - 1;
199
				if (nbreValeurs > 0)	{
199
				if (nbreValeurs > 0)	{
200
					for (int i = 0; i < nbreValeurs; i++)	{
200
					for (int i = 0; i < nbreValeurs; i++)	{
201
						String valeur = valeurs[i];
201
						String valeur = valeurs[i];
202
						
202
						
203
						if (valeur.matches("^[0-9]+$"))	{
203
						if (valeur.matches("^[0-9]+$"))	{
204
							if (valeur.equals("0")) {
204
							if (valeur.equals("0")) {
205
								valeur = "";
205
								valeur = "";
206
							} else if (ontologie != null) {
206
							} else if (ontologie != null) {
207
								Valeur valeurOntologie = ontologie.get(valeur);
207
								Valeur valeurOntologie = ontologie.get(valeur);
208
								if (valeurOntologie != null) {
208
								if (valeurOntologie != null) {
209
									valeur = valeurOntologie.getNom();
209
									valeur = valeurOntologie.getNom();
210
								}
210
								}
211
							}
211
							}
212
						}
212
						}
213
						if (i != indexAvtDernier) {
213
						if (i != indexAvtDernier) {
214
							type += valeur+", ";
214
							type += valeur+", ";
215
						} else {
215
						} else {
216
							type += valeur;
216
							type += valeur;
217
						}
217
						}
218
					}
218
					}
219
				}
219
				}
220
				
220
				
221
				model.set("_type_", type);
221
				model.set("_type_", type);
222
				return type;
222
				return type;
223
			}
223
			}
224
		};
224
		};
225
		ColumnConfig typeColonne = new ColumnConfig("_type_", i18nC.commentaireType(), 100);
225
		ColumnConfig typeColonne = new ColumnConfig("_type_", i18nC.commentaireType(), 100);
226
		typeColonne.setRenderer(typeRendu);
226
		typeColonne.setRenderer(typeRendu);
227
		return typeColonne;
227
		return typeColonne;
228
	}
228
	}
229
	
229
	
230
	private ColumnConfig creerColonneAcces() {
230
	private ColumnConfig creerColonneAcces() {
231
		GridCellRenderer<Commentaire> accesRendu = new GridCellRenderer<Commentaire>() {
231
		GridCellRenderer<Commentaire> accesRendu = new GridCellRenderer<Commentaire>() {
232
			public String render(Commentaire model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<Commentaire> store, Grid<Commentaire> grid) {
232
			public String render(Commentaire model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<Commentaire> store, Grid<Commentaire> grid) {
233
				String acces = (model.etrePublic() ? i18nC.donneePublic() : i18nC.donneePrivee());
233
				String acces = (model.etrePublic() ? i18nC.donneePublic() : i18nC.donneePrivee());
234
				model.set("_public_", acces);
234
				model.set("_public_", acces);
235
				return acces;
235
				return acces;
236
			}
236
			}
237
		};
237
		};
238
		ColumnConfig accesColonne = new ColumnConfig("_public_", i18nC.commentairePublic(), 30);
238
		ColumnConfig accesColonne = new ColumnConfig("_public_", i18nC.commentairePublic(), 30);
239
		accesColonne.setRenderer(accesRendu);
239
		accesColonne.setRenderer(accesRendu);
240
		return accesColonne;
240
		return accesColonne;
241
	}
241
	}
242
	
242
	
243
	private void clicListe(Commentaire commentaire) {
243
	private void clicListe(Commentaire commentaire) {
244
		if (commentaire != null && store.getCount() > 0) {
244
		if (commentaire != null && store.getCount() > 0) {
245
			mediateur.clicListeCommentaire(commentaire);
245
			mediateur.clicListeCommentaire(commentaire);
246
		}
246
		}
247
	}
247
	}
248
 
248
 
249
	private void gererEtatActivationBouton() {
249
	private void gererEtatActivationBouton() {
250
		int nbreElementDuMagazin = store.getCount();
250
		int nbreElementDuMagazin = store.getCount();
251
		ajouter.enable();
251
		ajouter.enable();
252
		if (nbreElementDuMagazin <= 0) {
252
		if (nbreElementDuMagazin <= 0) {
253
			supprimer.disable();
253
			supprimer.disable();
254
			modifier.disable();
254
			modifier.disable();
255
		} else if (nbreElementDuMagazin > 0) {
255
		} else if (nbreElementDuMagazin > 0) {
256
			modifier.enable();
256
			modifier.enable();
257
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
257
			if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
258
				supprimer.enable();
258
				supprimer.enable();
259
			}
259
			}
260
		}
260
		}
261
	}
261
	}
262
	
262
	
263
	public void rafraichir(Object nouvellesDonnees) {
263
	public void rafraichir(Object nouvellesDonnees) {
264
		if (nouvellesDonnees instanceof CommentaireListe) {
264
		if (nouvellesDonnees instanceof CommentaireListe) {
265
			commentaires = (CommentaireListe) nouvellesDonnees;
265
			commentaires = (CommentaireListe) nouvellesDonnees;
266
			
266
			
267
			champFiltreRecherche.setListePaginable(commentaires);
267
			champFiltreRecherche.setListePaginable(commentaires);
268
			
268
			
269
			pagination.setlistePaginable(commentaires);
269
			pagination.setlistePaginable(commentaires);
270
			pagination.rafraichir(commentaires.getPageTable());
270
			pagination.rafraichir(commentaires.getPageTable());
271
			
271
			
272
			commentairesChargementOk = true;
272
			commentairesChargementOk = true;
273
		} else if (nouvellesDonnees instanceof ValeurListe) {
273
		} else if (nouvellesDonnees instanceof ValeurListe) {
274
			ValeurListe listeValeursReceptionnee = (ValeurListe) nouvellesDonnees;
274
			ValeurListe listeValeursReceptionnee = (ValeurListe) nouvellesDonnees;
275
			Iterator<String> it = listeValeursReceptionnee.keySet().iterator();
275
			Iterator<String> it = listeValeursReceptionnee.keySet().iterator();
276
			while (it.hasNext()) {
276
			while (it.hasNext()) {
277
				String cle = it.next();
277
				String cle = it.next();
278
				Valeur valeur = listeValeursReceptionnee.get(cle);
278
				Valeur valeur = listeValeursReceptionnee.get(cle);
279
				if (valeur != null) {
279
				if (valeur != null) {
280
					ontologie.put(cle, valeur);
280
					ontologie.put(cle, valeur);
281
				}
281
				}
282
			}
282
			}
283
			ontologieChargementOk = true;
283
			ontologieChargementOk = true;
284
		} else if (nouvellesDonnees instanceof Information) {
284
		} else if (nouvellesDonnees instanceof Information) {
285
			Information info = (Information) nouvellesDonnees;
285
			Information info = (Information) nouvellesDonnees;
286
			if (info.getType().equals("maj_utilisateur")) {
286
			if (info.getType().equals("maj_utilisateur")) {
287
				gererEtatActivationBouton();
287
				gererEtatActivationBouton();
288
			} else if (info.getType().equals("suppression_commentaire")) {
288
			} else if (info.getType().equals("suppression_commentaire")) {
289
				String message = info.toString();
289
				String message = info.toString();
290
				if (info.getDonnee(0) != null) {
290
				if (info.getDonnee(0) != null) {
291
					message = (String) info.getDonnee(0);
291
					message = (String) info.getDonnee(0);
292
				}
292
				}
293
				InfoLogger.display(i18nC.commentaireTitreSuppression(), message);
293
				InfoLogger.display(i18nC.commentaireTitreSuppression(), message);
294
				supprimerCommentairesSelectionnees();
294
				supprimerCommentairesSelectionnees();
295
				gererEtatActivationBouton();
295
				gererEtatActivationBouton();
296
			} else if (info.getType().equals("commentaire_modifiee")) {
296
			} else if (info.getType().equals("commentaire_modifiee")) {
297
				// GXT c'est pourri et la grille ne prend en compte les modifications
297
				// GXT c'est pourri et la grille ne prend en compte les modifications
298
				// du store, donc en attendant, on recharge tout, comme pour la suppression
298
				// du store, donc en attendant, on recharge tout, comme pour la suppression
299
				/*Commentaire commModifie = (Commentaire)info.getDonnee(0);
299
				/*Commentaire commModifie = (Commentaire)info.getDonnee(0);
300
				store.remove(indexElementSelectionne);
300
				store.remove(indexElementSelectionne);
301
				store.insert(commModifie, indexElementSelectionne);
301
				store.insert(commModifie, indexElementSelectionne);
302
				grille.reconfigure(store, modeleDesColonnes);
302
				grille.reconfigure(store, modeleDesColonnes);
303
				grille.repaint();*/
303
				grille.repaint();*/
304
				mediateur.clicMenu(MenuApplicationId.COMMENTAIRE);
304
				mediateur.clicMenu(MenuApplicationId.COMMENTAIRE);
305
			}
305
			}
306
		} else {
306
		} else {
307
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
307
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
308
		}
308
		}
309
		
309
		
310
		if (etrePretAAfficherListe()) {
310
		if (etrePretAAfficherListe()) {
311
			chargerListe();
311
			chargerListe();
312
		}
312
		}
313
		layout();
313
		layout();
314
	}
314
	}
315
	
315
	
316
	private boolean etrePretAAfficherListe() {
316
	private boolean etrePretAAfficherListe() {
317
		boolean ok = false;
317
		boolean ok = false;
318
		if (commentairesChargementOk && ontologieChargementOk) {
318
		if (commentairesChargementOk && ontologieChargementOk) {
319
			ok = true;
319
			ok = true;
320
		}
320
		}
321
		return ok;
321
		return ok;
322
	}
322
	}
323
	
323
	
324
	private void chargerListe() {
324
	private void chargerListe() {
325
		if (commentaires != null) {
325
		if (commentaires != null) {
326
			List<Commentaire> liste = commentaires.toList();
326
			List<Commentaire> liste = commentaires.toList();
327
			
327
			
328
			store.removeAll();
328
			store.removeAll();
329
			store.add(liste);
329
			store.add(liste);
330
			
330
			
331
			mediateur.actualiserPanneauCentral();
331
			mediateur.actualiserPanneauCentral();
332
		}
332
		}
333
	}
333
	}
334
	
334
	
335
	private void supprimerCommentairesSelectionnees() {
335
	private void supprimerCommentairesSelectionnees() {
336
		// FIXME : le code ci-dessous ne marche pas avec la GroupingView, nous utilisons le rechargement du menu à la place
336
		// FIXME : le code ci-dessous ne marche pas avec la GroupingView, nous utilisons le rechargement du menu à la place
337
		/*
337
		/*
338
		List<Commentaire> commentairesSelectionnees = grille.getSelectionModel().getSelectedItems();
338
		List<Commentaire> commentairesSelectionnees = grille.getSelectionModel().getSelectedItems();
339
		Iterator<Commentaire> it = commentairesSelectionnees.iterator();
339
		Iterator<Commentaire> it = commentairesSelectionnees.iterator();
340
		while (it.hasNext()) {
340
		while (it.hasNext()) {
341
			Commentaire commentaireASupprimer = it.next();
341
			Commentaire commentaireASupprimer = it.next();
342
			Debug.log(commentaireASupprimer.getId());
342
			Debug.log(commentaireASupprimer.getId());
343
			grille.getStore().remove(commentaireASupprimer);
343
			grille.getStore().remove(commentaireASupprimer);
344
		}
344
		}
345
		layout(true);
345
		layout(true);
346
		*/
346
		*/
347
		mediateur.clicMenu(MenuApplicationId.COMMENTAIRE);
347
		mediateur.clicMenu(MenuApplicationId.COMMENTAIRE);
348
	}
348
	}
349
}
-
 
350
349
}
-
 
350