Subversion Repositories eFlore/Applications.coel

Rev

Rev 1297 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
935 jpm 1
package org.tela_botanica.client.vues.projet;
834 aurelien 2
 
3
import org.tela_botanica.client.ComposantClass;
4
import org.tela_botanica.client.ComposantId;
5
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
908 aurelien 7
import org.tela_botanica.client.modeles.ValeurListe;
935 jpm 8
import org.tela_botanica.client.modeles.projet.Projet;
9
import org.tela_botanica.client.modeles.projet.ProjetListe;
1114 jpm 10
import org.tela_botanica.client.util.UtilString;
936 jpm 11
import org.tela_botanica.client.vues.DetailVue;
834 aurelien 12
 
1297 cyprien 13
import com.extjs.gxt.ui.client.Style.Scroll;
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;
1121 jpm 25
	private String indexationTpl = null;
834 aurelien 26
 
27
	private ContentPanel panneauPrincipal = null;
28
	private Html entete = null;
29
	private Html contenu = null;
30
 
928 jpm 31
	private final String listeValeurIndexationDureeId = "dureesIndexation";
32
	private final int listeValeurIndexationDureeInt = 1072;
33
	private final String listeValeurIndexationFrequenceId = "frequencesIndexation";
34
	private final int listeValeurIndexationFrequenceInt = 1073;
35
	private final String listeLanguesId = "langues";
36
	private final int listeLanguesInt = 1071;
37
 
834 aurelien 38
	private Projet projet = null;
39
	private boolean projetChargementOk = false;
928 jpm 40
	private ValeurListe valeurListeIndexationDuree = null;
41
	private boolean listeIndexationDureeChargee = false;
908 aurelien 42
	private ValeurListe valeurListeIndexationFrequence = null;
928 jpm 43
	private boolean listeIndexationFrequenceChargee = false;
908 aurelien 44
	private ValeurListe valeurListeLangue = null;
45
	private boolean listeLangueChargee = false;
834 aurelien 46
 
47
	public ProjetDetailVue(Mediateur mediateurCourant) {
48
		super(mediateurCourant);
49
 
50
		initialiserTousLesTpl();
51
 
52
		panneauPrincipal = new ContentPanel();
53
		panneauPrincipal.setLayout(new FitLayout());
54
		panneauPrincipal.setHeaderVisible(false);
55
		panneauPrincipal.setBodyBorder(false);
1297 cyprien 56
		panneauPrincipal.setScrollMode(Scroll.AUTO);
834 aurelien 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();
1121 jpm 75
		initialiserIndexationTpl();
834 aurelien 76
	}
77
 
78
	private void initialiserEnteteHtmlTpl() {
79
		enteteTpl =
80
			"<div id='{css_id}'>"+
877 aurelien 81
			"	<h1>{projet}</h1>"+
82
			"	<h2>{abreviation} <span class='{css_meta}'>{projet} <br /> {i18n_id}:{id} - {guid}</span></h2>" +
834 aurelien 83
			"</div>";
84
	}
85
 
86
	private void initialiserGeneralTpl() {
87
		contenuTpl =
88
			"<div class='{css_corps}'>"+
89
			"	<div class='{css_fieldset}'>"+
928 jpm 90
			"		<h2>{i18n_titre_info_generale}</h2>"+
877 aurelien 91
			"		<span class='{css_label}'>{i18n_nom} :</span> {nom}<br />"+
92
			"		<span class='{css_label}'>{i18n_abreviation} :</span> {abreviation}<br />"+
93
			"		<span class='{css_label}'>{i18n_resume} :</span> {resume}<br />"+
94
			"		<span class='{css_label}'>{i18n_description} :</span> {description}<br />"+
1121 jpm 95
			"		<span class='{css_label}'>{i18n_url} :</span> <a class='{css_lien_ext}' href='{url}' onclick='window.open(this.href); return false;'>{url}</a><br />"+
928 jpm 96
			"	</div>"+
97
			"	<div class='{css_fieldset}'>"+
98
			"		<h2>{i18n_titre_complement}</h2>"+
99
			"		<span class='{css_label}'>{i18n_mot_cles} :</span> {mot_cles}<br />"+
877 aurelien 100
			"		<span class='{css_label}'>{i18n_citation} :</span> {citation}<br />"+
101
			"		<span class='{css_label}'>{i18n_licence} :</span> {licence}<br />"+
102
			"		<span class='{css_label}'>{i18n_langue} :</span> {langue}<br />"+
928 jpm 103
			"	</div>"+
104
			"	<hr class='{css_clear}'/>"+
105
			"	<div class='{css_fieldset}'>"+
106
			"		<h2>{i18n_titre_indexation}</h2>"+
877 aurelien 107
			"		<span class='{css_label}'>{i18n_mark_public} :</span> {mark_public}<br />"+
1121 jpm 108
			"		{indexation}"+
834 aurelien 109
			"	</div>"+
110
			"</div>";
111
	}
112
 
1121 jpm 113
	private void initialiserIndexationTpl() {
114
		indexationTpl =
115
			"		<span class='{css_label}'>{i18n_indexation_heure} :</span> {indexation_heure}<br />"+
116
			"		<span class='{css_label}'>{i18n_indexation_duree} :</span> {indexation_duree}<br />"+
117
			"		<span class='{css_label}'>{i18n_indexation_frequence} :</span> {indexation_frequence}<br />";
118
	}
119
 
834 aurelien 120
	public void afficherDetail() {
121
		if (projet != null) {
122
			afficherEntete();
123
			afficherDetailProjet();
124
		}
125
		layout();
126
	}
127
 
128
	private void afficherEntete() {
129
		Params enteteParams = new Params();
130
		enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE);
131
		enteteParams.set("css_meta", ComposantClass.META);
132
 
133
		enteteParams.set("i18n_id", i18nC.id());
134
 
135
		enteteParams.set("id", projet.getId());
136
		enteteParams.set("guid", getGuid());
137
		enteteParams.set("projet", construireTxtProjet(projet.getId()));
877 aurelien 138
		enteteParams.set("abreviation", projet.getAbreviation());
1327 cyprien 139
 
834 aurelien 140
		String eHtml = Format.substitute(enteteTpl, enteteParams);
141
		entete.getElement().setInnerHTML(eHtml);
142
	}
143
 
144
	public String getGuid() {
145
		String guid = "URN:tela-botanica.org:";
146
		guid += "coel"+projet.getId()+":";
147
		guid += "pro"+projet.getId();
148
		return guid;
149
	}
150
 
151
	public void afficherDetailProjet() {
152
		Params contenuParams = new Params();
153
 
928 jpm 154
		contenuParams.set("i18n_titre_info_generale", i18nC.projetTitreInfoGenerale());
834 aurelien 155
 
877 aurelien 156
		contenuParams.set("i18n_nom", i18nC.nom());
157
		contenuParams.set("nom", projet.getNom());
158
 
159
		contenuParams.set("i18n_abreviation", i18nC.projetAbreviation());
160
		contenuParams.set("abreviation", projet.getAbreviation());
161
 
162
		contenuParams.set("i18n_resume", i18nC.projetResume());
163
		contenuParams.set("resume", projet.getResume());
164
 
165
		contenuParams.set("i18n_description", i18nC.projetDescription());
166
		contenuParams.set("description", projet.getDescription());
167
 
1121 jpm 168
		contenuParams.set("i18n_url", i18nC.projetUrl());
169
		contenuParams.set("url", projet.getUrl());
170
 
928 jpm 171
		contenuParams.set("i18n_titre_complement", i18nC.projetTitreComplement());
877 aurelien 172
 
928 jpm 173
		contenuParams.set("i18n_mot_cles", i18nC.projetMotsCles());
174
		contenuParams.set("mot_cles", projet.getMotsCles());
175
 
877 aurelien 176
		contenuParams.set("i18n_citation", i18nC.projetCitation());
177
		contenuParams.set("citation", projet.getCitation());
178
 
179
		contenuParams.set("i18n_licence", i18nC.projetLicence());
180
		contenuParams.set("licence", projet.getLicence());
181
 
182
		contenuParams.set("i18n_langue", i18nC.projetLangue());
908 aurelien 183
		contenuParams.set("langue", obtenirValeurLangue(projet.getLangue()));
877 aurelien 184
 
928 jpm 185
		contenuParams.set("i18n_titre_indexation", i18nC.projetTitreIndexation());
186
 
877 aurelien 187
		contenuParams.set("i18n_mark_public", i18nC.projetMarkPublic());
908 aurelien 188
		contenuParams.set("mark_public", obtenirValeurPublic(projet.getMarkPublic()));
877 aurelien 189
 
1121 jpm 190
		contenuParams.set("indexation", creerIndexation());
191
 
834 aurelien 192
		String gHtml = formaterContenu(contenuTpl, contenuParams);
193
		contenu.getElement().setInnerHTML(gHtml);
194
	}
195
 
1114 jpm 196
	private String corrigerIndexationHeure(String heureMinuteSecondeEnBdd) {
197
		String heureMinute = "";
198
		if (!UtilString.isEmpty(heureMinuteSecondeEnBdd)) {
199
			heureMinute = heureMinuteSecondeEnBdd.replaceAll(":00$", "");
200
		}
201
		return heureMinute;
202
	}
203
 
1121 jpm 204
	private String creerIndexation() {
205
		String html = "";
206
		if (projet.getMarkPublic().equals("1")) {
207
			Params indexationParams = new Params();
208
 
209
			indexationParams.set("i18n_indexation_heure", i18nC.projetIndexationHeure());
210
			indexationParams.set("indexation_heure", corrigerIndexationHeure(projet.getIndexationHeure()));
211
 
212
			indexationParams.set("i18n_indexation_duree", i18nC.projetIndexationDuree());
213
			indexationParams.set("indexation_duree", obtenirValeurIndexationDuree(projet.getIndexationDuree()));
214
 
215
			indexationParams.set("i18n_indexation_frequence", i18nC.projetIndexationFrequence());
216
			indexationParams.set("indexation_frequence", obtenirValeurIndexationFrequence(projet.getIndexationFreq()));
217
 
218
			html = Format.substitute(indexationTpl, indexationParams);
219
		}
220
		return html;
221
	}
222
 
834 aurelien 223
	public void rafraichir(Object nouvellesDonnees) {
224
		if (nouvellesDonnees instanceof Projet) {
225
			projet = (Projet) nouvellesDonnees;
226
			projetChargementOk = true;
227
		} else if (nouvellesDonnees instanceof ProjetListe) {
228
			projets = (ProjetListe) nouvellesDonnees;
229
			projetsChargementOk = true;
908 aurelien 230
		} else if(nouvellesDonnees instanceof ValeurListe) {
231
			ValeurListe nValeurListe = (ValeurListe)nouvellesDonnees;
232
 
924 jpm 233
			if (nValeurListe.getId() == listeValeurIndexationDureeInt) {
908 aurelien 234
				valeurListeIndexationDuree = (ValeurListe)nouvellesDonnees;
235
				listeIndexationDureeChargee = true;
236
			}
237
 
924 jpm 238
			if (nValeurListe.getId() == listeValeurIndexationFrequenceInt) {
908 aurelien 239
				valeurListeIndexationFrequence = (ValeurListe)nouvellesDonnees;
240
				listeIndexationFrequenceChargee = true;
241
			}
242
 
924 jpm 243
			if (nValeurListe.getId() == listeLanguesInt) {
908 aurelien 244
				valeurListeLangue = (ValeurListe)nouvellesDonnees;
245
				listeLangueChargee = true;
246
			}
928 jpm 247
		} else {
834 aurelien 248
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
249
		}
250
 
251
		if (avoirDonneesChargees()) {
252
			afficherDetail();
253
		}
254
	}
255
 
256
	private boolean avoirDonneesChargees() {
257
		boolean ok = false;
928 jpm 258
		if (projetsChargementOk && projetChargementOk && listeIndexationDureeChargee && listeIndexationFrequenceChargee && listeLangueChargee) {
834 aurelien 259
			ok = true;
260
		}
261
		return ok;
262
	}
908 aurelien 263
 
264
	private String obtenirValeurIndexationDuree(String id) {
924 jpm 265
		if (valeurListeIndexationDuree.get(id) != null) {
908 aurelien 266
			return valeurListeIndexationDuree.get(id).getNom();
267
		}
268
		return "";
269
	}
270
 
271
	private String obtenirValeurIndexationFrequence(String id) {
924 jpm 272
		if (valeurListeIndexationFrequence.get(id) != null) {
908 aurelien 273
			return valeurListeIndexationFrequence.get(id).getNom();
274
		}
275
		return "";
276
	}
277
 
278
	private String obtenirValeurLangue(String id) {
924 jpm 279
		if (valeurListeLangue.get(id) != null) {
908 aurelien 280
			return valeurListeLangue.get(id).getNom();
281
		}
282
		return "";
283
	}
284
 
285
	private String obtenirValeurPublic(String ouiNon) {
924 jpm 286
		if (ouiNon.equals("1")) {
908 aurelien 287
			return i18nC.oui();
288
		}
289
		return i18nC.non();
290
	}
834 aurelien 291
}