Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 910 Rev 912
Line 1... Line 1...
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues.accueil;
-
 
2
 
-
 
3
import java.util.ArrayList;
-
 
4
import java.util.HashMap;
-
 
5
import java.util.Iterator;
-
 
6
import java.util.TreeMap;
Line 2... Line 7...
2
 
7
 
3
import org.tela_botanica.client.Mediateur;
-
 
4
import org.tela_botanica.client.RegistreId;
-
 
5
import org.tela_botanica.client.configuration.Configuration;
8
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.i18n.Constantes;
9
import org.tela_botanica.client.i18n.Constantes;
7
import org.tela_botanica.client.images.Images;
10
import org.tela_botanica.client.images.Images;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
11
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.modeles.Information;
-
 
10
import org.tela_botanica.client.modeles.InterneValeur;
12
import org.tela_botanica.client.modeles.Information;
Line 11... Line -...
11
import org.tela_botanica.client.util.Debug;
-
 
12
 
-
 
13
import com.extjs.gxt.ui.client.Registry;
13
import org.tela_botanica.client.util.Debug;
14
import com.extjs.gxt.ui.client.Style.Scroll;
-
 
15
import com.extjs.gxt.ui.client.event.ButtonEvent;
14
 
16
import com.extjs.gxt.ui.client.event.IconButtonEvent;
-
 
17
import com.extjs.gxt.ui.client.event.SelectionListener;
-
 
18
import com.extjs.gxt.ui.client.event.WindowEvent;
-
 
19
import com.extjs.gxt.ui.client.event.WindowListener;
15
import com.extjs.gxt.ui.client.event.ButtonEvent;
20
import com.extjs.gxt.ui.client.store.ListStore;
-
 
21
import com.extjs.gxt.ui.client.widget.ContentPanel;
-
 
22
import com.extjs.gxt.ui.client.widget.Dialog;
16
import com.extjs.gxt.ui.client.event.SelectionListener;
23
import com.extjs.gxt.ui.client.widget.HtmlContainer;
17
import com.extjs.gxt.ui.client.widget.ContentPanel;
24
import com.extjs.gxt.ui.client.widget.LayoutContainer;
-
 
25
import com.extjs.gxt.ui.client.widget.button.Button;
18
import com.extjs.gxt.ui.client.widget.LayoutContainer;
26
import com.extjs.gxt.ui.client.widget.button.ToolButton;
19
import com.extjs.gxt.ui.client.widget.button.Button;
27
import com.extjs.gxt.ui.client.widget.custom.Portal;
-
 
28
import com.extjs.gxt.ui.client.widget.custom.Portlet;
-
 
29
import com.extjs.gxt.ui.client.widget.form.ComboBox;
-
 
30
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
20
import com.extjs.gxt.ui.client.widget.custom.Portal;
31
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
21
import com.extjs.gxt.ui.client.widget.custom.Portlet;
-
 
22
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
-
 
23
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
-
 
24
import com.google.gwt.xml.client.Document;
-
 
25
import com.google.gwt.xml.client.Element;
-
 
26
import com.google.gwt.xml.client.Node;
Line 32... Line 27...
32
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
27
import com.google.gwt.xml.client.NodeList;
Line 33... Line 28...
33
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
28
import com.google.gwt.xml.client.XMLParser;
34
 
29
 
Line 51... Line 46...
51
		ToolBar barreOutils = new ToolBar();
46
		ToolBar barreOutils = new ToolBar();
52
		Button ajouter = new Button(i18nC.ajouter());
47
		Button ajouter = new Button(i18nC.ajouter());
53
		ajouter.setIcon(Images.ICONES.ajouter());
48
		ajouter.setIcon(Images.ICONES.ajouter());
54
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
49
		ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
55
			public void componentSelected(ButtonEvent be) {  
50
			public void componentSelected(ButtonEvent be) {  
56
				ajouterPortlet(0);
51
				ajouterPortlet();
57
			}  
52
			}  
58
		});
53
		});
59
		barreOutils.add(ajouter);
54
		barreOutils.add(ajouter);
Line -... Line 55...
-
 
55
		
-
 
56
		Button enregistrer = new Button("Enregistrer");
-
 
57
		enregistrer.setIcon(Images.ICONES.appliquer());
-
 
58
		enregistrer.addSelectionListener(new SelectionListener<ButtonEvent>() {  
-
 
59
			public void componentSelected(ButtonEvent be) {  
-
 
60
				enregistrerParametres();
-
 
61
			}  
-
 
62
		});
-
 
63
		barreOutils.add(enregistrer);
60
		
64
		
Line -... Line 65...
-
 
65
		panneauPrincipal.setTopComponent(barreOutils);
-
 
66
		
-
 
67
		portail = creerPortail();
-
 
68
		panneauPrincipal.add(portail);
-
 
69
		
-
 
70
		chargerParametres();
-
 
71
 
-
 
72
		add(panneauPrincipal);
-
 
73
		mediateur.desactiverChargement();
-
 
74
	}
61
		panneauPrincipal.setTopComponent(barreOutils);
75
	
62
		
76
	private Portal creerPortail() {
63
		portail  = new Portal(3);
77
		Portal portail  = new Portal(3);
64
		portail.setBorders(true);
78
		portail.setBorders(true);
65
		portail.setStyleAttribute("backgroundColor", "white");
79
		portail.setStyleAttribute("backgroundColor", "white");
66
		portail.setShadow(true);
80
		portail.setShadow(true);
67
		portail.setColumnWidth(0, .33);
81
		portail.setColumnWidth(0, .33);
-
 
82
		portail.setColumnWidth(1, .33);
-
 
83
		portail.setColumnWidth(2, .33);
-
 
84
		return portail;
-
 
85
	}
68
		portail.setColumnWidth(1, .33);
86
	
-
 
87
	// INFO: Les items d'une classse portal correspondent aux colonnes. Pour vider une Portal, il faut donc vider les éléments de chaque item du Portal.
-
 
88
	private void viderPortail() {
-
 
89
		portail.getItem(0).removeAll();
-
 
90
		portail.getItem(1).removeAll();
-
 
91
		portail.getItem(2).removeAll();
-
 
92
	}
69
		portail.setColumnWidth(2, .33);
93
	
-
 
94
	private void chargerParametres() {
-
 
95
		viderPortail();
-
 
96
		Debug.log("Nbre aplletes c0 :"+portail.getItem(0).getItemCount());
-
 
97
		Debug.log("Charger:"+mediateur.getUtilisateur().getParametre());
-
 
98
		
-
 
99
		Document paramXml = XMLParser.parse(mediateur.getUtilisateur().getParametre());
Line -... Line 100...
-
 
100
		NodeList listeAccueilNoeud = paramXml.getElementsByTagName("accueil");
70
		panneauPrincipal.add(portail);
101
		int nbreAccueilNoeud = listeAccueilNoeud.getLength();
-
 
102
 
-
 
103
		// Récupération du noeud accueil
-
 
104
		Node accueilNoeud = null;
-
 
105
		if (nbreAccueilNoeud == 0) {
-
 
106
			ajouterPortlet();
71
		ajouterPortlet(0);
107
		} else if (nbreAccueilNoeud == 1) {
-
 
108
			accueilNoeud = listeAccueilNoeud.item(0);
-
 
109
			
-
 
110
			// Lecture des noeuds "applette"
-
 
111
			NodeList listeAppletteNoeud = accueilNoeud.getChildNodes();
-
 
112
			int nbreAppletteNoeud = listeAppletteNoeud.getLength();
-
 
113
			TreeMap<String, HashMap<String, String>> tableApplettes = new TreeMap<String, HashMap<String, String>>(); 
-
 
114
			for (int i = 0; i < nbreAppletteNoeud ; i++) {
-
 
115
				Element appletteNoeud = (Element) listeAppletteNoeud.item(i);
-
 
116
				int colonne = Integer.parseInt(appletteNoeud.getAttribute("colonne"));
-
 
117
				int index = Integer.parseInt(appletteNoeud.getAttribute("index"));
-
 
118
				HashMap<String, String> infoApplette = new HashMap<String, String>();
-
 
119
				infoApplette.put("type", appletteNoeud.getAttribute("type"));
-
 
120
				infoApplette.put("colonne", appletteNoeud.getAttribute("colonne"));
-
 
121
				infoApplette.put("index", appletteNoeud.getAttribute("index"));
-
 
122
				infoApplette.put("contenu", appletteNoeud.getAttribute("contenu"));
-
 
123
				tableApplettes.put(colonne+"-"+index, infoApplette);
-
 
124
			}
-
 
125
			Iterator<String> it = tableApplettes.keySet().iterator();
-
 
126
			while (it.hasNext()) {
-
 
127
				String id = it.next();
-
 
128
				HashMap<String, String> infoApplette = tableApplettes.get(id);
-
 
129
				ajouterPortlet(infoApplette.get("type"), Integer.parseInt(infoApplette.get("colonne")), Integer.parseInt(infoApplette.get("index")), infoApplette.get("contenu"));
-
 
130
			}
72
 
131
		}
Line 73... Line 132...
73
		add(panneauPrincipal);
132
		Debug.log("Nbre aplletes c0 :"+portail.getItem(0).getItemCount());
74
		mediateur.desactiverChargement();
133
		layout();
75
	}
-
 
76
	
-
 
77
	private void ajouterPortlet(int index) {
-
 
78
		Portlet portlet = new Portlet();
-
 
79
		portlet.setHeading("Statistiques des collections");
-
 
80
		configPanel(portlet);
-
 
81
		portlet.setLayout(new FitLayout());
-
 
82
		HtmlContainer conteneurHtml = new HtmlContainer();
-
 
83
		conteneurHtml.setUrl("http://localhost/jrest/CoelStatistique/NombreDonnees");
-
 
84
		portlet.add(conteneurHtml);
134
	}
85
		portlet.setHeight(250);
-
 
86
		portail.add(portlet, index);
-
 
87
	}
-
 
88
	
-
 
89
	private void configPanel(final ContentPanel panel) {
-
 
90
		panel.setLayout(new FitLayout());
-
 
91
		panel.setCollapsible(true);
-
 
92
		panel.setAnimCollapse(false);
-
 
93
		panel.setScrollMode(Scroll.AUTO);
135
	
94
		panel.getHeader().addTool(new ToolButton("x-tool-gear", new SelectionListener<IconButtonEvent>() {
-
 
95
			@Override
-
 
96
			public void componentSelected(IconButtonEvent ce) {
136
	private void enregistrerParametres() {
97
				ContentPanel panneau = new ContentPanel();
137
		ArrayList<Portlet> applettes = getPortlets();
98
				panneau.setHeaderVisible(false);
-
 
99
				panneau.setLayout(Formulaire.creerFormLayout(350, LabelAlign.TOP));
-
 
100
				
138
		
101
				String baseUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
-
 
102
				baseUrl += "CoelStatistique/";
139
		Iterator<Portlet>  it = applettes.iterator();
103
				
-
 
104
				ListStore<InterneValeur> appletteStore = new ListStore<InterneValeur>();
-
 
105
				appletteStore.add(new InterneValeur(baseUrl+"NombreDonnees", "Nombre de données"));
140
		
106
				appletteStore.add(new InterneValeur(baseUrl+"Accueil", "Bienvenue"));
-
 
107
				appletteStore.add(new InterneValeur(baseUrl+"TypeDepot", "Types de dépôt des collections"));
141
		Document paramXml = XMLParser.parse(mediateur.getUtilisateur().getParametre());
108
				appletteStore.add(new InterneValeur(baseUrl+"NombreCollectionParStructure", "Nombre de collections par institution"));
-
 
109
				
-
 
110
				final ComboBox<InterneValeur> applettesCombo = new ComboBox<InterneValeur>();
-
 
111
				applettesCombo.setFieldLabel("Veuillez sélectionner le type d'applette");
-
 
112
				applettesCombo.setForceSelection(true);
-
 
113
				applettesCombo.setTriggerAction(TriggerAction.ALL);
-
 
114
				applettesCombo.setDisplayField("nom");
-
 
115
				applettesCombo.setStore(appletteStore);
142
		NodeList listeAccueilNoeud = paramXml.getElementsByTagName("accueil");
116
				applettesCombo.setEditable(false);
-
 
117
				applettesCombo.setWidth(300);
-
 
118
				
-
 
119
				panneau.add(applettesCombo);
-
 
120
				
-
 
121
				final Dialog configurationFenetre = new Dialog();  
-
 
122
				configurationFenetre.setHeading("Configuration de l'applette");
-
 
123
				configurationFenetre.setButtons(Dialog.OK);
-
 
124
				configurationFenetre.setSize(350, 150);  
-
 
125
				configurationFenetre.setPlain(true);  
-
 
126
				configurationFenetre.setModal(true);
-
 
127
				configurationFenetre.setBlinkModal(true);  
143
		int nbreAccueilNoeud = listeAccueilNoeud.getLength();
128
				configurationFenetre.setLayout(new FitLayout());
-
 
129
				configurationFenetre.setHideOnButtonClick(true);
144
 
130
				configurationFenetre.addWindowListener(new WindowListener(){
-
 
131
					public void windowHide(WindowEvent we) {
-
 
132
						String url = applettesCombo.getValue().getAbr();
-
 
133
						HtmlContainer conteneurHtml = new HtmlContainer();
-
 
134
						conteneurHtml.setUrl(url);
-
 
135
						conteneurHtml.recalculate();
-
 
136
						panel.removeAll();
-
 
137
						panel.add(conteneurHtml);
-
 
138
						Debug.log(url);
-
 
139
						panel.layout();
-
 
140
					}
145
		// Suppression des noeuds "accueil" existant car il ne devrait y en avoir qu'un
-
 
146
		if (nbreAccueilNoeud > 1) {
141
				});
147
			for (int i = 0; i < nbreAccueilNoeud ; i++) {
-
 
148
				paramXml.getDocumentElement().removeChild(listeAccueilNoeud.item(i));
-
 
149
			}
-
 
150
			nbreAccueilNoeud = 0;
-
 
151
		}
-
 
152
		
142
				configurationFenetre.add(panneau);
153
		// Création du nouveau noeud accueil
-
 
154
		Node accueilNoeud = null;
-
 
155
		Element accueilElement = paramXml.createElement("accueil");
-
 
156
		if (nbreAccueilNoeud == 0) {
-
 
157
			accueilNoeud = paramXml.getDocumentElement().appendChild(accueilElement);
-
 
158
		} else if (nbreAccueilNoeud == 1) {
-
 
159
			accueilNoeud = listeAccueilNoeud.item(0);
-
 
160
			paramXml.getDocumentElement().replaceChild(accueilElement, accueilNoeud);
143
				configurationFenetre.show();
161
			accueilNoeud = paramXml.getElementsByTagName("accueil").item(0);
-
 
162
		}
-
 
163
		
-
 
164
		// Ajout des noeuds "applette" au noeud "accueil"
-
 
165
		while (it.hasNext()) {
-
 
166
			Portlet applette = it.next();
-
 
167
			String index = Integer.toString(portail.getPortletIndex(applette));
-
 
168
			String colonne = Integer.toString(portail.getPortletColumn(applette));
-
 
169
			String contenu = applette.getData("contenu");
144
			}
170
			Element appletteElement = paramXml.createElement("applette");
-
 
171
			appletteElement.setAttribute("type", "statistique");
-
 
172
			appletteElement.setAttribute("colonne", colonne);
-
 
173
			appletteElement.setAttribute("index", index);
-
 
174
			appletteElement.setAttribute("contenu", contenu);
-
 
175
			accueilNoeud.appendChild(appletteElement);
145
		}));
176
		}
-
 
177
		
-
 
178
		Debug.log("Enregistrer:"+paramXml.toString());
-
 
179
		mediateur.getUtilisateur().setParametre(paramXml.toString());
-
 
180
		mediateur.modifierUtilisateur();
-
 
181
	}
-
 
182
	
-
 
183
	private ArrayList<Portlet> getPortlets() {
-
 
184
		ArrayList<Portlet> applettes = new ArrayList<Portlet>();
-
 
185
		for (int i = 0; i < 3; i++) {
-
 
186
			int nbreApplette = portail.getItem(i).getItemCount();
146
		panel.getHeader().addTool(new ToolButton("x-tool-close", new SelectionListener<IconButtonEvent>() {
187
			if (nbreApplette > 0) {
147
			@Override
188
				for (int j = 0; j < nbreApplette; j++) {
-
 
189
					applettes.add((Portlet) portail.getItem(i).getItem(j));
-
 
190
				}
-
 
191
			}
-
 
192
		}
-
 
193
		return applettes;
-
 
194
	}
-
 
195
	
-
 
196
	private void ajouterPortlet() {
-
 
197
		ajouterPortlet("statistique", 0, 0, null);
-
 
198
	}
-
 
199
	
-
 
200
	private void ajouterPortlet(String type, int colonne, int index, String contenu) {
-
 
201
		Debug.log("Ajout:"+type+"-"+colonne+"-"+index+"-"+contenu);
-
 
202
		Portlet portlet = null;
-
 
203
		if (type.equals("statistique")) {
148
			public void componentSelected(IconButtonEvent ce) {
204
			portlet = new AppletteStatistique(contenu);
Line 149... Line 205...
149
				panel.removeFromParent();
205
		}
150
			}
206
		portail.insert(portlet, index, colonne);
151
		}));
207
		layout();
152
	}
208
	}
153
	
209
	
154
	public void rafraichir(Object nouvellesDonnees) {
-
 
-
 
210
	public void rafraichir(Object nouvellesDonnees) {
155
		if (nouvellesDonnees instanceof Information) {
211
		if (nouvellesDonnees instanceof Information) {
156
			Information info = (Information) nouvellesDonnees;
212
			Information info = (Information) nouvellesDonnees;
157
			String type = info.getType(); 
213
			String type = info.getType(); 
158
			if (type.equals("")) {
214
			if (type.equals("maj_utilisateur")) {
159
				
215
				chargerParametres();