Subversion Repositories eFlore/Applications.coel

Rev

Rev 781 | Rev 786 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 781 Rev 782
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.Iterator;
4
import java.util.Iterator;
5
import java.util.List;
5
import java.util.List;
6
import java.util.Set;
6
import java.util.Set;
7
 
7
 
8
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.Mediateur;
9
import org.tela_botanica.client.RegistreId;
9
import org.tela_botanica.client.RegistreId;
10
import org.tela_botanica.client.interfaces.Rafraichissable;
10
import org.tela_botanica.client.interfaces.Rafraichissable;
11
import org.tela_botanica.client.modeles.Information;
11
import org.tela_botanica.client.modeles.Information;
12
import org.tela_botanica.client.modeles.MenuApplicationId;
12
import org.tela_botanica.client.modeles.MenuApplicationId;
13
import org.tela_botanica.client.modeles.Personne;
13
import org.tela_botanica.client.modeles.Personne;
14
import org.tela_botanica.client.modeles.PersonneListe;
14
import org.tela_botanica.client.modeles.PersonneListe;
15
import org.tela_botanica.client.modeles.Publication;
15
import org.tela_botanica.client.modeles.Publication;
16
import org.tela_botanica.client.modeles.PublicationAPersonne;
16
import org.tela_botanica.client.modeles.PublicationAPersonne;
17
import org.tela_botanica.client.modeles.PublicationAPersonneListe;
17
import org.tela_botanica.client.modeles.PublicationAPersonneListe;
18
import org.tela_botanica.client.modeles.PublicationListe;
18
import org.tela_botanica.client.modeles.PublicationListe;
19
import org.tela_botanica.client.modeles.Structure;
19
import org.tela_botanica.client.modeles.Structure;
20
import org.tela_botanica.client.modeles.StructureListe;
20
import org.tela_botanica.client.modeles.StructureListe;
-
 
21
import org.tela_botanica.client.util.UtilArray;
21
 
22
 
22
import com.extjs.gxt.ui.client.Registry;
23
import com.extjs.gxt.ui.client.Registry;
23
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
24
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
24
import com.extjs.gxt.ui.client.event.BaseEvent;
25
import com.extjs.gxt.ui.client.event.BaseEvent;
25
import com.extjs.gxt.ui.client.event.ButtonEvent;
26
import com.extjs.gxt.ui.client.event.ButtonEvent;
26
import com.extjs.gxt.ui.client.event.ComponentEvent;
27
import com.extjs.gxt.ui.client.event.ComponentEvent;
27
import com.extjs.gxt.ui.client.event.Events;
28
import com.extjs.gxt.ui.client.event.Events;
28
import com.extjs.gxt.ui.client.event.KeyListener;
29
import com.extjs.gxt.ui.client.event.KeyListener;
29
import com.extjs.gxt.ui.client.event.Listener;
30
import com.extjs.gxt.ui.client.event.Listener;
30
import com.extjs.gxt.ui.client.event.SelectionListener;
31
import com.extjs.gxt.ui.client.event.SelectionListener;
31
import com.extjs.gxt.ui.client.store.ListStore;
32
import com.extjs.gxt.ui.client.store.ListStore;
32
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
33
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
33
import com.extjs.gxt.ui.client.widget.LayoutContainer;
34
import com.extjs.gxt.ui.client.widget.LayoutContainer;
34
import com.extjs.gxt.ui.client.widget.MessageBox;
35
import com.extjs.gxt.ui.client.widget.MessageBox;
35
import com.extjs.gxt.ui.client.widget.button.Button;
36
import com.extjs.gxt.ui.client.widget.button.Button;
36
import com.extjs.gxt.ui.client.widget.form.ComboBox;
37
import com.extjs.gxt.ui.client.widget.form.ComboBox;
37
import com.extjs.gxt.ui.client.widget.form.DateField;
38
import com.extjs.gxt.ui.client.widget.form.DateField;
38
import com.extjs.gxt.ui.client.widget.form.FieldSet;
39
import com.extjs.gxt.ui.client.widget.form.FieldSet;
39
import com.extjs.gxt.ui.client.widget.form.FormPanel;
40
import com.extjs.gxt.ui.client.widget.form.FormPanel;
40
import com.extjs.gxt.ui.client.widget.form.Radio;
41
import com.extjs.gxt.ui.client.widget.form.Radio;
41
import com.extjs.gxt.ui.client.widget.form.TextField;
42
import com.extjs.gxt.ui.client.widget.form.TextField;
42
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
43
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
43
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
44
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
44
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
45
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
45
import com.extjs.gxt.ui.client.widget.layout.FormData;
46
import com.extjs.gxt.ui.client.widget.layout.FormData;
46
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
47
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
47
import com.google.gwt.core.client.GWT;
48
import com.google.gwt.core.client.GWT;
48
import com.google.gwt.user.client.Window;
49
import com.google.gwt.user.client.Window;
49
import com.google.gwt.user.client.ui.HTML;
50
import com.google.gwt.user.client.ui.HTML;
50
import com.google.gwt.user.client.ui.Label;
51
import com.google.gwt.user.client.ui.Label;
51
 
52
 
52
public class PublicationForm extends Formulaire implements Rafraichissable {
53
public class PublicationForm extends Formulaire implements Rafraichissable {
53
	
54
	
54
	private Publication publi;
55
	private Publication publi;
55
	private PublicationAPersonneListe pubAPersonneListeAuteur = null;
56
	private PublicationAPersonneListe pubAPersonneListeAuteur = null;
56
	
57
	
57
	
58
	
58
	private FieldSet auteursFieldset = null;
59
	private FieldSet auteursFieldset = null;
59
	private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
60
	private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
60
	private PersonneListe listePersonneAuteur = null;
61
	private PersonneListe listePersonneAuteur = null;
61
	private LayoutContainer conteneurChamps;
62
	private LayoutContainer conteneurChamps;
62
	private ListStore<Personne> auteursStorePartage = null;
63
	private ListStore<Personne> auteursStorePartage = null;
63
	
64
	
64
	private FieldSet generalitesFieldset = null;
65
	private FieldSet generalitesFieldset = null;
65
	private TextField<String> nomArticle = null;
66
	private TextField<String> nomArticle = null;
66
	private TextField<String> intituleCollPub = null;
67
	private TextField<String> intituleCollPub = null;
67
	private TextField<String> uriPub = null;
68
	private TextField<String> uriPub = null;
68
	
69
	
69
	private FieldSet editionFieldset = null;
70
	private FieldSet editionFieldset = null;
70
	private ComboBox<Structure> comboListeEditeurs = null;
71
	private ComboBox<Structure> comboListeEditeurs = null;
71
	private ListStore<Structure> storeEditeurs = null;
72
	private ListStore<Structure> storeEditeurs = null;
72
	private TextField<String> datePub = null;
73
	private TextField<String> datePub = null;
73
	private TextField<String> tomPub = null;
74
	private TextField<String> tomPub = null;
74
	private TextField<String> fasciculePub = null;
75
	private TextField<String> fasciculePub = null;
75
	private TextField<String> pagesPub = null;
76
	private TextField<String> pagesPub = null;
76
	
77
	
77
	private String idStructureEdition = ""; 
78
	private String idStructureEdition = ""; 
78
	private String idPublication = "";
79
	private String idPublication = "";
79
	private String idProjet = "";
80
	private String idProjet = "";
80
	
81
	
81
	private String idAuteurs = "";
82
	private String idAuteurs = "";
82
	
83
	
83
	private boolean formValide = false;
84
	private boolean formValide = false;
84
	private boolean validationPublication = false;
85
	private boolean validationPublication = false;
85
	private boolean validationAuteurs = false;
86
	private boolean validationAuteurs = false;
86
	
87
	
87
	protected boolean listeAuteurInitialisee = false;
88
	protected boolean listePersonneAuteurInitialisee = false;
-
 
89
	protected boolean listeAuteurPublicationInitialisee = false;
-
 
90
	
88
	protected boolean listeAuteurPublicationInitialisee = false;
91
	private Rafraichissable vueExterneARafraichirApresValidation = null;
-
 
92
 
-
 
93
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
-
 
94
		initialiserPublicationForm(mediateurCourrant, publicationId);
-
 
95
	}
-
 
96
 
-
 
97
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
-
 
98
		initialiserPublicationForm(mediateurCourrant, publicationId);
-
 
99
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
-
 
100
	}
89
 
101
	
90
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
102
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
91
		String modeDeCreation = Formulaire.MODE_AJOUTER;
103
		String modeDeCreation = Formulaire.MODE_AJOUTER;
92
		if (publicationId != null) {
104
		if (publicationId != null) {
93
			modeDeCreation = Formulaire.MODE_MODIFIER;
105
			modeDeCreation = Formulaire.MODE_MODIFIER;
94
		}
106
		}
95
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
107
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
96
		chargerOntologie();
108
		chargerOntologie();
97
		
109
		
98
		panneauFormulaire.setLayout(new FlowLayout());
110
		panneauFormulaire.setLayout(new FlowLayout());
99
		String titre = (modeDeCreation.equals(Formulaire.MODE_AJOUTER) ? "Ajout d'une publication" : "Modification d'une publication");
111
		String titre = (modeDeCreation.equals(Formulaire.MODE_AJOUTER) ? "Ajout d'une publication" : "Modification d'une publication");
100
		panneauFormulaire.setHeading(titre);
112
		panneauFormulaire.setHeading(titre);
101
 
113
 
102
		creerZoneAuteurs();
114
		creerZoneAuteurs();
103
		panneauFormulaire.add(auteursFieldset);
115
		panneauFormulaire.add(auteursFieldset);
104
		
116
		
105
		creerZoneGeneralites();
117
		creerZoneGeneralites();
106
		panneauFormulaire.add(generalitesFieldset);
118
		panneauFormulaire.add(generalitesFieldset);
107
		
119
		
108
		creerZoneEdition();
120
		creerZoneEdition();
109
		panneauFormulaire.add(editionFieldset);
121
		panneauFormulaire.add(editionFieldset);
110
				
122
				
111
		mediateurCourrant.selectionnerPublication(this, publicationId);
123
		mediateurCourrant.selectionnerPublication(this, publicationId);
112
		mediateurCourrant.selectionnerAuteurAPublication(this, publicationId);
124
		mediateurCourrant.selectionnerAuteurAPublication(this, publicationId);
113
	}
125
	}
114
 
126
	
115
	private void chargerOntologie() {
127
	private void chargerOntologie() {
116
		mediateur.clicObtenirListeEditeurs(this);
128
		mediateur.clicObtenirListeEditeurs(this);
117
		mediateur.clicObtenirListeAuteurs(this);
129
		mediateur.clicObtenirListeAuteurs(this);
118
	}
130
	}
119
	
131
	
120
	private void creerZoneAuteurs() {
132
	private void creerZoneAuteurs() {
121
		FormLayout layout = new FormLayout();
133
		FormLayout layout = new FormLayout();
122
		layout.setLabelWidth(200);
134
		layout.setLabelWidth(200);
123
		
135
		
124
		// Fieldset Auteur
136
		// Fieldset Auteur
125
		auteursFieldset = new FieldSet();
137
		auteursFieldset = new FieldSet();
126
		auteursFieldset.setHeading("Auteur(s)");
138
		auteursFieldset.setHeading("Auteur(s)");
127
		auteursFieldset.setCollapsible(true);
139
		auteursFieldset.setCollapsible(true);
128
		auteursFieldset.setLayout(layout);
140
		auteursFieldset.setLayout(layout);
129
		
141
		
130
		auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
142
		auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
131
		auteursStorePartage = new ListStore<Personne>();
143
		auteursStorePartage = new ListStore<Personne>();
132
		
144
		
133
		genererChampsAuteur(false);
145
		genererChampsAuteur(false);
134
	}
146
	}
135
	
147
	
136
	private void genererChampsAuteur(boolean vider) {
148
	private void genererChampsAuteur(boolean vider) {
137
		auteursFieldset.removeAll();
149
		auteursFieldset.removeAll();
138
		
150
		
139
		conteneurChamps = new LayoutContainer(); 
151
		conteneurChamps = new LayoutContainer(); 
140
				
152
				
141
		Button ajoutAuteurBtn = new Button("Ajouter un auteur");
153
		Button ajoutAuteurBtn = new Button("Ajouter un auteur");
142
		ajoutAuteurBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
154
		ajoutAuteurBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
143
 
155
 
144
			@Override
156
			@Override
145
			public void componentSelected(ButtonEvent be) {
157
			public void componentSelected(ButtonEvent be) {
146
				creerTextFieldEtBouton(null);
158
				creerTextFieldEtBouton(null);
147
				
159
				
148
				int nbAuteurs = 0;
160
				int nbAuteurs = 0;
149
				for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
161
				for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
150
					if (auteurComboboxListe.size() > 1) {
162
					if (auteurComboboxListe.size() > 1) {
151
						it.next().setFieldLabel("Auteur "+nbAuteurs);
163
						it.next().setFieldLabel("Auteur "+nbAuteurs);
152
						nbAuteurs++;
164
						nbAuteurs++;
153
					}
165
					}
154
				}
166
				}
155
				
167
				
156
				auteursFieldset.layout(true);
168
				auteursFieldset.layout(true);
157
			}
169
			}
158
			
170
			
159
		});
171
		});
160
		
172
		
161
		auteursFieldset.add(conteneurChamps);
173
		auteursFieldset.add(conteneurChamps);
162
		auteursFieldset.add(ajoutAuteurBtn);
174
		auteursFieldset.add(ajoutAuteurBtn);
163
		auteursFieldset.layout(true);
175
		auteursFieldset.layout(true);
164
		
176
		
165
		if (!vider) {
177
		if (!vider) {
166
			creerTextFieldEtBouton(null);
178
			creerTextFieldEtBouton(null);
167
		}
179
		}
168
	}
180
	}
169
	
181
	
170
	public void creerTextFieldEtBouton(Personne auteur) {
182
	public void creerTextFieldEtBouton(Personne auteur) {
171
		final HorizontalPanel panneauHorizontal = new HorizontalPanel();
183
		final HorizontalPanel panneauHorizontal = new HorizontalPanel();
172
		panneauHorizontal.setLayout(new FormLayout());
184
		panneauHorizontal.setLayout(new FormLayout());
173
		
185
		
174
		final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis();
186
		final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis();
175
		if (auteur != null) {
187
		if (auteur != null) {
176
			GWT.log(auteur.getId(), null);
188
			GWT.log(auteur.getId(), null);
177
			auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId()));
189
			auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId()));
178
		}
190
		}
179
		auteurComboboxListe.add(auteursSaisisComboBox);
191
		auteurComboboxListe.add(auteursSaisisComboBox);
180
		
192
		
181
		LayoutContainer lc = new LayoutContainer();
193
		LayoutContainer lc = new LayoutContainer();
182
		lc.setLayout(new FormLayout());
194
		lc.setLayout(new FormLayout());
183
		lc.add(auteursSaisisComboBox);
195
		lc.add(auteursSaisisComboBox);
184
		
196
		
185
		Button supp = new Button("-");
197
		Button supp = new Button("-");
186
		supp.addSelectionListener(new SelectionListener<ButtonEvent>() {
198
		supp.addSelectionListener(new SelectionListener<ButtonEvent>() {
187
			@Override
199
			@Override
188
			public void componentSelected(ButtonEvent be) {
200
			public void componentSelected(ButtonEvent be) {
189
				int nbAuteurs = 0;
201
				int nbAuteurs = 0;
190
				if (auteurComboboxListe.size() != 1) {
202
				if (auteurComboboxListe.size() != 1) {
191
					for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
203
					for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
192
						it.next().setFieldLabel("Auteur "+nbAuteurs);
204
						it.next().setFieldLabel("Auteur "+nbAuteurs);
193
						nbAuteurs++;
205
						nbAuteurs++;
194
					}
206
					}
195
				}
207
				}
196
				auteurComboboxListe.remove(auteursSaisisComboBox);
208
				auteurComboboxListe.remove(auteursSaisisComboBox);
197
				conteneurChamps.remove(panneauHorizontal);
209
				conteneurChamps.remove(panneauHorizontal);
198
				auteursFieldset.layout(true);
210
				auteursFieldset.layout(true);
199
			}
211
			}
200
			
212
			
201
		});
213
		});
202
		panneauHorizontal.add(lc);
214
		panneauHorizontal.add(lc);
203
		panneauHorizontal.add(supp);
215
		panneauHorizontal.add(supp);
204
		conteneurChamps.add(panneauHorizontal);
216
		conteneurChamps.add(panneauHorizontal);
205
		auteursFieldset.layout(true);
217
		auteursFieldset.layout(true);
206
	}
218
	}
207
	
219
	
208
	private ComboBox<Personne> creerComboBoxAuteursSaisis() {
220
	private ComboBox<Personne> creerComboBoxAuteursSaisis() {
209
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
221
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
210
		comboBox.setSize(200, 20);
222
		comboBox.setSize(200, 20);
211
		comboBox.setEmptyText(i18nC.chercherAuteurSaisi());
223
		comboBox.setEmptyText(i18nC.chercherAuteurSaisi());
212
		comboBox.setEditable(true);
224
		comboBox.setEditable(true);
213
		comboBox.setForceSelection(true);
225
		comboBox.setForceSelection(true);
214
		comboBox.setDisplayField("fmt_nom_complet");
226
		comboBox.setDisplayField("fmt_nom_complet");
215
		comboBox.setTriggerAction(TriggerAction.ALL);
227
		comboBox.setTriggerAction(TriggerAction.ALL);
216
		comboBox.setStore(auteursStorePartage);
228
		comboBox.setStore(auteursStorePartage);
217
 
229
 
218
		return comboBox;
230
		return comboBox;
219
	}
231
	}
220
	
232
	
221
	private void creerZoneGeneralites() {
233
	private void creerZoneGeneralites() {
222
		FormLayout layout = new FormLayout();
234
		FormLayout layout = new FormLayout();
223
		layout.setLabelWidth(200);
235
		layout.setLabelWidth(200);
224
		
236
		
225
		// Fieldset Infos Générales
237
		// Fieldset Infos Générales
226
		generalitesFieldset = new FieldSet();
238
		generalitesFieldset = new FieldSet();
227
		generalitesFieldset.setHeading("Informations générales");
239
		generalitesFieldset.setHeading("Informations générales");
228
		generalitesFieldset.setCollapsible(true);
240
		generalitesFieldset.setCollapsible(true);
229
		generalitesFieldset.setLayout(layout);
241
		generalitesFieldset.setLayout(layout);
230
		
242
		
231
		nomArticle = new TextField<String>();
243
		nomArticle = new TextField<String>();
232
		nomArticle.setName("cpu");
244
		nomArticle.setName("cpu");
233
		nomArticle.setFieldLabel("Titre de l'article ou de l'ouvrage");
245
		nomArticle.setFieldLabel("Titre de l'article ou de l'ouvrage");
234
		
246
		
235
		intituleCollPub = new TextField<String>();
247
		intituleCollPub = new TextField<String>();
236
		intituleCollPub.setFieldLabel("Intitulé de la collection ou de la revue");
248
		intituleCollPub.setFieldLabel("Intitulé de la collection ou de la revue");
237
		
249
		
238
		uriPub = new TextField<String>();
250
		uriPub = new TextField<String>();
239
		uriPub.setFieldLabel("URI de la publication");
251
		uriPub.setFieldLabel("URI de la publication");
240
		
252
		
241
		generalitesFieldset.add(nomArticle);
253
		generalitesFieldset.add(nomArticle);
242
		generalitesFieldset.add(intituleCollPub);
254
		generalitesFieldset.add(intituleCollPub);
243
		generalitesFieldset.add(uriPub);
255
		generalitesFieldset.add(uriPub);
244
	}
256
	}
245
	
257
	
246
	private void creerZoneEdition() {
258
	private void creerZoneEdition() {
247
		FormLayout layout = new FormLayout();
259
		FormLayout layout = new FormLayout();
248
		layout.setLabelWidth(200);
260
		layout.setLabelWidth(200);
249
 
261
 
250
		// Fieldset Edition
262
		// Fieldset Edition
251
		editionFieldset = new FieldSet();
263
		editionFieldset = new FieldSet();
252
		editionFieldset.setHeading("Edition");
264
		editionFieldset.setHeading("Edition");
253
		editionFieldset.setCollapsible(true);
265
		editionFieldset.setCollapsible(true);
254
		editionFieldset.setLayout(layout);
266
		editionFieldset.setLayout(layout);
255
		
267
		
256
		storeEditeurs = new ListStore<Structure>();
268
		storeEditeurs = new ListStore<Structure>();
257
		comboListeEditeurs = new ComboBox<Structure>();  
269
		comboListeEditeurs = new ComboBox<Structure>();  
258
		comboListeEditeurs.setEmptyText("Sélectionner un editeur...");
270
		comboListeEditeurs.setEmptyText("Sélectionner un editeur...");
259
		comboListeEditeurs.setFieldLabel("Editeur de la publication");
271
		comboListeEditeurs.setFieldLabel("Editeur de la publication");
260
		comboListeEditeurs.setDisplayField("nom");
272
		comboListeEditeurs.setDisplayField("nom");
261
		comboListeEditeurs.setStore(storeEditeurs);
273
		comboListeEditeurs.setStore(storeEditeurs);
262
		comboListeEditeurs.setEditable(true);
274
		comboListeEditeurs.setEditable(true);
263
		comboListeEditeurs.setTypeAhead(true);  
275
		comboListeEditeurs.setTypeAhead(true);  
264
		comboListeEditeurs.setTriggerAction(TriggerAction.QUERY);
276
		comboListeEditeurs.setTriggerAction(TriggerAction.QUERY);
265
		editionFieldset.add(comboListeEditeurs, new FormData(500, 20));
277
		editionFieldset.add(comboListeEditeurs, new FormData(500, 20));
266
		
278
		
267
		datePub = new TextField<String>();
279
		datePub = new TextField<String>();
268
		datePub.setMaxLength(4);
280
		datePub.setMaxLength(4);
269
		datePub.setMinLength(4);
281
		datePub.setMinLength(4);
270
		datePub.setFieldLabel("Année de publication");
282
		datePub.setFieldLabel("Année de publication");
271
		editionFieldset.add(datePub, new FormData(40, 20));
283
		editionFieldset.add(datePub, new FormData(40, 20));
272
		
284
		
273
		tomPub = new TextField<String>();
285
		tomPub = new TextField<String>();
274
		tomPub.setFieldLabel("Tome");
286
		tomPub.setFieldLabel("Tome");
275
		editionFieldset.add(tomPub, new FormData(75, 20));
287
		editionFieldset.add(tomPub, new FormData(75, 20));
276
		
288
		
277
		fasciculePub = new TextField<String>();
289
		fasciculePub = new TextField<String>();
278
		fasciculePub.setFieldLabel("Fascicule");
290
		fasciculePub.setFieldLabel("Fascicule");
279
		editionFieldset.add(fasciculePub, new FormData(75, 20));
291
		editionFieldset.add(fasciculePub, new FormData(75, 20));
280
		
292
		
281
		pagesPub = new TextField<String>();
293
		pagesPub = new TextField<String>();
282
		pagesPub.setFieldLabel("Pages");
294
		pagesPub.setFieldLabel("Pages");
283
		editionFieldset.add(pagesPub, new FormData(100, 20));
295
		editionFieldset.add(pagesPub, new FormData(100, 20));
284
	}
296
	}
285
 
297
 
286
	public void rafraichir(Object nouvellesDonnees) {
298
	public void rafraichir(Object nouvellesDonnees) {
287
		// Si on a reçu les details d'une publication
-
 
288
		if (nouvellesDonnees instanceof Publication) {
299
		if (nouvellesDonnees instanceof Publication) {
-
 
300
			// Si on a reçu les details d'une publication
289
			publi = (Publication) nouvellesDonnees;
301
			rafraichirPublication((Publication) nouvellesDonnees);
-
 
302
		} else if (nouvellesDonnees instanceof StructureListe) {
-
 
303
			// Si on a reçu une liste des editeurs
-
 
304
			rafraichirListeEditeurs((StructureListe) nouvellesDonnees);
-
 
305
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
-
 
306
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
-
 
307
		} else if (nouvellesDonnees instanceof Information) {
-
 
308
			rafraichirInformation((Information) nouvellesDonnees);	
-
 
309
		} else {
-
 
310
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
-
 
311
		}
-
 
312
		
-
 
313
		if (etreValide()) {
-
 
314
			reinitialiserValidation();
-
 
315
			repandreRafraichissement();
-
 
316
			controlerFermetureApresRafraichissement();
-
 
317
		}
-
 
318
	}
-
 
319
 
-
 
320
	private void rafraichirPublication(Publication publication) {
-
 
321
		publi = publication;
-
 
322
		
-
 
323
		genererChampsAuteur(true);
-
 
324
		nomArticle.setValue(publi.getTitre());
-
 
325
		intituleCollPub.setValue(publi.getCollection());
-
 
326
		uriPub.setValue(publi.getURI());
-
 
327
		datePub.setRawValue(reduireDateParAnnee(publi.getDateParution()));
-
 
328
		tomPub.setValue(publi.getIndicationNvt());
-
 
329
		fasciculePub.setValue(publi.getFascicule());
-
 
330
		pagesPub.setValue(publi.getPages());
-
 
331
		idPublication = publi.getId();
-
 
332
		idStructureEdition = publi.getEditeur();
-
 
333
		idProjet = publi.getIdProjet() ;
-
 
334
	}
-
 
335
	
-
 
336
	private void rafraichirListeEditeurs(StructureListe editeurs) {
-
 
337
		storeEditeurs.removeAll();
-
 
338
		storeEditeurs.add((List<Structure>) editeurs.toList());
-
 
339
		
-
 
340
		if (mode.equals(Formulaire.MODE_MODIFIER)) {	
-
 
341
			comboListeEditeurs.setValue((Structure) editeurs.get(idStructureEdition));
-
 
342
		}
-
 
343
		comboListeEditeurs.expand();
-
 
344
	}
-
 
345
	
-
 
346
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
-
 
347
		pubAPersonneListeAuteur = auteurs;
-
 
348
		
-
 
349
		if (listePersonneAuteurInitialisee) {
-
 
350
			Iterator<String> itap = pubAPersonneListeAuteur.keySet().iterator();
-
 
351
			while (itap.hasNext()) {
-
 
352
				creerTextFieldEtBouton(pubAPersonneListeAuteur.get(itap.next()).getPersonne());
-
 
353
			}
290
			
354
			
291
			genererChampsAuteur(true);
-
 
292
			nomArticle.setValue(publi.getTitre());
-
 
293
			intituleCollPub.setValue(publi.getCollection());
-
 
294
			uriPub.setValue(publi.getURI());
355
			int nbAuteurs = 0;
295
			datePub.setRawValue(reduireDateParAnnee(publi.getDateParution()));
-
 
296
			tomPub.setValue(publi.getIndicationNvt());
-
 
297
			fasciculePub.setValue(publi.getFascicule());
356
			for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
298
			pagesPub.setValue(publi.getPages());
-
 
299
			idPublication = publi.getId();
357
				if (auteurComboboxListe.size() > 1) {
300
			idStructureEdition = publi.getEditeur();
-
 
301
			idProjet = publi.getProjet() ;
-
 
302
		}
-
 
303
		
-
 
304
		// Si on a reçu une liste des editeurs
-
 
305
		if (nouvellesDonnees instanceof StructureListe) {
358
					it.next().setFieldLabel("Auteur "+nbAuteurs);
306
			storeEditeurs.removeAll();
-
 
307
			StructureListe listeStructure = (StructureListe) nouvellesDonnees;
-
 
308
			storeEditeurs.add((List<Structure>) listeStructure.toList());
-
 
309
			
-
 
310
			if (mode.equals(Formulaire.MODE_MODIFIER)) {	
-
 
311
				comboListeEditeurs.setValue((Structure) listeStructure.get(idStructureEdition));
-
 
312
			}
-
 
313
			comboListeEditeurs.expand();
-
 
314
		}
-
 
315
		
-
 
316
		if (nouvellesDonnees instanceof PublicationAPersonneListe) {
-
 
317
			pubAPersonneListeAuteur = (PublicationAPersonneListe) nouvellesDonnees;
-
 
318
			
-
 
319
			if (listeAuteurInitialisee) {
-
 
320
				Iterator<String> itap = pubAPersonneListeAuteur.keySet().iterator();
-
 
321
				while (itap.hasNext()) {
-
 
322
					creerTextFieldEtBouton(pubAPersonneListeAuteur.get(itap.next()).getPersonne());
359
					nbAuteurs++;
323
				}
-
 
324
				
-
 
325
				int nbAuteurs = 0;
-
 
326
				for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
-
 
327
					if (auteurComboboxListe.size() > 1) {
-
 
328
						it.next().setFieldLabel("Auteur "+nbAuteurs);
-
 
329
						nbAuteurs++;
-
 
330
					}
-
 
331
				}
-
 
332
				listeAuteurPublicationInitialisee = true;
360
				}
-
 
361
			}
333
			}
362
			listeAuteurPublicationInitialisee = true;
-
 
363
		}
334
		}
364
	}
335
		
365
	
-
 
366
	private void rafraichirInformation(Information info) {
-
 
367
		if (info.getType().equals("liste_personne")) {
336
		if (nouvellesDonnees instanceof Information) {
368
			listePersonneAuteurInitialisee = true;
-
 
369
			listePersonneAuteur = (PersonneListe) info.getDonnee(0);
-
 
370
			List<Personne> liste = listePersonneAuteur.toList();
-
 
371
			auteursStorePartage.removeAll();
-
 
372
			auteursStorePartage.add(liste);
-
 
373
		} else if (info.getType().equals("publication_valide")) {
-
 
374
			validationPublication = true;
337
			Information nouvellesInfos = (Information)nouvellesDonnees;
375
			idPublication = (String) info.getDonnee(0);
338
			
376
			
339
			if (nouvellesInfos.getType().equals("liste_personne")) {
377
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
340
				listePersonneAuteur = (PersonneListe) nouvellesInfos.getDonnee(0);
-
 
341
				List<Personne> liste = listePersonneAuteur.toList();
-
 
342
				auteursStorePartage.removeAll();
-
 
343
				auteursStorePartage.add(liste);
378
				mediateur.ajouterAuteurPublication(this, idAuteurs, PublicationAPersonne.ROLE_AUTEUR, idPublication);
344
				GWT.log("ok", null);
379
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
-
 
380
				mediateur.modifierAuteurPublication(this, idAuteurs, idPublication);
-
 
381
			}
-
 
382
		} else if (info.getType().equals("auteur_valide")) {
-
 
383
			validationAuteurs = true;
-
 
384
		}
-
 
385
	}
-
 
386
	
-
 
387
	private Boolean etreValide() {
-
 
388
		Boolean valide = false;
-
 
389
		if (formValide && validationPublication && validationAuteurs) {
-
 
390
			valide = true;
-
 
391
		}
-
 
392
		return valide;
-
 
393
	}
-
 
394
	
-
 
395
	private void reinitialiserValidation() {
-
 
396
		formValide = false;
-
 
397
		validationPublication = false;
-
 
398
		validationAuteurs = false;
-
 
399
	}
-
 
400
	
-
 
401
	private void repandreRafraichissement() {
345
				listeAuteurInitialisee = true;
402
		if (vueExterneARafraichirApresValidation != null) {
-
 
403
			Information info = new Information("");
-
 
404
			
-
 
405
			vueExterneARafraichirApresValidation.rafraichir(info);
-
 
406
		}
346
			}
407
	}
-
 
408
	
347
			
409
	public void soumettreFormulaire() {
348
			if (nouvellesInfos.getType().equals("publication_valide")) {
410
		formValide = verifierFormulaire();
-
 
411
		if (formValide) {
-
 
412
			Publication publication = new Publication();
349
				validationPublication = true;
413
			
350
				idPublication = ""+nouvellesInfos.getDonnee(0);
414
			String auteur = "";
-
 
415
			for (int i = 0; i < auteurComboboxListe.size(); i++) {
351
				
416
				if (auteurComboboxListe.get(i).getValue() != null) {
-
 
417
					idAuteurs += auteurComboboxListe.get(i).getValue().getId();
352
				if (mode.equals(Formulaire.MODE_AJOUTER)) {
418
					auteur += auteurComboboxListe.get(i).getValue().getNom()+ " "+auteurComboboxListe.get(i).getValue().getPrenom();
-
 
419
					if (i != auteurComboboxListe.size() -1) {
353
					mediateur.ajouterAuteurPublication(this, idAuteurs, "2360", idPublication);
420
						auteur += "|";
354
				} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
421
						idAuteurs += ",";
-
 
422
					}
355
					mediateur.modifierAuteurPublication(this, idAuteurs, idPublication);
423
				}
-
 
424
			}
-
 
425
			publication.setAuteur(auteur);
-
 
426
			
356
				}
427
			String titre = nomArticle.getValue();
-
 
428
			publication.setTitre(titre);
-
 
429
			
-
 
430
			String collection = intituleCollPub.getValue();
-
 
431
			publication.setCollection(collection);
-
 
432
			
-
 
433
			String nomComplet = nomArticle.getValue()+" "+intituleCollPub.getValue();
357
			}
434
			publication.setNomComplet(nomComplet);
-
 
435
			
-
 
436
			String uri = uriPub.getValue();
-
 
437
			publication.setUri(uri);
-
 
438
			
-
 
439
			String editeur = "";
-
 
440
			if (comboListeEditeurs.getValue() != null) {
358
				
441
				editeur = comboListeEditeurs.getValue().getId();
-
 
442
			} else if (comboListeEditeurs.getRawValue() != "") {
-
 
443
				editeur = comboListeEditeurs.getRawValue();
-
 
444
			}
-
 
445
			publication.setEditeur(editeur);
-
 
446
			
-
 
447
			String datePar = datePub.getRawValue();
-
 
448
			datePar = datePar+"-00-00";
359
			if (nouvellesInfos.getType().equals("auteur_valide")) {
449
			
360
				validationAuteurs = true;
450
			String tome = tomPub.getValue();
-
 
451
			publication.setIndicationNvt(tome);
-
 
452
			
361
			}
453
			String fascicule = fasciculePub.getValue();
-
 
454
			publication.setFascicule(fascicule);
-
 
455
			
-
 
456
			String pages = pagesPub.getValue();
-
 
457
			publication.setPages(pages);
-
 
458
			
362
			
459
 
363
			if (formValide && validationPublication && validationAuteurs && clicBoutonvalidation) {
460
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
364
				clicBoutonvalidation = false;
461
				mediateur.ajouterPublication(this, publication);
365
				panneauFormulaire.setEnabled(false);
462
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
366
				mediateur.clicMenu(MenuApplicationId.PUBLICATION);
463
				mediateur.modifierPublication(this, publication);
367
			}
464
			}
368
		}
465
		}
369
	}
466
	}
370
	
467
	
371
	public void soumettreFormulaire(Rafraichissable vueARafraichir) {
468
	private boolean verifierFormulaire() {
-
 
469
		boolean valide = true;
-
 
470
		ArrayList<String> messages = new ArrayList<String>();
372
		String auteur = "";
471
		
373
		String idAuteur = "";
472
		boolean auteurErreur = false;
374
		for (int i = 0; i < auteurComboboxListe.size(); i++) {
473
		for (int i = 0; i < auteurComboboxListe.size(); i++) {
375
			if (auteurComboboxListe.get(i).getValue() != null) {
-
 
376
				idAuteur += auteurComboboxListe.get(i).getValue().getId();
-
 
377
				auteur += auteurComboboxListe.get(i).getValue().getNom()+ " "+auteurComboboxListe.get(i).getValue().getPrenom();
-
 
378
				if (i != auteurComboboxListe.size() -1) {
474
			if (auteurComboboxListe.get(i).getValue() != null) {
379
					auteur += "|";
-
 
380
					idAuteur += ",";
475
				auteurErreur = true;
381
				}
476
				break;
382
			}
477
			}
383
		}
-
 
384
		
478
		}
385
		String erreurs = "";
-
 
386
		
-
 
387
		if (idAuteur == null || idAuteur.equals("")) {
479
		if (auteurErreur) {
388
			erreurs += "Veuillez entrer au moins un auteur ! ";
-
 
389
		} else {
-
 
390
			idAuteurs = idAuteur;
-
 
391
		}
-
 
392
		
-
 
393
		String nomArt = nomArticle.getValue();
-
 
394
		if (nomArt == null || nomArt.equals("")) {
-
 
395
			erreurs += "Veuillez entrer le nom de l'article ! ";
480
			messages.add("Veuillez saisir au moins un auteur !");
396
		}
-
 
397
		
-
 
398
		String collPub = intituleCollPub.getValue();
-
 
399
		
-
 
400
		String pub = nomArticle.getValue()+" "+intituleCollPub.getValue();
481
		}
401
		
-
 
402
		String uri = uriPub.getValue();
-
 
403
		
-
 
404
		String editeur = "";
-
 
405
		
-
 
406
		if (comboListeEditeurs.getValue() == null) {
-
 
407
			//erreurs += "Veuillez sélectionner un éditeur ! ";
-
 
408
		} else {
482
		
409
			editeur = comboListeEditeurs.getValue().getId();
483
		String titre = nomArticle.getValue();
410
			if(editeur == null || editeur.equals("")) {
-
 
411
				erreurs += "Veuillez sélectionner un éditeur ! ";
484
		if (titre == null || titre.equals("")) {
412
			}
485
			messages.add("Veuillez saisir le titre de la publication !");
413
		}
486
		}
414
		
487
		
415
		String datePar = datePub.getRawValue();
488
		String datePar = datePub.getRawValue();
416
		if (datePar == null || datePar.equals("")) {
489
		if (datePar == null || datePar.equals("")) {
417
			erreurs += "Veuillez entrer une date ! ";
490
			messages.add("Veuillez saisir une date !");
418
		} else {
491
		} else {
419
			String resDate = analyserDate(datePar);
-
 
420
			if (resDate.equals("")) {
492
			if (!etreDateValide(datePar)) {
421
				datePar = datePar+"-00-00";
493
				messages.add("Format de l'année saisie est incorrect");
422
			} else {
-
 
423
				erreurs += resDate;
-
 
424
			}
494
			}
425
		}
495
		}
426
		String tome = tomPub.getValue();
-
 
427
 
-
 
428
		String fascicule = fasciculePub.getValue();
-
 
429
		
496
		
430
		String pages = pagesPub.getValue();
-
 
431
		
497
		if (messages.size() != 0) {
-
 
498
			String[] tableauDeMessages = {};
432
		if (erreurs.length() > 0) {
499
			tableauDeMessages = messages.toArray(tableauDeMessages);
433
			MessageBox.alert("Erreur dans la saisie des champs", erreurs, null);
-
 
434
		} else {
500
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "\n\n"), null);
435
			formValide = true;
-
 
436
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
-
 
437
				Publication publi = new Publication(pub, uri, auteur, collPub, nomArt, editeur, datePar, tome, fascicule, pages);
-
 
438
				mediateur.ajouterPublication(this, publi);
-
 
439
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
-
 
440
				Publication publi = new Publication(idPublication, idProjet, pub, uri, auteur, collPub, nomArt, editeur, datePar, tome, fascicule, pages);
-
 
441
				mediateur.modifierPublication(this, publi);
-
 
442
			}
501
			valide = false;
-
 
502
		}
443
		}
503
		return valide;		
444
	}
-
 
445
	
504
	}
446
	
505
	
447
	protected void reinitialiserFormulaire() {
506
	protected void reinitialiserFormulaire() {
448
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
507
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
449
			mediateur.afficherFormPublication(publi.getId());
508
			mediateur.afficherFormPublication(publi.getId());
450
		} else {
509
		} else {
451
			mediateur.afficherFormPublication(null);
510
			mediateur.afficherFormPublication(null);
452
		}
511
		}
453
	}
512
	}
454
	
513
	
-
 
514
	private boolean etreDateValide(String datePar) {
455
	private String analyserDate(String datePar) {
515
		boolean valide = true;
456
		if (datePar.matches("^[0-2][0-9]{3}$")) {
516
		if (!datePar.matches("^[0-2][0-9]{3}$")) {
457
			return "";
-
 
458
		} else {
-
 
459
			return "Format de date incorrect ";
517
			valide = false;
-
 
518
		}
460
		}
519
		return valide;
461
	}
520
	}
462
	
521
	
463
	private String reduireDateParAnnee(String datePar) {
522
	private String reduireDateParAnnee(String datePar) {
464
		if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
523
		if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
465
			return datePar.split("-")[0];
524
			return datePar.split("-")[0];
466
		} else {
525
		} else {
467
			return "";
526
			return "";
468
		}
527
		}
469
	}
528
	}
470
	
529
	
471
	@Override
530
	@Override
472
	protected SelectionListener<ButtonEvent> creerEcouteurValidation() {
531
	protected SelectionListener<ButtonEvent> creerEcouteurValidation() {
473
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
532
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
474
			@Override
533
			@Override
475
			public void componentSelected(ButtonEvent ce) {
534
			public void componentSelected(ButtonEvent ce) {
476
				String code = ((Button) ce.getComponent()).getData("code");
535
				String code = ((Button) ce.getComponent()).getData("code");
477
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
536
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
478
					soumettreFormulaire(renvoyerPublicationForm());
537
					soumettreFormulaire();
479
					clicBoutonvalidation = true;
538
					clicBoutonvalidation = true;
480
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
539
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
481
					soumettreFormulaire(renvoyerPublicationForm());
540
					soumettreFormulaire();
482
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
541
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
483
					mediateur.clicMenu(menuIdCourant);
542
					mediateur.clicMenu(menuIdCourant);
484
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
543
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
485
					reinitialiserFormulaire();
544
					reinitialiserFormulaire();
486
				}
545
				}
487
			}
546
			}
488
		};
547
		};
489
		
548
		
490
		return ecouteur;
549
		return ecouteur;
491
	}
550
	}
492
	
-
 
493
	private PublicationForm renvoyerPublicationForm() {
-
 
494
		return this;
-
 
495
	}
551
	
496
}
552
}