Subversion Repositories eFlore/Applications.coel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
834 aurelien 1
package org.tela_botanica.client.vues;
2
 
908 aurelien 3
import java.util.Iterator;
4
 
834 aurelien 5
import org.tela_botanica.client.ComposantClass;
6
import org.tela_botanica.client.ComposantId;
7
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.modeles.ProjetListe;
10
import org.tela_botanica.client.modeles.Projet;
908 aurelien 11
import org.tela_botanica.client.modeles.ValeurListe;
834 aurelien 12
 
908 aurelien 13
import com.extjs.gxt.ui.client.Style.SortDir;
834 aurelien 14
import com.extjs.gxt.ui.client.util.Format;
15
import com.extjs.gxt.ui.client.util.Params;
16
import com.extjs.gxt.ui.client.widget.ContentPanel;
17
import com.extjs.gxt.ui.client.widget.Html;
18
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
19
import com.google.gwt.core.client.GWT;
20
 
21
public class ProjetDetailVue extends DetailVue implements Rafraichissable {
22
 
23
	private String enteteTpl = null;
24
	private String contenuTpl = null;
25
 
26
	private ContentPanel panneauPrincipal = null;
27
	private Html entete = null;
28
	private Html contenu = null;
29
 
30
	private Projet projet = null;
31
	private boolean projetChargementOk = false;
908 aurelien 32
 
33
	private String listeValeurIndexationDureeId = "dureesIndexation";
34
	private int listeValeurIndexationDureeInt = 1072;
35
	private String listeValeurIndexationFrequenceId = "frequencesIndexation";
36
	private int listeValeurIndexationFrequenceInt = 1073;
37
	private String listeLanguesId = "langues";
38
	private int listeLanguesInt = 1071;
39
 
40
	private ValeurListe valeurListeIndexationDuree = null;
41
	private ValeurListe valeurListeIndexationFrequence = null;
42
	private ValeurListe valeurListeLangue = null;
43
 
44
	private boolean listeIndexationDureeChargee = false;
45
	private boolean listeIndexationFrequenceChargee = false;
46
	private boolean listeLangueChargee = false;
834 aurelien 47
 
48
	public ProjetDetailVue(Mediateur mediateurCourant) {
49
		super(mediateurCourant);
50
 
51
		initialiserTousLesTpl();
52
 
53
		panneauPrincipal = new ContentPanel();
54
		panneauPrincipal.setLayout(new FitLayout());
55
		panneauPrincipal.setHeaderVisible(false);
56
		panneauPrincipal.setBodyBorder(false);
57
 
58
	    entete = new Html();
59
	    entete.setId(ComposantId.ZONE_DETAIL_ENTETE);
60
	    panneauPrincipal.setTopComponent(entete);
61
 
62
	    contenu = new Html();
63
	    panneauPrincipal.add(contenu);
64
 
65
		add(panneauPrincipal);
908 aurelien 66
 
67
		mediateurCourant.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId);
68
		mediateurCourant.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId);
69
		mediateurCourant.obtenirListeValeurEtRafraichir(this, listeLanguesId);
834 aurelien 70
	}
71
 
72
	private void initialiserTousLesTpl() {
73
		initialiserEnteteHtmlTpl();
74
		initialiserGeneralTpl();
75
	}
76
 
77
	private void initialiserEnteteHtmlTpl() {
78
		enteteTpl =
79
			"<div id='{css_id}'>"+
877 aurelien 80
			"	<h1>{projet}</h1>"+
81
			"	<h2>{abreviation} <span class='{css_meta}'>{projet} <br /> {i18n_id}:{id} - {guid}</span></h2>" +
834 aurelien 82
			"</div>";
83
	}
84
 
85
	private void initialiserGeneralTpl() {
86
		contenuTpl =
87
			"<div class='{css_corps}'>"+
88
			"	<div class='{css_fieldset}'>"+
89
			"		<h2>{i18n_titre_detail}</h2>"+
877 aurelien 90
			"		<span class='{css_label}'>{i18n_nom} :</span> {nom}<br />"+
91
			"		<span class='{css_label}'>{i18n_abreviation} :</span> {abreviation}<br />"+
92
			"		<span class='{css_label}'>{i18n_resume} :</span> {resume}<br />"+
93
			"		<span class='{css_label}'>{i18n_description} :</span> {description}<br />"+
94
			"		<span class='{css_label}'>{i18n_citation} :</span> {citation}<br />"+
95
			"		<span class='{css_label}'>{i18n_licence} :</span> {licence}<br />"+
96
			"		<span class='{css_label}'>{i18n_langue} :</span> {langue}<br />"+
97
			"		<span class='{css_label}'>{i18n_indexation_heure} :</span> {indexation_heure}<br />"+
98
			"		<span class='{css_label}'>{i18n_indexation_duree} :</span> {indexation_duree}<br />"+
99
			"		<span class='{css_label}'>{i18n_indexation_frequence} :</span> {indexation_frequence}<br />"+
100
			"		<span class='{css_label}'>{i18n_mark_public} :</span> {mark_public}<br />"+
834 aurelien 101
			"	</div>"+
102
			"	<hr class='{css_clear}'/>"+
103
			"</div>";
104
	}
105
 
106
	public void afficherDetail() {
107
		if (projet != null) {
108
			afficherEntete();
109
			afficherDetailProjet();
110
		}
111
		layout();
112
	}
113
 
114
	private void afficherEntete() {
115
		Params enteteParams = new Params();
116
		enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE);
117
		enteteParams.set("css_meta", ComposantClass.META);
118
 
119
		enteteParams.set("i18n_id", i18nC.id());
120
 
121
		enteteParams.set("id", projet.getId());
122
		enteteParams.set("guid", getGuid());
123
		enteteParams.set("projet", construireTxtProjet(projet.getId()));
877 aurelien 124
		enteteParams.set("abreviation", projet.getAbreviation());
834 aurelien 125
		GWT.log("entete généré", null);
126
		String eHtml = Format.substitute(enteteTpl, enteteParams);
127
		entete.getElement().setInnerHTML(eHtml);
128
	}
129
 
130
	public String getGuid() {
131
		String guid = "URN:tela-botanica.org:";
132
		guid += "coel"+projet.getId()+":";
133
		guid += "pro"+projet.getId();
134
		return guid;
135
	}
136
 
137
	public void afficherDetailProjet() {
138
		Params contenuParams = new Params();
139
 
877 aurelien 140
		contenuParams.set("i18n_titre_detail", i18nC.projet());
834 aurelien 141
 
877 aurelien 142
		contenuParams.set("i18n_nom", i18nC.nom());
143
		contenuParams.set("nom", projet.getNom());
144
 
145
		contenuParams.set("i18n_abreviation", i18nC.projetAbreviation());
146
		contenuParams.set("abreviation", projet.getAbreviation());
147
 
148
		contenuParams.set("i18n_resume", i18nC.projetResume());
149
		contenuParams.set("resume", projet.getResume());
150
 
151
		contenuParams.set("i18n_description", i18nC.projetDescription());
152
		contenuParams.set("description", projet.getDescription());
153
 
154
		contenuParams.set("i18n_mots_cles", i18nC.projetMotsCles());
155
		contenuParams.set("mots_cles", projet.getMotsCles());
156
 
157
		contenuParams.set("i18n_citation", i18nC.projetCitation());
158
		contenuParams.set("citation", projet.getCitation());
159
 
160
		contenuParams.set("i18n_licence", i18nC.projetLicence());
161
		contenuParams.set("licence", projet.getLicence());
162
 
163
		contenuParams.set("i18n_langue", i18nC.projetLangue());
908 aurelien 164
		contenuParams.set("langue", obtenirValeurLangue(projet.getLangue()));
877 aurelien 165
 
166
		contenuParams.set("i18n_indexation_heure", i18nC.projetIndexationHeure());
167
		contenuParams.set("indexation_heure", projet.getIndexationHeure());
168
 
169
		contenuParams.set("i18n_indexation_duree", i18nC.projetIndexationDuree());
908 aurelien 170
		contenuParams.set("indexation_duree", obtenirValeurIndexationDuree(projet.getIndexationDuree()));
877 aurelien 171
 
172
		contenuParams.set("i18n_indexation_frequence", i18nC.projetIndexationFrequence());
908 aurelien 173
		contenuParams.set("indexation_frequence", obtenirValeurIndexationFrequence(projet.getIndexationFreq()));
877 aurelien 174
 
175
		contenuParams.set("i18n_mark_public", i18nC.projetMarkPublic());
908 aurelien 176
		contenuParams.set("mark_public", obtenirValeurPublic(projet.getMarkPublic()));
877 aurelien 177
 
834 aurelien 178
		String gHtml = formaterContenu(contenuTpl, contenuParams);
179
		contenu.getElement().setInnerHTML(gHtml);
180
	}
181
 
182
	public void rafraichir(Object nouvellesDonnees) {
908 aurelien 183
 
834 aurelien 184
		if (nouvellesDonnees instanceof Projet) {
185
			projet = (Projet) nouvellesDonnees;
186
			projetChargementOk = true;
187
		} else if (nouvellesDonnees instanceof ProjetListe) {
188
			projets = (ProjetListe) nouvellesDonnees;
189
			projetsChargementOk = true;
190
			GWT.log("projets recu", null);
908 aurelien 191
		} else if(nouvellesDonnees instanceof ValeurListe) {
192
			ValeurListe nValeurListe = (ValeurListe)nouvellesDonnees;
193
 
194
			if(nValeurListe.getId() == listeValeurIndexationDureeInt) {
195
				valeurListeIndexationDuree = (ValeurListe)nouvellesDonnees;
196
				listeIndexationDureeChargee = true;
197
			}
198
 
199
			if(nValeurListe.getId() == listeValeurIndexationFrequenceInt) {
200
				valeurListeIndexationFrequence = (ValeurListe)nouvellesDonnees;
201
				listeIndexationFrequenceChargee = true;
202
			}
203
 
204
			if(nValeurListe.getId() == listeLanguesInt) {
205
				valeurListeLangue = (ValeurListe)nouvellesDonnees;
206
				listeLangueChargee = true;
207
			}
208
 
209
			GWT.log("une liste de valeurs est arrivée "+nValeurListe.getId(), null);
210
		}
211
 
212
		else {
834 aurelien 213
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
214
		}
215
 
216
		if (avoirDonneesChargees()) {
217
			afficherDetail();
218
		}
219
	}
220
 
221
	private boolean avoirDonneesChargees() {
222
		boolean ok = false;
908 aurelien 223
		if (projetsChargementOk && projetChargementOk && listeIndexationDureeChargee && listeLangueChargee && listeLangueChargee) {
834 aurelien 224
			ok = true;
225
		}
226
		return ok;
227
	}
908 aurelien 228
 
229
	private String obtenirValeurIndexationDuree(String id) {
230
		if(valeurListeIndexationDuree.get(id) != null) {
231
			return valeurListeIndexationDuree.get(id).getNom();
232
		}
233
		return "";
234
	}
235
 
236
	private String obtenirValeurIndexationFrequence(String id) {
237
		if(valeurListeIndexationFrequence.get(id) != null) {
238
			return valeurListeIndexationFrequence.get(id).getNom();
239
		}
240
		return "";
241
	}
242
 
243
	private String obtenirValeurLangue(String id) {
244
		if(valeurListeLangue.get(id) != null) {
245
			return valeurListeLangue.get(id).getNom();
246
		}
247
		return "";
248
	}
249
 
250
	private String obtenirValeurPublic(String ouiNon) {
251
		if(ouiNon.equals("1")) {
252
			return i18nC.oui();
253
		}
254
		return i18nC.non();
255
	}
834 aurelien 256
}