Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 358 Rev 498
1
package org.tela_botanica.client.composants;
1
package org.tela_botanica.client.composants;
2
 
-
 
3
import java.util.Iterator;
-
 
4
import java.util.List;
-
 
5
 
2
 
6
import org.tela_botanica.client.ComposantClass;
3
import org.tela_botanica.client.ComposantClass;
7
import org.tela_botanica.client.ComposantId;
4
import org.tela_botanica.client.ComposantId;
8
import org.tela_botanica.client.RegistreId;
5
import org.tela_botanica.client.RegistreId;
-
 
6
import org.tela_botanica.client.images.Images;
9
import org.tela_botanica.client.modeles.Configuration;
7
import org.tela_botanica.client.modeles.Configuration;
10
import org.tela_botanica.client.modeles.Information;
8
import org.tela_botanica.client.modeles.Information;
11
import org.tela_botanica.client.modeles.Menu;
9
import org.tela_botanica.client.modeles.Menu;
12
import org.tela_botanica.client.util.Print;
10
import org.tela_botanica.client.util.Print;
13
 
11
 
14
import com.extjs.gxt.ui.client.Events;
12
import com.extjs.gxt.ui.client.event.Events;
15
import com.extjs.gxt.ui.client.Registry;
13
import com.extjs.gxt.ui.client.Registry;
16
import com.extjs.gxt.ui.client.Style.LayoutRegion;
14
import com.extjs.gxt.ui.client.Style.LayoutRegion;
17
import com.extjs.gxt.ui.client.Style.Scroll;
15
import com.extjs.gxt.ui.client.Style.Scroll;
18
import com.extjs.gxt.ui.client.binder.TreeBinder;
-
 
19
import com.extjs.gxt.ui.client.event.BaseEvent;
16
import com.extjs.gxt.ui.client.event.ButtonEvent;
20
import com.extjs.gxt.ui.client.event.ComponentEvent;
-
 
21
import com.extjs.gxt.ui.client.event.Listener;
17
import com.extjs.gxt.ui.client.event.Listener;
22
import com.extjs.gxt.ui.client.event.SelectionListener;
18
import com.extjs.gxt.ui.client.event.SelectionListener;
23
import com.extjs.gxt.ui.client.event.TreeEvent;
19
import com.extjs.gxt.ui.client.event.TreePanelEvent;
24
import com.extjs.gxt.ui.client.store.Store;
20
import com.extjs.gxt.ui.client.store.Store;
25
import com.extjs.gxt.ui.client.store.TreeStore;
21
import com.extjs.gxt.ui.client.store.TreeStore;
26
import com.extjs.gxt.ui.client.util.Margins;
22
import com.extjs.gxt.ui.client.util.Margins;
27
import com.extjs.gxt.ui.client.widget.ContentPanel;
23
import com.extjs.gxt.ui.client.widget.ContentPanel;
28
import com.extjs.gxt.ui.client.widget.Dialog;
24
import com.extjs.gxt.ui.client.widget.Dialog;
29
import com.extjs.gxt.ui.client.widget.HtmlContainer;
25
import com.extjs.gxt.ui.client.widget.HtmlContainer;
30
import com.extjs.gxt.ui.client.widget.Info;
26
import com.extjs.gxt.ui.client.widget.Info;
31
import com.extjs.gxt.ui.client.widget.LayoutContainer;
27
import com.extjs.gxt.ui.client.widget.LayoutContainer;
32
import com.extjs.gxt.ui.client.widget.StoreFilterField;
28
import com.extjs.gxt.ui.client.widget.form.StoreFilterField;
33
import com.extjs.gxt.ui.client.widget.button.Button;
29
import com.extjs.gxt.ui.client.widget.button.Button;
34
import com.extjs.gxt.ui.client.widget.form.FormPanel;
-
 
35
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
30
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
36
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
31
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
37
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
-
 
38
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
32
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
39
import com.extjs.gxt.ui.client.widget.layout.FormData;
-
 
40
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
33
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
41
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem;
-
 
42
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
-
 
43
import com.extjs.gxt.ui.client.widget.tree.Tree;
-
 
44
import com.extjs.gxt.ui.client.widget.tree.TreeItem;
34
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
45
import com.google.gwt.core.client.GWT;
35
import com.google.gwt.core.client.GWT;
46
import com.google.gwt.http.client.Request;
36
import com.google.gwt.http.client.Request;
47
import com.google.gwt.http.client.RequestBuilder;
37
import com.google.gwt.http.client.RequestBuilder;
48
import com.google.gwt.http.client.RequestCallback;
38
import com.google.gwt.http.client.RequestCallback;
49
import com.google.gwt.http.client.RequestException;
39
import com.google.gwt.http.client.RequestException;
50
import com.google.gwt.http.client.Response;
40
import com.google.gwt.http.client.Response;
51
import com.google.gwt.json.client.JSONArray;
41
import com.google.gwt.json.client.JSONArray;
52
import com.google.gwt.json.client.JSONObject;
42
import com.google.gwt.json.client.JSONObject;
53
import com.google.gwt.json.client.JSONParser;
43
import com.google.gwt.json.client.JSONParser;
54
import com.google.gwt.json.client.JSONValue;
44
import com.google.gwt.json.client.JSONValue;
55
import com.google.gwt.user.client.Event;
45
import com.google.gwt.user.client.Event;
56
 
46
 
57
public class AideFenetre extends Dialog {
47
public class AideFenetre extends Dialog {
58
 
48
 
59
	private static final String SERVICE_NOM = "CoelAide";
49
	private static final String SERVICE_NOM = "CoelAide";
60
	private static final String PAGE_SOMMAIRE_CODE = "AideCoelSommaire";
50
	private static final String PAGE_SOMMAIRE_CODE = "AideCoelSommaire";
61
	private static final String PAGE_A_OUVRIR_CODE = "AideCoelPresentationGenerale";
51
	private static final String PAGE_A_OUVRIR_CODE = "AideCoelPresentationGenerale";
62
	private static Menu pagePrincipale = null;
52
	private static Menu pagePrincipale = null;
63
	private static TreeItem treeItemAOuvrirParDefaut = null;
53
	private static Menu menuAOuvrirParDefaut = null;
64
	private Tree arbre = null; 
54
	private TreePanel<Menu> arbre = null; 
65
	private TreeStore<Menu> magazin = null;
55
	private TreeStore<Menu> magazin = null;
66
	private TreeBinder<Menu> binder = null;
-
 
67
	private StoreFilterField<Menu> filtre = null;
56
	private StoreFilterField<Menu> filtre = null;
68
	private Menu sommaire = null;
57
	private Menu sommaire = null;
69
	private ContentPanel sommairePanneau = null;
58
	private ContentPanel sommairePanneau = null;
70
	private ContentPanel contenuPanneau = null;
59
	private ContentPanel contenuPanneau = null;
71
	private HtmlContainer conteneurDuHtml;
60
	private HtmlContainer conteneurDuHtml;
72
	private LayoutContainer entetePanneau;
61
	private LayoutContainer entetePanneau;
73
		
62
		
74
	public AideFenetre() {
63
	public AideFenetre() {
75
		setBodyBorder(false);  
64
		setBodyBorder(false);  
76
		setButtons(Dialog.OK);
65
		setButtons(Dialog.OK);
77
		setIconStyle(ComposantClass.ICONE_PANNEAU_LISTE);  
66
		setIconStyle(ComposantClass.ICONE_PANNEAU_LISTE);
78
		setHeading("COEL - Aide");  
67
		setHeading("COEL - Aide");  
79
		setWidth(675);
68
		setWidth(675);
80
		setHeight(400);
69
		setHeight(400);
81
		setHideOnButtonClick(true);  
70
		setHideOnButtonClick(true);  
82
		setLayout(new BorderLayout());
71
		setLayout(new BorderLayout());
83
		
72
		
84
		// Panneau Nord : entête
73
		// Panneau Nord : entête
85
		entetePanneau = new LayoutContainer();
74
		entetePanneau = new LayoutContainer();
86
		entetePanneau.setLayout(new FlowLayout());
75
		entetePanneau.setLayout(new FlowLayout());
87
		BorderLayoutData enteteDisposition = new BorderLayoutData(LayoutRegion.NORTH, 30);
76
		BorderLayoutData enteteDisposition = new BorderLayoutData(LayoutRegion.NORTH, 30);
88
		add(entetePanneau, enteteDisposition);
77
		add(entetePanneau, enteteDisposition);
89
		
78
		
90
		inititialiserSommaireArbreFiltre();
79
		inititialiserSommaireArbreFiltre();
91
		
80
		
92
		// Panneau Ouest : sommaire
81
		// Panneau Ouest : sommaire
93
		sommairePanneau = new ContentPanel();
82
		sommairePanneau = new ContentPanel();
94
		sommairePanneau.setScrollMode(Scroll.AUTO);
83
		sommairePanneau.setScrollMode(Scroll.AUTO);
95
		BorderLayoutData sommaireDisposition = new BorderLayoutData(LayoutRegion.WEST, 230, 175, 350);  
84
		BorderLayoutData sommaireDisposition = new BorderLayoutData(LayoutRegion.WEST, 230, 175, 350);  
96
		sommaireDisposition.setMargins(new Margins(0, 5, 0, 0));  
85
		sommaireDisposition.setMargins(new Margins(0, 5, 0, 0));  
97
		sommaireDisposition.setSplit(true);  
86
		sommaireDisposition.setSplit(true);  
98
		sommaireDisposition.setFloatable(true);
87
		sommaireDisposition.setFloatable(true);
99
		
88
		
100
		Button plierDeplierToutBtn = new Button(null, new SelectionListener<ComponentEvent>() {  
89
		Button plierDeplierToutBtn = new Button(null, new SelectionListener<ButtonEvent>() {  
101
			public void componentSelected(ComponentEvent ce) {  
90
			public void componentSelected(ButtonEvent be) {  
102
				Button boutonPlierDeplierTout = (Button) ce.source;
91
				Button boutonPlierDeplierTout = (Button) be.getSource();
103
				String styleIcone = boutonPlierDeplierTout.getIconStyle();
92
				// CHECK : vérifier si cela marche
104
				if (styleIcone.equals(ComposantClass.ICONE_DEPLIER_TOUT)) {
93
				if (boutonPlierDeplierTout.getIcon().equals(Images.ICONES.deplierTout())) {
105
					boutonPlierDeplierTout.setIconStyle(ComposantClass.ICONE_REPLIER_TOUT);
94
					boutonPlierDeplierTout.setIcon(Images.ICONES.deplierTout());
106
					arbre.expandAll();
95
					arbre.expandAll();
107
				} else if (styleIcone.equals(ComposantClass.ICONE_REPLIER_TOUT)) {
96
				} else if (boutonPlierDeplierTout.getIcon().equals(Images.ICONES.replierTout())) {
108
					boutonPlierDeplierTout.setIconStyle(ComposantClass.ICONE_DEPLIER_TOUT);
97
					boutonPlierDeplierTout.setIcon(Images.ICONES.replierTout());
109
					arbre.collapseAll();
98
					arbre.collapseAll();
110
				}
99
				}
111
			}
100
			}
112
		});
101
		});
113
		plierDeplierToutBtn.setIconStyle(ComposantClass.ICONE_DEPLIER_TOUT);
102
		plierDeplierToutBtn.setIcon(Images.ICONES.deplierTout());
114
		plierDeplierToutBtn.setToolTip("Étendre le sommaire");
103
		plierDeplierToutBtn.setToolTip("Étendre le sommaire");
115
		sommairePanneau.getHeader().insertTool(plierDeplierToutBtn, 0);
104
		sommairePanneau.getHeader().insertTool(plierDeplierToutBtn, 0);
116
		
105
		
117
		add(sommairePanneau, sommaireDisposition);  
106
		add(sommairePanneau, sommaireDisposition);  
118
		
107
		
119
		// Chargement de l'arbre du sommaire et de son filtre
108
		// Chargement de l'arbre du sommaire et de son filtre
120
		getSommaireArbreModele();
109
		getSommaireArbreModele();
121
		
110
		
122
		// Panneau Central : contenu
111
		// Panneau Central : contenu
123
		contenuPanneau = new ContentPanel();
112
		contenuPanneau = new ContentPanel();
124
		contenuPanneau.setScrollMode(Scroll.AUTO);
113
		contenuPanneau.setScrollMode(Scroll.AUTO);
125
		// Barre d'outils
114
		// Barre d'outils
126
		Button imprimerBtn = new Button(null, new SelectionListener<ComponentEvent>() {  
115
		Button imprimerBtn = new Button(null, new SelectionListener<ButtonEvent>() {  
127
			public void componentSelected(ComponentEvent ce) {  
116
			public void componentSelected(ButtonEvent be) {  
128
				Print.it(conteneurDuHtml.el().getInnerHtml());
117
				Print.it(conteneurDuHtml.el().getInnerHtml());
129
			}
118
			}
130
		});
119
		});
131
		imprimerBtn.setIconStyle(ComposantClass.ICONE_IMPRIMER);
120
		imprimerBtn.setIconStyle(ComposantClass.ICONE_IMPRIMER);
132
		contenuPanneau.getHeader().insertTool(imprimerBtn, 0);
121
		contenuPanneau.getHeader().insertTool(imprimerBtn, 0);
133
		BorderLayoutData contenuDisposition = new BorderLayoutData(LayoutRegion.CENTER);  
122
		BorderLayoutData contenuDisposition = new BorderLayoutData(LayoutRegion.CENTER);  
134
		add(contenuPanneau, contenuDisposition);		
123
		add(contenuPanneau, contenuDisposition);		
135
	}
124
	}
136
	
125
	
137
	private void etendreArbre(TreeItem treeItemAOuvrir) {
126
	private void etendreArbre(Menu menuAOuvrir) {
138
		arbre.setSelectedItem(treeItemAOuvrir);
-
 
139
		arbre.expandPath(arbre.getSelectedItem().getPath());
127
		arbre.setExpanded(menuAOuvrir, true);
140
	}
128
	}
141
	
129
	
-
 
130
	private void etendreArbre(String menuCode) {
142
	private void etendreArbre(String treeItemId) {
131
		Menu menuAOuvrir = magazin.findModel("code", menuCode);
-
 
132
		if (menuAOuvrir != null) {
143
		arbre.setSelectedItem(chercherTreeItemParItemId(treeItemId));
133
			arbre.setExpanded(menuAOuvrir, true);
144
		arbre.expandPath(arbre.getSelectedItem().getPath());
134
		}
145
	}
135
	}
146
 
136
 
147
	private void chargerSommaireArbre() {
-
 
148
		arbre = new Tree();
-
 
149
		arbre.getStyle().setLeafIconStyle(ComposantClass.ICONE_AIDE);
-
 
150
		
-
 
151
		binder = new TreeBinder<Menu>(arbre, magazin);
-
 
152
		binder.setAutoLoad(true);
137
	private void creerSommaire() {
153
		binder.setDisplayProperty("nom");
138
		arbre = new TreePanel<Menu>(magazin);
154
		binder.init();
139
		arbre.getStyle().setLeafIcon(Images.ICONES.aide());
155
		
140
		
156
		filtre.bind(magazin);
141
		filtre.bind(magazin);
157
		
142
		
158
		arbre.addListener(Events.OnClick, new Listener<TreeEvent>(){
-
 
159
 
143
		arbre.addListener(Events.OnClick, new Listener<TreePanelEvent<Menu>>(){
160
			public void handleEvent(TreeEvent be) {
-
 
161
				TreeItem f = be.item;
-
 
162
				if (f.getModel() != null && f.getModel().get("code") != null) {
-
 
163
					selectionSommaire((String) f.getModel().get("code"));
-
 
164
				}
-
 
165
			}
-
 
166
			
-
 
167
		});		
-
 
168
	}
-
 
169
 
-
 
170
	private void attribuerIdAuxTreeItem() {
-
 
171
		List<TreeItem> liste = arbre.getAllItems();
-
 
172
		Iterator<TreeItem> it = liste.iterator();
-
 
173
		while (it.hasNext()) {
144
			public void handleEvent(TreePanelEvent<Menu> tpe) {
174
			TreeItem ti = (TreeItem) it.next();
-
 
175
			if (ti.isLeaf()) {
-
 
176
				String code = (String) ti.getModel().get("code");
-
 
177
				ti.setItemId(code);
-
 
178
				definirPageAOuvrirParDefaut(ti);
-
 
179
			}
-
 
180
		}
-
 
181
	}
-
 
182
	
-
 
183
	private TreeItem chercherTreeItemParItemId(String itemIdAChercher) {
-
 
184
		TreeItem treeItemTrouve = null;
145
				TreePanel<Menu> f = tpe.getComponent();
185
		if (itemIdAChercher != null) {
-
 
186
			String itemIdAChercherEnMinuscule = itemIdAChercher.toLowerCase();
-
 
187
			List<TreeItem> liste = arbre.getAllItems();
-
 
188
			Iterator<TreeItem> it = liste.iterator();
-
 
189
			while(it.hasNext()) {
146
				if (f.getModel() != null) {
190
				TreeItem ti = (TreeItem) it.next();
147
					Menu menu = f.getModel();
191
				if (ti.getModel() != null) {
148
					if (menu.get("code") != null) {
192
					String codePageAide = (String) ti.getModel().get("code");
-
 
193
					if (codePageAide != null) {
-
 
194
						String codePageAideEnMinuscule = codePageAide.toLowerCase();
-
 
195
						if (itemIdAChercherEnMinuscule.equals(codePageAideEnMinuscule)) {
-
 
196
							treeItemTrouve = ti;
-
 
197
							break;
-
 
198
						}
149
						selectionSommaire((String) menu.get("code"));
199
					}
150
					}
200
				}
151
				}
201
			}
152
			}
202
		}
153
		});		
203
		return treeItemTrouve;
-
 
204
	}
154
	}
205
	
155
	
206
	private void definirPageAOuvrirParDefaut(TreeItem menu) {
156
	private void definirMenuAOuvrirParDefaut() {
207
		String code = menu.getModel().get("code");
-
 
208
		if (PAGE_A_OUVRIR_CODE.equals(code)) {
-
 
209
			treeItemAOuvrirParDefaut = menu;
-
 
210
		}
157
		menuAOuvrirParDefaut = magazin.findModel("code", PAGE_A_OUVRIR_CODE);
211
	}
158
	}
212
 
159
 
213
	private void selectionSommaire(String page) {
160
	private void selectionSommaire(String page) {
214
		String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
161
		String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
215
		String aidePageUrl = serviceUrl+SERVICE_NOM+"/"+page;
162
		String aidePageUrl = serviceUrl+SERVICE_NOM+"/"+page;
216
		GWT.log("Sélection : "+aidePageUrl, null);
163
		GWT.log("Sélection : "+aidePageUrl, null);
217
		chargerPageAide(aidePageUrl);
164
		chargerPageAide(aidePageUrl);
218
	}
165
	}
219
	
166
	
220
	private void chargerPageAide(String url) {
167
	private void chargerPageAide(String url) {
221
		GWT.log("Charger : "+url, null);
168
		GWT.log("Charger : "+url, null);
222
		conteneurDuHtml = new HtmlContainer() {
169
		conteneurDuHtml = new HtmlContainer() {
223
			public void onBrowserEvent(Event e) {
170
			public void onBrowserEvent(Event e) {
224
				// Nous vérifions que l'évenement est un clic et qu'il a lieu sur un lien
171
				// Nous vérifions que l'évenement est un clic et qu'il a lieu sur un lien
225
				if (e.getTypeInt() == Event.ONCLICK && e.getTarget().getTagName().equals("A")) {
172
				if (e.getTypeInt() == Event.ONCLICK && e.getEventTarget().equals("A")) {
226
					e.preventDefault();
173
					e.preventDefault();
227
					String urlPageAideCible = e.getTarget().toString();
174
					String urlPageAideCible = e.getEventTarget().toString();
228
					chargerPageAide(urlPageAideCible);
175
					chargerPageAide(urlPageAideCible);
229
					String codePageAideCible = urlPageAideCible.substring(urlPageAideCible.lastIndexOf("/")+1);
176
					String codePageAideCible = urlPageAideCible.substring(urlPageAideCible.lastIndexOf("/")+1);
230
					etendreArbre(codePageAideCible);
177
					etendreArbre(codePageAideCible);
231
					GWT.log("Clic : "+urlPageAideCible+"::"+codePageAideCible, null);
178
					GWT.log("Clic : "+urlPageAideCible+"::"+codePageAideCible, null);
232
				} else {
179
				} else {
233
					GWT.log("Event :"+e.getType(), null);
180
					GWT.log("Event :"+e.getType(), null);
234
				}
181
				}
235
			}
182
			}
236
		};
183
		};
237
		
184
		
238
		conteneurDuHtml.setId(ComposantId.PANNEAU_AIDE);
185
		conteneurDuHtml.setId(ComposantId.PANNEAU_AIDE);
239
		conteneurDuHtml.setWidth(400);
186
		conteneurDuHtml.setWidth(400);
240
		conteneurDuHtml.sinkEvents(Event.ONCLICK);
187
		conteneurDuHtml.sinkEvents(Event.ONCLICK);
241
		conteneurDuHtml.setUrl(url);
188
		conteneurDuHtml.setUrl(url);
242
		conteneurDuHtml.recalculate();
189
		conteneurDuHtml.recalculate();
243
		
190
		
244
		contenuPanneau.removeAll();
191
		contenuPanneau.removeAll();
245
		contenuPanneau.add(conteneurDuHtml);
192
		contenuPanneau.add(conteneurDuHtml);
246
		contenuPanneau.layout();
193
		contenuPanneau.layout();
247
	}
194
	}
248
	
195
	
249
	private void inititialiserSommaireArbreFiltre() {
196
	private void inititialiserSommaireArbreFiltre() {
250
		filtre = new StoreFilterField<Menu>() {  
197
		filtre = new StoreFilterField<Menu>() {  
251
			@Override
198
			@Override
252
			protected boolean doSelect(Store<Menu> magazin, Menu parent, Menu enregistrement, String propriete, String filtre) {  
199
			protected boolean doSelect(Store<Menu> magazin, Menu parent, Menu enregistrement, String propriete, String filtre) {  
253
				Boolean retour = false;
200
				Boolean retour = false;
254
				// Seul les feuilles sont traitées par le filtre
201
				// Seul les feuilles sont traitées par le filtre
255
				String nomMenu = enregistrement.getNom();
202
				String nomMenu = enregistrement.getNom();
256
				String nomMenuMinuscule = nomMenu.toLowerCase();
203
				String nomMenuMinuscule = nomMenu.toLowerCase();
257
				String nomFiltreMinuscule = filtre.toLowerCase();
204
				String nomFiltreMinuscule = filtre.toLowerCase();
258
				if (nomMenuMinuscule.matches(".*"+nomFiltreMinuscule+".*")) {  
205
				if (nomMenuMinuscule.matches(".*"+nomFiltreMinuscule+".*")) {  
259
					retour = true;  
206
					retour = true;  
260
				}
207
				}
261
				return retour;
208
				return retour;
262
			}
209
			}
263
		};
210
		};
264
		filtre.setFieldLabel("Chercher");
211
		filtre.setFieldLabel("Chercher");
265
		filtre.setLabelStyle("font-weight:normal;");
212
		filtre.setLabelStyle("font-weight:normal;");
266
		filtre.setToolTip("Filtrer le sommaire");
213
		filtre.setToolTip("Filtrer le sommaire");
267
		filtre.setWidth(200);
214
		filtre.setWidth(200);
268
		
215
		
269
		FormLayout fl = new FormLayout();
216
		FormLayout fl = new FormLayout();
270
		fl.setLabelWidth(55);
217
		fl.setLabelWidth(55);
-
 
218
		// CHECK : vérifier si c'est bon sans la largeur
271
		fl.setPadding(5);
219
		//fl.setPadding(5);
272
		
220
		
273
		ContentPanel fp = new ContentPanel();
221
		ContentPanel fp = new ContentPanel();
274
		fp.setHeaderVisible(false);
222
		fp.setHeaderVisible(false);
275
		fp.setLayout(fl);
223
		fp.setLayout(fl);
276
		fp.add(filtre);
224
		fp.add(filtre);
277
		entetePanneau.add(fp);
225
		entetePanneau.add(fp);
278
	}
226
	}
279
	
227
	
280
	public void getSommaireArbreModele() {
228
	public void getSommaireArbreModele() {
281
		String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
229
		String serviceUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
282
		String sommairePageUrl = serviceUrl+SERVICE_NOM+"/"+PAGE_SOMMAIRE_CODE+"/sommaire";
230
		String sommairePageUrl = serviceUrl+SERVICE_NOM+"/"+PAGE_SOMMAIRE_CODE+"/sommaire";
283
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, sommairePageUrl);
231
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, sommairePageUrl);
284
		try {
232
		try {
285
			rb.sendRequest(null, new RequestCallback() {
233
			rb.sendRequest(null, new RequestCallback() {
286
	
234
	
287
				public void onError(Request request, Throwable exception) {
235
				public void onError(Request request, Throwable exception) {
288
					// Gestion des exceptions déclenchées par l'exécution de la requête 
236
					// Gestion des exceptions déclenchées par l'exécution de la requête 
289
					GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception);
237
					GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception);
290
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
238
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
291
				}
239
				}
292
				
240
				
293
				public void onErrorHTTP(Request request, Response reponse) {
241
				public void onErrorHTTP(Request request, Response reponse) {
294
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
242
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
295
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
243
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
296
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
244
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
297
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
245
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
298
				}
246
				}
299
				
247
				
300
				public void onResponseReceived(Request request, Response response) {
248
				public void onResponseReceived(Request request, Response response) {
301
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
249
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
302
					if (response.getStatusCode() != 200) {
250
					if (response.getStatusCode() != 200) {
303
						onErrorHTTP(request, response);
251
						onErrorHTTP(request, response);
304
					} else {
252
					} else {
305
						if (response.getText().length() != 0 && response.getText() != null) {
253
						if (response.getText().length() != 0 && response.getText() != null) {
306
							final JSONValue responseValue = JSONParser.parse(response.getText());
254
							final JSONValue responseValue = JSONParser.parse(response.getText());
307
							JSONArray jsonArray = responseValue.isArray();
255
							JSONArray jsonArray = responseValue.isArray();
308
							
256
							
309
							if (jsonArray != null) {
257
							if (jsonArray != null) {
310
								sommaire = new Menu("Sommaire");
258
								sommaire = new Menu("Sommaire");
311
								ajouterMenuRecursivement(sommaire, jsonArray);
259
								ajouterMenuRecursivement(sommaire, jsonArray);
312
 
260
 
313
								magazin = new TreeStore<Menu>();
261
								magazin = new TreeStore<Menu>();
314
								magazin.add(sommaire, true);
262
								magazin.add(sommaire, true);
315
								
263
								
316
								chargerSommaireArbre();
264
								creerSommaire();
317
								attribuerIdAuxTreeItem();
265
								definirMenuAOuvrirParDefaut();
318
								
-
 
319
								sommairePanneau.add(arbre);
266
								
-
 
267
								sommairePanneau.add(arbre);
320
								
268
								sommairePanneau.layout();
321
								sommairePanneau.layout();
269
								
322
								// Chargement de la page racine
270
								// Chargement de la page racine
323
								selectionSommaire(pagePrincipale.getCode());
271
								selectionSommaire(pagePrincipale.getCode());
324
								etendreArbre(treeItemAOuvrirParDefaut);
272
								etendreArbre(menuAOuvrirParDefaut);
325
							} else {
273
							} else {
326
								GWT.log("\n\tLa réponse n'est pas un objet ou un talbeau JSON et vaut : "+responseValue.toString(), null);
274
								GWT.log("\n\tLa réponse n'est pas un objet ou un talbeau JSON et vaut : "+responseValue.toString(), null);
327
							}
275
							}
328
						}
276
						}
329
					}
277
					}
330
				}
278
				}
331
			});
279
			});
332
		} catch (RequestException e) {
280
		} catch (RequestException e) {
333
			e.printStackTrace();
281
			e.printStackTrace();
334
		}
282
		}
335
	}
283
	}
336
	
284
	
337
	private void ajouterMenuRecursivement(Menu brancheSommaire, JSONArray tableau) {
285
	private void ajouterMenuRecursivement(Menu brancheSommaire, JSONArray tableau) {
338
		final int tailleMax = tableau.size();
286
		final int tailleMax = tableau.size();
339
 
287
 
340
		for (int i = 0; i < tailleMax; i++) {
288
		for (int i = 0; i < tailleMax; i++) {
341
			JSONObject pageCourante = tableau.get(i).isObject() ;
289
			JSONObject pageCourante = tableau.get(i).isObject() ;
342
			if (pageCourante != null) {
290
			if (pageCourante != null) {
343
				Menu menuCourrant = new Menu();
291
				Menu menuCourrant = new Menu();
344
				
292
				
345
				if (pageCourante.get("code") != null) {
293
				if (pageCourante.get("code") != null) {
346
					menuCourrant.setCode(pageCourante.get("code").isString().stringValue());
294
					menuCourrant.setCode(pageCourante.get("code").isString().stringValue());
347
				} 
295
				} 
348
				if (pageCourante.get("txt") != null) {
296
				if (pageCourante.get("txt") != null) {
349
					menuCourrant.setNom(pageCourante.get("txt").isString().stringValue());
297
					menuCourrant.setNom(pageCourante.get("txt").isString().stringValue());
350
				}
298
				}
351
				
299
				
352
				if (menuCourrant.getNom() == null && menuCourrant.getCode() == null) {
300
				if (menuCourrant.getNom() == null && menuCourrant.getCode() == null) {
353
					menuCourrant = (Menu) brancheSommaire.getChild((brancheSommaire.getChildCount() - 1));
301
					menuCourrant = (Menu) brancheSommaire.getChild((brancheSommaire.getChildCount() - 1));
354
				} else {
302
				} else {
355
					if (brancheSommaire != null) {
303
					if (brancheSommaire != null) {
356
						brancheSommaire.add(menuCourrant);
304
						brancheSommaire.add(menuCourrant);
357
						if (pagePrincipale == null) {
305
						if (pagePrincipale == null) {
358
							pagePrincipale = menuCourrant;
306
							pagePrincipale = menuCourrant;
359
						}
307
						}
360
					}
308
					}
361
				}
309
				}
362
				
310
				
363
				if (pageCourante.get("liste") != null) {
311
				if (pageCourante.get("liste") != null) {
364
					ajouterMenuRecursivement(menuCourrant, pageCourante.get("liste").isArray());
312
					ajouterMenuRecursivement(menuCourrant, pageCourante.get("liste").isArray());
365
				}
313
				}
366
			}
314
			}
367
		}		
315
		}		
368
	}
316
	}
369
}
317
}