Subversion Repositories eFlore/Applications.coel

Rev

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