Subversion Repositories eFlore/Applications.coel

Rev

Rev 358 | Rev 543 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 358 Rev 498
Line 1... Line 1...
1
package org.tela_botanica.client.composants;
1
package org.tela_botanica.client.composants;
Line 2... Line -...
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;
-
 
5
import org.tela_botanica.client.RegistreId;
8
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;
Line 12... Line 10...
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;
-
 
17
import com.extjs.gxt.ui.client.Style.Scroll;
14
import com.extjs.gxt.ui.client.Style.LayoutRegion;
18
import com.extjs.gxt.ui.client.binder.TreeBinder;
-
 
19
import com.extjs.gxt.ui.client.event.BaseEvent;
15
import com.extjs.gxt.ui.client.Style.Scroll;
20
import com.extjs.gxt.ui.client.event.ComponentEvent;
16
import com.extjs.gxt.ui.client.event.ButtonEvent;
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;
-
 
33
import com.extjs.gxt.ui.client.widget.button.Button;
28
import com.extjs.gxt.ui.client.widget.form.StoreFilterField;
34
import com.extjs.gxt.ui.client.widget.form.FormPanel;
29
import com.extjs.gxt.ui.client.widget.button.Button;
35
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
-
 
36
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
30
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
37
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
-
 
38
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
31
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
39
import com.extjs.gxt.ui.client.widget.layout.FormData;
-
 
40
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;
32
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
43
import com.extjs.gxt.ui.client.widget.tree.Tree;
33
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
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;
Line 58... Line 48...
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;
-
 
66
	private TreeBinder<Menu> binder = null;
55
	private TreeStore<Menu> magazin = 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;
Line 72... Line 61...
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);
Line 95... Line 84...
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);
Line 99... Line 88...
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");
Line 115... Line 104...
115
		sommairePanneau.getHeader().insertTool(plierDeplierToutBtn, 0);
104
		sommairePanneau.getHeader().insertTool(plierDeplierToutBtn, 0);
Line 121... Line 110...
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);		
Line 135... Line 124...
135
	}
124
	}
136
	
125
	
137
	private void etendreArbre(TreeItem treeItemAOuvrir) {
-
 
138
		arbre.setSelectedItem(treeItemAOuvrir);
126
	private void etendreArbre(Menu menuAOuvrir) {
Line 139... Line 127...
139
		arbre.expandPath(arbre.getSelectedItem().getPath());
127
		arbre.setExpanded(menuAOuvrir, true);
140
	}
128
	}
-
 
129
	
141
	
130
	private void etendreArbre(String menuCode) {
-
 
131
		Menu menuAOuvrir = magazin.findModel("code", menuCode);
142
	private void etendreArbre(String treeItemId) {
132
		if (menuAOuvrir != null) {
Line 143... Line 133...
143
		arbre.setSelectedItem(chercherTreeItemParItemId(treeItemId));
133
			arbre.setExpanded(menuAOuvrir, true);
144
		arbre.expandPath(arbre.getSelectedItem().getPath());
134
		}
145
	}
135
	}
146
 
-
 
147
	private void chargerSommaireArbre() {
-
 
148
		arbre = new Tree();
-
 
149
		arbre.getStyle().setLeafIconStyle(ComposantClass.ICONE_AIDE);
-
 
150
		
-
 
Line 151... Line 136...
151
		binder = new TreeBinder<Menu>(arbre, magazin);
136
 
Line 152... Line 137...
152
		binder.setAutoLoad(true);
137
	private void creerSommaire() {
153
		binder.setDisplayProperty("nom");
-
 
154
		binder.init();
138
		arbre = new TreePanel<Menu>(magazin);
155
		
-
 
156
		filtre.bind(magazin);
-
 
157
		
-
 
158
		arbre.addListener(Events.OnClick, new Listener<TreeEvent>(){
-
 
159
 
-
 
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
	}
139
		arbre.getStyle().setLeafIcon(Images.ICONES.aide());
169
 
-
 
170
	private void attribuerIdAuxTreeItem() {
-
 
171
		List<TreeItem> liste = arbre.getAllItems();
-
 
172
		Iterator<TreeItem> it = liste.iterator();
-
 
173
		while (it.hasNext()) {
-
 
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
			}
140
		
180
		}
-
 
181
	}
-
 
182
	
-
 
183
	private TreeItem chercherTreeItemParItemId(String itemIdAChercher) {
-
 
184
		TreeItem treeItemTrouve = null;
141
		filtre.bind(magazin);
185
		if (itemIdAChercher != null) {
142
		
186
			String itemIdAChercherEnMinuscule = itemIdAChercher.toLowerCase();
143
		arbre.addListener(Events.OnClick, new Listener<TreePanelEvent<Menu>>(){
187
			List<TreeItem> liste = arbre.getAllItems();
-
 
188
			Iterator<TreeItem> it = liste.iterator();
-
 
189
			while(it.hasNext()) {
-
 
190
				TreeItem ti = (TreeItem) it.next();
-
 
191
				if (ti.getModel() != null) {
-
 
192
					String codePageAide = (String) ti.getModel().get("code");
-
 
193
					if (codePageAide != null) {
144
			public void handleEvent(TreePanelEvent<Menu> tpe) {
194
						String codePageAideEnMinuscule = codePageAide.toLowerCase();
145
				TreePanel<Menu> f = tpe.getComponent();
195
						if (itemIdAChercherEnMinuscule.equals(codePageAideEnMinuscule)) {
146
				if (f.getModel() != null) {
196
							treeItemTrouve = ti;
147
					Menu menu = f.getModel();
197
							break;
-
 
198
						}
148
					if (menu.get("code") != null) {
Line 199... Line 149...
199
					}
149
						selectionSommaire((String) menu.get("code"));
200
				}
150
					}
201
			}
-
 
202
		}
-
 
203
		return treeItemTrouve;
-
 
204
	}
151
				}
Line 205... Line 152...
205
	
152
			}
206
	private void definirPageAOuvrirParDefaut(TreeItem menu) {
153
		});		
207
		String code = menu.getModel().get("code");
154
	}
Line 220... Line 167...
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 {
Line 266... Line 213...
266
		filtre.setToolTip("Filtrer le sommaire");
213
		filtre.setToolTip("Filtrer le sommaire");
267
		filtre.setWidth(200);
214
		filtre.setWidth(200);
Line 268... Line 215...
268
		
215
		
269
		FormLayout fl = new FormLayout();
216
		FormLayout fl = new FormLayout();
-
 
217
		fl.setLabelWidth(55);
270
		fl.setLabelWidth(55);
218
		// CHECK : vérifier si c'est bon sans la largeur
Line 271... Line 219...
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);
Line 311... Line 259...
311
								ajouterMenuRecursivement(sommaire, jsonArray);
259
								ajouterMenuRecursivement(sommaire, jsonArray);
Line 312... Line 260...
312
 
260
 
313
								magazin = new TreeStore<Menu>();
261
								magazin = new TreeStore<Menu>();
Line 314... Line 262...
314
								magazin.add(sommaire, true);
262
								magazin.add(sommaire, true);
315
								
263
								
Line 316... Line 264...
316
								chargerSommaireArbre();
264
								creerSommaire();
317
								attribuerIdAuxTreeItem();
-
 
318
								
265
								definirMenuAOuvrirParDefaut();
-
 
266
								
319
								sommairePanneau.add(arbre);
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);