Subversion Repositories eFlore/Applications.coel

Rev

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