Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1136 Rev 1218
1
package org.tela_botanica.client.composants;
1
package org.tela_botanica.client.composants;
2
 
2
 
3
import org.tela_botanica.client.ComposantId;
3
import org.tela_botanica.client.ComposantId;
4
import org.tela_botanica.client.Mediateur;
4
import org.tela_botanica.client.Mediateur;
5
import org.tela_botanica.client.RegistreId;
5
import org.tela_botanica.client.RegistreId;
6
import org.tela_botanica.client.configuration.Configuration;
6
import org.tela_botanica.client.configuration.Configuration;
7
import org.tela_botanica.client.images.Images;
7
import org.tela_botanica.client.images.Images;
8
import org.tela_botanica.client.modeles.Information;
8
import org.tela_botanica.client.modeles.Information;
9
import org.tela_botanica.client.modeles.Menu;
9
import org.tela_botanica.client.modeles.Menu;
10
import org.tela_botanica.client.util.Pattern;
10
import org.tela_botanica.client.util.Pattern;
11
import org.tela_botanica.client.util.Print;
11
import org.tela_botanica.client.util.Print;
12
 
12
 
13
import com.extjs.gxt.ui.client.event.Events;
13
import com.extjs.gxt.ui.client.event.Events;
14
import com.extjs.gxt.ui.client.Registry;
14
import com.extjs.gxt.ui.client.Registry;
15
import com.extjs.gxt.ui.client.Style.ButtonScale;
15
import com.extjs.gxt.ui.client.Style.ButtonScale;
16
import com.extjs.gxt.ui.client.Style.LayoutRegion;
16
import com.extjs.gxt.ui.client.Style.LayoutRegion;
17
import com.extjs.gxt.ui.client.Style.Scroll;
17
import com.extjs.gxt.ui.client.Style.Scroll;
18
import com.extjs.gxt.ui.client.event.ButtonEvent;
18
import com.extjs.gxt.ui.client.event.ButtonEvent;
19
import com.extjs.gxt.ui.client.event.Listener;
19
import com.extjs.gxt.ui.client.event.Listener;
20
import com.extjs.gxt.ui.client.event.SelectionListener;
20
import com.extjs.gxt.ui.client.event.SelectionListener;
21
import com.extjs.gxt.ui.client.event.TreePanelEvent;
21
import com.extjs.gxt.ui.client.event.TreePanelEvent;
22
import com.extjs.gxt.ui.client.store.Store;
22
import com.extjs.gxt.ui.client.store.Store;
23
import com.extjs.gxt.ui.client.store.TreeStore;
23
import com.extjs.gxt.ui.client.store.TreeStore;
24
import com.extjs.gxt.ui.client.util.Margins;
24
import com.extjs.gxt.ui.client.util.Margins;
25
import com.extjs.gxt.ui.client.widget.ContentPanel;
25
import com.extjs.gxt.ui.client.widget.ContentPanel;
26
import com.extjs.gxt.ui.client.widget.Dialog;
26
import com.extjs.gxt.ui.client.widget.Dialog;
27
import com.extjs.gxt.ui.client.widget.HtmlContainer;
27
import com.extjs.gxt.ui.client.widget.HtmlContainer;
28
import com.extjs.gxt.ui.client.widget.Info;
28
import com.extjs.gxt.ui.client.widget.Info;
29
import com.extjs.gxt.ui.client.widget.LayoutContainer;
29
import com.extjs.gxt.ui.client.widget.LayoutContainer;
30
import com.extjs.gxt.ui.client.widget.form.StoreFilterField;
30
import com.extjs.gxt.ui.client.widget.form.StoreFilterField;
31
import com.extjs.gxt.ui.client.widget.button.Button;
31
import com.extjs.gxt.ui.client.widget.button.Button;
32
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
32
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
33
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
33
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
34
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
34
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
35
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
35
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
36
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
36
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
37
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
37
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
38
import com.google.gwt.core.client.GWT;
38
import com.google.gwt.core.client.GWT;
39
import com.google.gwt.http.client.Request;
39
import com.google.gwt.http.client.Request;
40
import com.google.gwt.http.client.RequestBuilder;
40
import com.google.gwt.http.client.RequestBuilder;
41
import com.google.gwt.http.client.RequestCallback;
41
import com.google.gwt.http.client.RequestCallback;
42
import com.google.gwt.http.client.RequestException;
42
import com.google.gwt.http.client.RequestException;
43
import com.google.gwt.http.client.Response;
43
import com.google.gwt.http.client.Response;
44
import com.google.gwt.json.client.JSONArray;
44
import com.google.gwt.json.client.JSONArray;
45
import com.google.gwt.json.client.JSONObject;
45
import com.google.gwt.json.client.JSONObject;
46
import com.google.gwt.json.client.JSONParser;
46
import com.google.gwt.json.client.JSONParser;
47
import com.google.gwt.json.client.JSONValue;
47
import com.google.gwt.json.client.JSONValue;
48
import com.google.gwt.user.client.Event;
48
import com.google.gwt.user.client.Event;
49
 
49
 
50
public class AideFenetre extends Dialog {
50
public class AideFenetre extends Dialog {
51
 
51
 
52
	private static final String SERVICE_NOM = "CoelAide";
52
	private static final String SERVICE_NOM = "CoelAide";
53
	private static final String PAGE_SOMMAIRE_CODE = "AideCOELSommaire";
53
	private static final String PAGE_SOMMAIRE_CODE = "AideCOELSommaire";
54
	private static final String PAGE_A_OUVRIR_CODE = "AideCOELPresentationGenerale";
54
	private static final String PAGE_A_OUVRIR_CODE = "AideCOELPresentationGenerale";
55
	private static Menu pagePrincipale = null;
55
	private static Menu pagePrincipale = null;
56
	private static Menu menuAOuvrirParDefaut = null;
56
	private static Menu menuAOuvrirParDefaut = null;
57
	private TreePanel<Menu> arbre = null; 
57
	private TreePanel<Menu> arbre = null; 
58
	private TreeStore<Menu> magazin = null;
58
	private TreeStore<Menu> magazin = null;
59
	private StoreFilterField<Menu> filtre = null;
59
	private StoreFilterField<Menu> filtre = null;
60
	private Menu sommaire = null;
60
	private Menu sommaire = null;
61
	private ContentPanel sommairePanneau = null;
61
	private ContentPanel sommairePanneau = null;
62
	private ContentPanel contenuPanneau = null;
62
	private ContentPanel contenuPanneau = null;
63
	private HtmlContainer conteneurDuHtml;
63
	private HtmlContainer conteneurDuHtml;
64
	private LayoutContainer entetePanneau;
64
	private LayoutContainer entetePanneau;
65
	private ToolBar sommaireBarreOutils;
65
	private ToolBar sommaireBarreOutils;
66
		
66
		
67
	public AideFenetre() {
67
	public AideFenetre() {
68
		setBodyBorder(false);  
68
		setBodyBorder(false);  
69
		setButtons(Dialog.OK);
69
		setButtons(Dialog.OK);
70
		setIcon(Images.ICONES.appPanneauListe());
70
		setIcon(Images.ICONES.appPanneauListe());
71
		setHeading("COEL - Aide");  
71
		setHeading("COEL - Aide");  
72
		setWidth(675);
72
		setWidth(675);
73
		setHeight(400);
73
		setHeight(400);
74
		setHideOnButtonClick(true);  
74
		setHideOnButtonClick(true);  
75
		setLayout(new BorderLayout());
75
		setLayout(new BorderLayout());
76
		
76
		
77
		creerPanneauEntete();
77
		creerPanneauEntete();
78
		creerPanneauSommaire();
78
		creerPanneauSommaire();
79
		getSommaireArbreModele();
79
		getSommaireArbreModele();
80
		creerPanneauContenu();
80
		creerPanneauContenu();
81
	}
81
	}
82
 
82
 
83
	private void creerPanneauEntete() {
83
	private void creerPanneauEntete() {
84
		entetePanneau = new LayoutContainer();
84
		entetePanneau = new LayoutContainer();
85
		entetePanneau.setLayout(new FlowLayout());
85
		entetePanneau.setLayout(new FlowLayout());
86
		BorderLayoutData enteteDisposition = new BorderLayoutData(LayoutRegion.NORTH, 30);
86
		BorderLayoutData enteteDisposition = new BorderLayoutData(LayoutRegion.NORTH, 30);
87
		add(entetePanneau, enteteDisposition);
87
		add(entetePanneau, enteteDisposition);
88
	}
88
	}
89
 
89
 
90
	private void creerPanneauSommaire() {
90
	private void creerPanneauSommaire() {
91
		inititialiserSommaireArbreFiltre();
91
		inititialiserSommaireArbreFiltre();
92
		creerSommaire();
92
		creerSommaire();
93
		
93
		
94
		sommairePanneau = new ContentPanel();
94
		sommairePanneau = new ContentPanel();
95
		sommairePanneau.setScrollMode(Scroll.AUTO);
95
		sommairePanneau.setScrollMode(Scroll.AUTO);
96
		sommairePanneau.setHeight("100%");
96
		sommairePanneau.setHeight("100%");
97
		sommairePanneau.setHeaderVisible(false);
97
		sommairePanneau.setHeaderVisible(false);
98
		
98
		
99
		creerBarreOutilSommaire();
99
		creerBarreOutilSommaire();
100
		
100
		
101
		BorderLayoutData sommaireDisposition = new BorderLayoutData(LayoutRegion.WEST, 230, 175, 350);  
101
		BorderLayoutData sommaireDisposition = new BorderLayoutData(LayoutRegion.WEST, 230, 175, 350);  
102
		sommaireDisposition.setMargins(new Margins(0, 5, 0, 0));  
102
		sommaireDisposition.setMargins(new Margins(0, 5, 0, 0));  
103
		sommaireDisposition.setSplit(true);  
103
		sommaireDisposition.setSplit(true);  
104
		sommaireDisposition.setFloatable(true);
104
		sommaireDisposition.setFloatable(true);
105
		add(sommairePanneau, sommaireDisposition);
105
		add(sommairePanneau, sommaireDisposition);
106
	}
106
	}
107
 
107
 
108
	private void creerBarreOutilSommaire() {
108
	private void creerBarreOutilSommaire() {
109
		sommaireBarreOutils = new ToolBar();
109
		sommaireBarreOutils = new ToolBar();
110
		// FIXME : on peut utiliser l'alignement à droite car cela pose un problème de rendu dans le Hosted Mode
110
		// FIXME : on peut utiliser l'alignement à droite car cela pose un problème de rendu dans le Hosted Mode
111
		//sommaireBarreOutils.setAlignment(HorizontalAlignment.RIGHT);
111
		//sommaireBarreOutils.setAlignment(HorizontalAlignment.RIGHT);
112
		creerBoutonPlierDeplier();
112
		creerBoutonPlierDeplier();
113
		sommairePanneau.setTopComponent(sommaireBarreOutils);
113
		sommairePanneau.setTopComponent(sommaireBarreOutils);
114
	}
114
	}
115
 
115
 
116
	private void creerBoutonPlierDeplier() {
116
	private void creerBoutonPlierDeplier() {
117
		Button plierDeplierToutBtn = new Button();
117
		Button plierDeplierToutBtn = new Button();
118
		plierDeplierToutBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {  
118
		plierDeplierToutBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {  
119
			public void componentSelected(ButtonEvent be) {  
119
			public void componentSelected(ButtonEvent be) {  
120
				Button boutonPlierDeplierTout = (Button) be.getSource();
120
				Button boutonPlierDeplierTout = (Button) be.getSource();
121
				if (boutonPlierDeplierTout.getIcon().equals(Images.ICONES.deplierTout())) {
121
				if (boutonPlierDeplierTout.getIcon().equals(Images.ICONES.deplierTout())) {
122
					boutonPlierDeplierTout.setIcon(Images.ICONES.replierTout());
122
					boutonPlierDeplierTout.setIcon(Images.ICONES.replierTout());
123
					arbre.expandAll();
123
					arbre.expandAll();
124
				} else if (boutonPlierDeplierTout.getIcon().equals(Images.ICONES.replierTout())) {
124
				} else if (boutonPlierDeplierTout.getIcon().equals(Images.ICONES.replierTout())) {
125
					boutonPlierDeplierTout.setIcon(Images.ICONES.deplierTout());
125
					boutonPlierDeplierTout.setIcon(Images.ICONES.deplierTout());
126
					arbre.collapseAll();
126
					arbre.collapseAll();
127
				}
127
				}
128
				boutonPlierDeplierTout.repaint();
128
				boutonPlierDeplierTout.repaint();
129
			}
129
			}
130
		});
130
		});
131
		plierDeplierToutBtn.setIcon(Images.ICONES.deplierTout());
131
		plierDeplierToutBtn.setIcon(Images.ICONES.deplierTout());
132
		plierDeplierToutBtn.setScale(ButtonScale.SMALL);
132
		plierDeplierToutBtn.setScale(ButtonScale.SMALL);
133
		plierDeplierToutBtn.setToolTip(Mediateur.i18nC.plierDeplierToutBtn());
133
		plierDeplierToutBtn.setToolTip(Mediateur.i18nC.plierDeplierToutBtn());
134
		sommaireBarreOutils.add(plierDeplierToutBtn);
134
		sommaireBarreOutils.add(plierDeplierToutBtn);
135
	}
135
	}
136
 
136
 
137
	private void creerPanneauContenu() {
137
	private void creerPanneauContenu() {
138
		contenuPanneau = new ContentPanel();
138
		contenuPanneau = new ContentPanel();
139
		contenuPanneau.setScrollMode(Scroll.AUTO);
139
		contenuPanneau.setScrollMode(Scroll.AUTO);
140
		
140
		
141
		creerBarreOutilContenu();
141
		creerBarreOutilContenu();
142
		
142
		
143
		BorderLayoutData contenuDisposition = new BorderLayoutData(LayoutRegion.CENTER);  
143
		BorderLayoutData contenuDisposition = new BorderLayoutData(LayoutRegion.CENTER);  
144
		add(contenuPanneau, contenuDisposition);
144
		add(contenuPanneau, contenuDisposition);
145
	}
145
	}
146
	
146
	
147
	private void creerBarreOutilContenu() {
147
	private void creerBarreOutilContenu() {
148
		Button imprimerBtn = new Button(null, new SelectionListener<ButtonEvent>() {  
148
		Button imprimerBtn = new Button(null, new SelectionListener<ButtonEvent>() {  
149
			public void componentSelected(ButtonEvent be) {  
149
			public void componentSelected(ButtonEvent be) {  
150
				Print.it(conteneurDuHtml.el().getInnerHtml());
150
				Print.it(conteneurDuHtml.el().getInnerHtml());
151
			}
151
			}
152
		});
152
		});
153
		imprimerBtn.setIcon(Images.ICONES.imprimer());
153
		imprimerBtn.setIcon(Images.ICONES.imprimer());
154
		contenuPanneau.getHeader().insertTool(imprimerBtn, 0);
154
		contenuPanneau.getHeader().insertTool(imprimerBtn, 0);
155
	}
155
	}
156
 
156
 
157
	private void etendreArbre(Menu menuAOuvrir) {
157
	private void etendreArbre(Menu menuAOuvrir) {
158
		if (menuAOuvrir != null) {
158
		if (menuAOuvrir != null) {
159
			arbre.setExpanded(menuAOuvrir, true);
159
			arbre.setExpanded(menuAOuvrir, true);
160
			arbre.getSelectionModel().select(menuAOuvrir, false);
160
			arbre.getSelectionModel().select(menuAOuvrir, false);
161
		}
161
		}
162
	}
162
	}
163
	
163
	
164
	private void etendreArbre(String menuCode) {
164
	private void etendreArbre(String menuCode) {
165
		Menu menuAOuvrir = magazin.findModel("code", menuCode);
165
		Menu menuAOuvrir = magazin.findModel("code", menuCode);
166
		etendreArbre(menuAOuvrir);
166
		etendreArbre(menuAOuvrir);
167
	}
167
	}
168
 
168
 
169
	private void creerSommaire() {
169
	private void creerSommaire() {
170
		magazin = new TreeStore<Menu>();
170
		magazin = new TreeStore<Menu>();
171
		
171
		
172
		filtre.bind(magazin);
172
		filtre.bind(magazin);
173
		
173
		
174
		arbre = new TreePanel<Menu>(magazin);
174
		arbre = new TreePanel<Menu>(magazin);
175
		arbre.setAutoLoad(true);
175
		arbre.setAutoLoad(true);
176
		arbre.setHeight("100%");
176
		arbre.setHeight("100%");
177
		arbre.setDisplayProperty("nom");
177
		arbre.setDisplayProperty("nom");
178
		arbre.getStyle().setLeafIcon(Images.ICONES.aide());
178
		arbre.getStyle().setLeafIcon(Images.ICONES.aide());
179
		arbre.addListener(Events.OnClick, new Listener<TreePanelEvent<Menu>>(){
179
		arbre.addListener(Events.OnClick, new Listener<TreePanelEvent<Menu>>(){
180
			public void handleEvent(TreePanelEvent<Menu> tpe) {
180
			public void handleEvent(TreePanelEvent<Menu> tpe) {
181
				Menu menuSelectionne = arbre.getSelectionModel().getSelectedItem();
181
				Menu menuSelectionne = arbre.getSelectionModel().getSelectedItem();
182
				if (menuSelectionne.get("code") != null) {
182
				if (menuSelectionne.get("code") != null) {
183
					selectionSommaire((String) menuSelectionne.get("code"));
183
					selectionSommaire((String) menuSelectionne.get("code"));
184
				}
184
				}
185
			}
185
			}
186
		});		
186
		});		
187
	}
187
	}
188
	
188
	
189
	private void definirMenuAOuvrirParDefaut() {
189
	private void definirMenuAOuvrirParDefaut() {
190
		menuAOuvrirParDefaut = magazin.findModel("code", PAGE_A_OUVRIR_CODE);
190
		menuAOuvrirParDefaut = magazin.findModel("code", PAGE_A_OUVRIR_CODE);
191
	}
191
	}
192
 
192
 
193
	private void selectionSommaire(String page) {
193
	private void selectionSommaire(String page) {
194
		String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
194
		String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
195
		String aidePageUrl = serviceUrl+SERVICE_NOM+"/"+page;
195
		String aidePageUrl = serviceUrl+SERVICE_NOM+"/"+page;
196
		chargerPageAide(aidePageUrl);
196
		chargerPageAide(aidePageUrl);
197
	}
197
	}
198
	
198
	
199
	private void chargerPageAide(String url) {
199
	private void chargerPageAide(String url) {
200
		conteneurDuHtml = new HtmlContainer() {
200
		conteneurDuHtml = new HtmlContainer() {
201
			public void onBrowserEvent(Event e) {
201
			public void onBrowserEvent(Event e) {
202
				// Nous vérifions que l'évenement est un clic et qu'il a lieu sur un lien
202
				// Nous vérifions que l'évenement est un clic et qu'il a lieu sur un lien
203
				if (e.getTypeInt() == Event.ONCLICK && e.getEventTarget().toString().startsWith("http://")) {
203
				if (e.getTypeInt() == Event.ONCLICK && e.getEventTarget().toString().startsWith("http://")) {
204
					e.preventDefault();
204
					e.preventDefault();
205
					String urlPageAideCible = e.getEventTarget().toString();
205
					String urlPageAideCible = e.getEventTarget().toString();
206
					chargerPageAide(urlPageAideCible);
206
					chargerPageAide(urlPageAideCible);
207
					String codePageAideCible = urlPageAideCible.substring(urlPageAideCible.lastIndexOf("/")+1);
207
					String codePageAideCible = urlPageAideCible.substring(urlPageAideCible.lastIndexOf("/")+1);
208
					etendreArbre(codePageAideCible);
208
					etendreArbre(codePageAideCible);
209
				} else {
209
				} else {
210
					GWT.log("Event target:"+e.getEventTarget().toString()+" - type :"+e.getTypeInt()+"="+Event.ONCLICK, null);
210
					GWT.log("Event target:"+e.getEventTarget().toString()+" - type :"+e.getTypeInt()+"="+Event.ONCLICK, null);
211
				}
211
				}
212
			}
212
			}
213
		};
213
		};
214
		
214
		
215
		conteneurDuHtml.setId(ComposantId.PANNEAU_AIDE);
215
		conteneurDuHtml.setId(ComposantId.PANNEAU_AIDE);
216
		conteneurDuHtml.setWidth(400);
216
		conteneurDuHtml.setWidth(400);
217
		conteneurDuHtml.sinkEvents(Event.ONCLICK);
217
		conteneurDuHtml.sinkEvents(Event.ONCLICK);
218
		conteneurDuHtml.setUrl(url);
218
		conteneurDuHtml.setUrl(url);
219
		conteneurDuHtml.recalculate();
219
		conteneurDuHtml.recalculate();
220
		
220
		
221
		contenuPanneau.removeAll();
221
		contenuPanneau.removeAll();
222
		contenuPanneau.add(conteneurDuHtml);
222
		contenuPanneau.add(conteneurDuHtml);
223
		contenuPanneau.layout();
223
		contenuPanneau.layout();
224
	}
224
	}
225
	
225
	
226
	private void inititialiserSommaireArbreFiltre() {
226
	private void inititialiserSommaireArbreFiltre() {
227
		filtre = new StoreFilterField<Menu>() {  
227
		filtre = new StoreFilterField<Menu>() {  
228
			@Override
228
			@Override
229
			protected boolean doSelect(Store<Menu> magazin, Menu parent, Menu enregistrement, String propriete, String filtre) {  
229
			protected boolean doSelect(Store<Menu> magazin, Menu parent, Menu enregistrement, String propriete, String filtre) {  
230
				Boolean retour = false;
230
				Boolean retour = false;
231
				// Seul les feuilles sont traitées par le filtre
231
				// Seul les feuilles sont traitées par le filtre
232
				String nomMenu = enregistrement.getNom();
232
				String nomMenu = enregistrement.getNom();
233
				String nomMenuMinuscule = nomMenu.toLowerCase();
233
				String nomMenuMinuscule = nomMenu.toLowerCase();
234
				String nomFiltreMinuscule = filtre.toLowerCase();
234
				String nomFiltreMinuscule = filtre.toLowerCase();
235
				String nomFiltreMinusculeProtege = Pattern.quote(nomFiltreMinuscule);
235
				String nomFiltreMinusculeProtege = Pattern.quote(nomFiltreMinuscule);
236
				if (nomMenuMinuscule.matches(".*"+nomFiltreMinusculeProtege+".*")) {  
236
				if (nomMenuMinuscule.matches(".*"+nomFiltreMinusculeProtege+".*")) {  
237
					retour = true;  
237
					retour = true;  
238
				}
238
				}
239
				return retour;
239
				return retour;
240
			}
240
			}
241
		};
241
		};
242
		filtre.setFieldLabel(Mediateur.i18nC.chercher());
242
		filtre.setFieldLabel(Mediateur.i18nC.chercher());
243
		filtre.setLabelStyle("font-weight:normal;");
243
		filtre.setLabelStyle("font-weight:normal;");
244
		filtre.setToolTip("Filtrer le sommaire");
244
		filtre.setToolTip("Filtrer le sommaire");
245
		filtre.setWidth(200);
245
		filtre.setWidth(200);
246
		
246
		
247
		FormLayout fl = new FormLayout();
247
		FormLayout fl = new FormLayout();
248
		fl.setLabelWidth(55);
248
		fl.setLabelWidth(55);
249
		
249
		
250
		ContentPanel fp = new ContentPanel();
250
		ContentPanel fp = new ContentPanel();
251
		fp.setHeaderVisible(false);
251
		fp.setHeaderVisible(false);
252
		fp.setLayout(fl);
252
		fp.setLayout(fl);
253
		fp.add(filtre);
253
		fp.add(filtre);
254
		entetePanneau.add(fp);
254
		entetePanneau.add(fp);
255
	}
255
	}
256
	
256
	
257
	public void getSommaireArbreModele() {
257
	public void getSommaireArbreModele() {
258
		String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
258
		String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
259
		String sommairePageUrl = serviceUrl+SERVICE_NOM+"/"+PAGE_SOMMAIRE_CODE+"/sommaire";
259
		String sommairePageUrl = serviceUrl+SERVICE_NOM+"/"+PAGE_SOMMAIRE_CODE+"/sommaire";
260
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, sommairePageUrl);
260
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, sommairePageUrl);
261
		try {
261
		try {
262
			rb.sendRequest(null, new RequestCallback() {
262
			rb.sendRequest(null, new RequestCallback() {
263
	
263
	
264
				public void onError(Request request, Throwable exception) {
264
				public void onError(Request request, Throwable exception) {
265
					// Gestion des exceptions déclenchées par l'exécution de la requête 
265
					// Gestion des exceptions déclenchées par l'exécution de la requête 
266
					GWT.log(Mediateur.i18nM.erreurServiceJrest(SERVICE_NOM), exception);
266
					GWT.log(Mediateur.i18nM.erreurServiceJrest(SERVICE_NOM), exception);
267
					Info.display(Mediateur.i18nM.erreurRequeteTitre(), Mediateur.i18nM.erreurRequete());
267
					InfoLogger.display(Mediateur.i18nM.erreurRequeteTitre(), Mediateur.i18nM.erreurRequete(), true);
268
				}
268
				}
269
				
269
				
270
				public void onErrorHTTP(Request request, Response reponse) {
270
				public void onErrorHTTP(Request request, Response reponse) {
271
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
271
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
272
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
272
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
273
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
273
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
274
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
274
					InfoLogger.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString(), true);
275
				}
275
				}
276
				
276
				
277
				public void onResponseReceived(Request request, Response response) {
277
				public void onResponseReceived(Request request, Response response) {
278
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
278
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
279
					if (response.getStatusCode() != 200) {
279
					if (response.getStatusCode() != 200) {
280
						onErrorHTTP(request, response);
280
						onErrorHTTP(request, response);
281
					} else {
281
					} else {
282
						if (response.getText().length() != 0 && response.getText() != null) {
282
						if (response.getText().length() != 0 && response.getText() != null) {
283
							final JSONValue responseValue = JSONParser.parse(response.getText());
283
							final JSONValue responseValue = JSONParser.parse(response.getText());
284
							JSONArray jsonArray = responseValue.isArray();
284
							JSONArray jsonArray = responseValue.isArray();
285
							
285
							
286
							if (jsonArray != null) {
286
							if (jsonArray != null) {
287
								sommaire = new Menu(Mediateur.i18nC.sommaire());
287
								sommaire = new Menu(Mediateur.i18nC.sommaire());
288
								ajouterMenuRecursivement(sommaire, jsonArray);
288
								ajouterMenuRecursivement(sommaire, jsonArray);
289
 
289
 
290
								magazin.removeAll();
290
								magazin.removeAll();
291
								magazin.add(sommaire, true);
291
								magazin.add(sommaire, true);
292
								
292
								
293
								definirMenuAOuvrirParDefaut();
293
								definirMenuAOuvrirParDefaut();
294
								
294
								
295
								sommairePanneau.add(arbre);
295
								sommairePanneau.add(arbre);
296
								sommairePanneau.layout();
296
								sommairePanneau.layout();
297
								
297
								
298
								// Chargement de la page racine
298
								// Chargement de la page racine
299
								selectionSommaire(pagePrincipale.getCode());
299
								selectionSommaire(pagePrincipale.getCode());
300
								etendreArbre(menuAOuvrirParDefaut);
300
								etendreArbre(menuAOuvrirParDefaut);
301
							} else {
301
							} else {
302
								GWT.log(Mediateur.i18nM.erreurJson(responseValue.toString()), null);
302
								GWT.log(Mediateur.i18nM.erreurJson(responseValue.toString()), null);
303
							}
303
							}
304
						}
304
						}
305
					}
305
					}
306
				}
306
				}
307
			});
307
			});
308
		} catch (RequestException e) {
308
		} catch (RequestException e) {
309
			e.printStackTrace();
309
			e.printStackTrace();
310
		}
310
		}
311
	}
311
	}
312
	
312
	
313
	private void ajouterMenuRecursivement(Menu brancheSommaire, JSONArray tableau) {
313
	private void ajouterMenuRecursivement(Menu brancheSommaire, JSONArray tableau) {
314
		final int tailleMax = tableau.size();
314
		final int tailleMax = tableau.size();
315
 
315
 
316
		for (int i = 0; i < tailleMax; i++) {
316
		for (int i = 0; i < tailleMax; i++) {
317
			JSONObject pageCourante = tableau.get(i).isObject() ;
317
			JSONObject pageCourante = tableau.get(i).isObject() ;
318
			if (pageCourante != null) {
318
			if (pageCourante != null) {
319
				Menu menuCourrant = new Menu();
319
				Menu menuCourrant = new Menu();
320
				
320
				
321
				if (pageCourante.get("code") != null) {
321
				if (pageCourante.get("code") != null) {
322
					String codeCourant = pageCourante.get("code").isString().stringValue();
322
					String codeCourant = pageCourante.get("code").isString().stringValue();
323
					menuCourrant.setCode(codeCourant);
323
					menuCourrant.setCode(codeCourant);
324
				} 
324
				} 
325
				if (pageCourante.get("txt") != null) {
325
				if (pageCourante.get("txt") != null) {
326
					menuCourrant.setNom(pageCourante.get("txt").isString().stringValue());
326
					menuCourrant.setNom(pageCourante.get("txt").isString().stringValue());
327
				}
327
				}
328
				
328
				
329
				if (menuCourrant.getNom() == null && menuCourrant.getCode() == null) {
329
				if (menuCourrant.getNom() == null && menuCourrant.getCode() == null) {
330
					menuCourrant = (Menu) brancheSommaire.getChild((brancheSommaire.getChildCount() - 1));
330
					menuCourrant = (Menu) brancheSommaire.getChild((brancheSommaire.getChildCount() - 1));
331
				} else {
331
				} else {
332
					if (brancheSommaire != null) {
332
					if (brancheSommaire != null) {
333
						brancheSommaire.add(menuCourrant);
333
						brancheSommaire.add(menuCourrant);
334
						if (pagePrincipale == null) {
334
						if (pagePrincipale == null) {
335
							pagePrincipale = menuCourrant;
335
							pagePrincipale = menuCourrant;
336
						}
336
						}
337
					}
337
					}
338
				}
338
				}
339
				if (pageCourante.get("liste") != null) {
339
				if (pageCourante.get("liste") != null) {
340
					ajouterMenuRecursivement(menuCourrant, pageCourante.get("liste").isArray());
340
					ajouterMenuRecursivement(menuCourrant, pageCourante.get("liste").isArray());
341
				}
341
				}
342
			}
342
			}
343
		}		
343
		}		
344
	}
344
	}
345
}
345
}