Subversion Repositories eFlore/Applications.coel

Rev

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

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