Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1367 Rev 1369
1
package org.tela_botanica.client.vues.publication;
1
package org.tela_botanica.client.vues.publication;
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
 
6
 
7
import org.tela_botanica.client.ComposantClass;
7
import org.tela_botanica.client.ComposantClass;
8
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.Mediateur;
9
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
9
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
10
import org.tela_botanica.client.composants.InfoLogger;
10
import org.tela_botanica.client.composants.InfoLogger;
-
 
11
import org.tela_botanica.client.composants.pagination.ProxyPersonnes;
11
import org.tela_botanica.client.composants.pagination.ProxyProjets;
12
import org.tela_botanica.client.composants.pagination.ProxyProjets;
12
import org.tela_botanica.client.composants.pagination.ProxyStructures;
13
import org.tela_botanica.client.composants.pagination.ProxyStructures;
13
import org.tela_botanica.client.images.Images;
14
import org.tela_botanica.client.images.Images;
14
import org.tela_botanica.client.interfaces.Rafraichissable;
15
import org.tela_botanica.client.interfaces.Rafraichissable;
15
import org.tela_botanica.client.modeles.Information;
16
import org.tela_botanica.client.modeles.Information;
16
import org.tela_botanica.client.modeles.MenuApplicationId;
17
import org.tela_botanica.client.modeles.MenuApplicationId;
17
import org.tela_botanica.client.modeles.Valeur;
18
import org.tela_botanica.client.modeles.Valeur;
18
import org.tela_botanica.client.modeles.aDonnee;
19
import org.tela_botanica.client.modeles.aDonnee;
19
import org.tela_botanica.client.modeles.personne.Personne;
20
import org.tela_botanica.client.modeles.personne.Personne;
20
import org.tela_botanica.client.modeles.personne.PersonneListe;
21
import org.tela_botanica.client.modeles.personne.PersonneListe;
21
import org.tela_botanica.client.modeles.projet.Projet;
22
import org.tela_botanica.client.modeles.projet.Projet;
22
import org.tela_botanica.client.modeles.projet.ProjetListe;
23
import org.tela_botanica.client.modeles.projet.ProjetListe;
23
import org.tela_botanica.client.modeles.publication.Publication;
24
import org.tela_botanica.client.modeles.publication.Publication;
24
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
25
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
25
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
26
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
26
import org.tela_botanica.client.modeles.structure.Structure;
27
import org.tela_botanica.client.modeles.structure.Structure;
27
import org.tela_botanica.client.modeles.structure.StructureListe;
28
import org.tela_botanica.client.modeles.structure.StructureListe;
28
import org.tela_botanica.client.synchronisation.Sequenceur;
29
import org.tela_botanica.client.synchronisation.Sequenceur;
29
import org.tela_botanica.client.util.Debug;
30
import org.tela_botanica.client.util.Debug;
30
import org.tela_botanica.client.util.Pattern;
31
import org.tela_botanica.client.util.Pattern;
31
import org.tela_botanica.client.util.UtilArray;
32
import org.tela_botanica.client.util.UtilArray;
32
import org.tela_botanica.client.util.UtilString;
33
import org.tela_botanica.client.util.UtilString;
33
import org.tela_botanica.client.vues.FenetreForm;
34
import org.tela_botanica.client.vues.FenetreForm;
34
import org.tela_botanica.client.vues.Formulaire;
35
import org.tela_botanica.client.vues.Formulaire;
35
import org.tela_botanica.client.vues.FormulaireBarreValidation;
36
import org.tela_botanica.client.vues.FormulaireBarreValidation;
36
import org.tela_botanica.client.vues.personne.PersonneForm;
37
import org.tela_botanica.client.vues.personne.PersonneForm;
37
 
38
 
38
import com.extjs.gxt.ui.client.Style.Scroll;
39
import com.extjs.gxt.ui.client.Style.Scroll;
39
import com.extjs.gxt.ui.client.Style.SortDir;
40
import com.extjs.gxt.ui.client.Style.SortDir;
40
import com.extjs.gxt.ui.client.core.XTemplate;
41
import com.extjs.gxt.ui.client.core.XTemplate;
41
import com.extjs.gxt.ui.client.data.ModelData;
42
import com.extjs.gxt.ui.client.data.ModelData;
42
import com.extjs.gxt.ui.client.data.ModelType;
43
import com.extjs.gxt.ui.client.data.ModelType;
43
import com.extjs.gxt.ui.client.event.BaseEvent;
44
import com.extjs.gxt.ui.client.event.BaseEvent;
44
import com.extjs.gxt.ui.client.event.ButtonEvent;
45
import com.extjs.gxt.ui.client.event.ButtonEvent;
45
import com.extjs.gxt.ui.client.event.ComponentEvent;
46
import com.extjs.gxt.ui.client.event.ComponentEvent;
46
import com.extjs.gxt.ui.client.event.Events;
47
import com.extjs.gxt.ui.client.event.Events;
47
import com.extjs.gxt.ui.client.event.KeyListener;
48
import com.extjs.gxt.ui.client.event.KeyListener;
48
import com.extjs.gxt.ui.client.event.Listener;
49
import com.extjs.gxt.ui.client.event.Listener;
49
import com.extjs.gxt.ui.client.event.SelectionListener;
50
import com.extjs.gxt.ui.client.event.SelectionListener;
50
import com.extjs.gxt.ui.client.store.ListStore;
51
import com.extjs.gxt.ui.client.store.ListStore;
51
import com.extjs.gxt.ui.client.store.Store;
52
import com.extjs.gxt.ui.client.store.Store;
52
import com.extjs.gxt.ui.client.store.StoreEvent;
53
import com.extjs.gxt.ui.client.store.StoreEvent;
53
import com.extjs.gxt.ui.client.widget.ContentPanel;
54
import com.extjs.gxt.ui.client.widget.ContentPanel;
54
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
55
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
55
import com.extjs.gxt.ui.client.widget.Info;
56
import com.extjs.gxt.ui.client.widget.Info;
56
import com.extjs.gxt.ui.client.widget.LayoutContainer;
57
import com.extjs.gxt.ui.client.widget.LayoutContainer;
57
import com.extjs.gxt.ui.client.widget.MessageBox;
58
import com.extjs.gxt.ui.client.widget.MessageBox;
58
import com.extjs.gxt.ui.client.widget.Text;
59
import com.extjs.gxt.ui.client.widget.Text;
59
import com.extjs.gxt.ui.client.widget.button.Button;
60
import com.extjs.gxt.ui.client.widget.button.Button;
60
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
61
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
61
import com.extjs.gxt.ui.client.widget.form.ComboBox;
62
import com.extjs.gxt.ui.client.widget.form.ComboBox;
62
import com.extjs.gxt.ui.client.widget.form.Field;
63
import com.extjs.gxt.ui.client.widget.form.Field;
63
import com.extjs.gxt.ui.client.widget.form.FieldSet;
64
import com.extjs.gxt.ui.client.widget.form.FieldSet;
64
import com.extjs.gxt.ui.client.widget.form.FormPanel;
65
import com.extjs.gxt.ui.client.widget.form.FormPanel;
65
import com.extjs.gxt.ui.client.widget.form.TextField;
66
import com.extjs.gxt.ui.client.widget.form.TextField;
66
import com.extjs.gxt.ui.client.widget.form.Validator;
67
import com.extjs.gxt.ui.client.widget.form.Validator;
67
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
68
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
68
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
69
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
69
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
70
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
70
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
71
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
71
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
72
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
72
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
73
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
73
import com.extjs.gxt.ui.client.widget.grid.Grid;
74
import com.extjs.gxt.ui.client.widget.grid.Grid;
74
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
75
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
75
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
76
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
76
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
77
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
77
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
78
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
78
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
79
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
79
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
80
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
80
import com.extjs.gxt.ui.client.widget.layout.FormData;
81
import com.extjs.gxt.ui.client.widget.layout.FormData;
81
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
82
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
82
import com.extjs.gxt.ui.client.widget.layout.RowData;
83
import com.extjs.gxt.ui.client.widget.layout.RowData;
83
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
84
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
84
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
85
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
85
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
86
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
86
import com.google.gwt.core.client.GWT;
87
import com.google.gwt.core.client.GWT;
87
 
88
 
88
 
89
 
89
public class PublicationForm extends Formulaire implements Rafraichissable {
90
public class PublicationForm extends Formulaire implements Rafraichissable {
90
	
91
	
91
	//Variables de classe:
92
	//Variables de classe:
92
	// Relatives à la publication
93
	// Relatives à la publication
93
	private Publication publication;
94
	private Publication publication;
94
	
95
	
95
	// Relatives aux auteurs
96
	// Relatives aux auteurs
96
	private PersonneListe auteursInitialListe = null;
97
	private PersonneListe auteursInitialListe = null;
97
	private PersonneListe auteursAjoutes = null;
98
	private PersonneListe auteursAjoutes = null;
98
	private PersonneListe auteursSupprimes = null;
99
	private PersonneListe auteursSupprimes = null;
99
	
100
	
100
	private ContentPanel auteursFieldset = null;
101
	private ContentPanel auteursFieldset = null;
101
	private ChampComboBoxRechercheTempsReelPaginable projetsCombo = null;
102
	private ChampComboBoxRechercheTempsReelPaginable projetsCombo = null;
102
	private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
103
	private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
103
	private ListStore<Personne> auteursStorePartage = null;
104
	private ListStore<Personne> auteursStorePartage = null;
104
	
105
	
105
	private FieldSet generalitesFieldset = null;
106
	private FieldSet generalitesFieldset = null;
106
	private TextField<String> titreChp = null;
107
	private TextField<String> titreChp = null;
107
	private TextField<String> collectionChp = null;
108
	private TextField<String> collectionChp = null;
108
	private TextField<String> uriChp = null;
109
	private TextField<String> uriChp = null;
109
	
110
	
110
	private FieldSet editionFieldset = null;
111
	private FieldSet editionFieldset = null;
111
	private ChampComboBoxRechercheTempsReelPaginable editeurCombobox = null;
112
	private ChampComboBoxRechercheTempsReelPaginable editeurCombobox = null;
112
	private TextField<String> datePublicationChp = null;
113
	private TextField<String> datePublicationChp = null;
113
	private TextField<String> tomeChp = null;
114
	private TextField<String> tomeChp = null;
114
	private TextField<String> fasciculeChp = null;
115
	private TextField<String> fasciculeChp = null;
115
	private TextField<String> pagesChp = null;
116
	private TextField<String> pagesChp = null;
116
	
117
	
117
	private LayoutContainer zoneHaut, zoneBas;
118
	private LayoutContainer zoneHaut, zoneBas;
118
	
119
	
119
	private ToolBar barreOutils = null;
120
	private ToolBar barreOutils = null;
120
	private EditorGrid<Personne> grille;
121
	private EditorGrid<Personne> grille;
121
	private ComboBox<Personne> personnesSaisiesComboBox = null;
122
	private ComboBox<Personne> personnesSaisiesComboBox = null;
122
	private Button personnesBoutonSupprimer = null;
123
	private Button personnesBoutonSupprimer = null;
123
	private Button personnesBoutonModifier = null;
124
	private Button personnesBoutonModifier = null;
124
	private PersonneListe listePersonne = new PersonneListe();
125
	private PersonneListe listePersonne = new PersonneListe();
125
	
126
	
126
	private FenetreForm fenetreFormulaire = null;
127
	private FenetreForm fenetreFormulaire = null;
127
	private Sequenceur sequenceur;
128
	private Sequenceur sequenceur;
128
	
129
	
129
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
130
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
130
		initialiserPublicationForm(mediateurCourrant, publicationId);
131
		initialiserPublicationForm(mediateurCourrant, publicationId);
131
	}
132
	}
132
 
133
 
133
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
134
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
134
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
135
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
135
		initialiserPublicationForm(mediateurCourrant, publicationId);
136
		initialiserPublicationForm(mediateurCourrant, publicationId);
136
	}
137
	}
137
	
138
	
138
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
139
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
139
		sequenceur = new Sequenceur();
140
		sequenceur = new Sequenceur();
140
		publication = new Publication();
141
		publication = new Publication();
141
		publication.setId(publicationId);
142
		publication.setId(publicationId);
142
		auteursInitialListe = new PersonneListe();
143
		auteursInitialListe = new PersonneListe();
143
		initialiserAuteurs();	// Crée les listes d'auteurs ajoutés et supprimés
144
		initialiserAuteurs();	// Crée les listes d'auteurs ajoutés et supprimés
144
		
145
		
145
		String modeDeCreation = (UtilString.isEmpty(publicationId) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
146
		String modeDeCreation = (UtilString.isEmpty(publicationId) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
146
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
147
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
147
		panneauFormulaire.setLayout(new RowLayout());
148
		panneauFormulaire.setLayout(new RowLayout());
148
		panneauFormulaire.setStyleAttribute("padding", "0");
149
		panneauFormulaire.setStyleAttribute("padding", "0");
149
		
150
		
150
		zoneHaut = new LayoutContainer(new FitLayout());
151
		zoneHaut = new LayoutContainer(new FitLayout());
151
		zoneBas = new LayoutContainer(new FlowLayout());
152
		zoneBas = new LayoutContainer(new FlowLayout());
152
		panneauFormulaire.add(zoneHaut, new RowData(1, 0.3));
153
		panneauFormulaire.add(zoneHaut, new RowData(1, 0.3));
153
		panneauFormulaire.add(zoneBas, new RowData(1, 0.5));
154
		panneauFormulaire.add(zoneBas, new RowData(1, 0.5));
154
		panneauFormulaire.setScrollMode(Scroll.AUTO);
155
		panneauFormulaire.setScrollMode(Scroll.AUTO);
155
		genererTitreFormulaire();
156
		genererTitreFormulaire();
156
		
157
		
157
		creerZoneAuteurs();
158
		creerZoneAuteurs();
158
		zoneHaut.add(auteursFieldset);
159
		zoneHaut.add(auteursFieldset);
159
		
160
		
160
		creerZoneGeneralites();
161
		creerZoneGeneralites();
161
		zoneBas.add(generalitesFieldset);
162
		zoneBas.add(generalitesFieldset);
162
		
163
		
163
		creerZoneEdition();
164
		creerZoneEdition();
164
		zoneBas.add(editionFieldset);
165
		zoneBas.add(editionFieldset);
165
		
166
		
166
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
167
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
167
			mediateurCourrant.selectionnerPublication(this, publicationId, sequenceur);
168
			mediateurCourrant.selectionnerPublication(this, publicationId, sequenceur);
168
			mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR, sequenceur);
169
			mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR, sequenceur);
169
			sequenceur.empilerRafraichissement(this, new Information("chargement_modifier_ok"));
170
			sequenceur.empilerRafraichissement(this, new Information("chargement_modifier_ok"));
170
		}
171
		}
171
	}
172
	}
172
	
173
	
173
	public void actualiserEtatBoutonsBarreOutils() {
174
	public void actualiserEtatBoutonsBarreOutils() {
174
			// Activation des boutons si la grille contient un élément
175
			// Activation des boutons si la grille contient un élément
175
			if (grille.getStore().getCount() > 0) {  
176
			if (grille.getStore().getCount() > 0) {  
176
				personnesBoutonSupprimer.enable();
177
				personnesBoutonSupprimer.enable();
177
				personnesBoutonModifier.enable();
178
				personnesBoutonModifier.enable();
178
			}
179
			}
179
			// Désactivation des boutons si la grille ne contient plus d'élément
180
			// Désactivation des boutons si la grille ne contient plus d'élément
180
			if (grille.getStore().getCount() == 0) {  
181
			if (grille.getStore().getCount() == 0) {  
181
				personnesBoutonSupprimer.disable();
182
				personnesBoutonSupprimer.disable();
182
				personnesBoutonModifier.disable();
183
				personnesBoutonModifier.disable();
183
			}
184
			}
184
		}
185
		}
185
	
186
	
186
	private ToolBar creerBarreOutilsGrille() {
187
	private ToolBar creerBarreOutilsGrille() {
187
		ToolBar barreOutils = new ToolBar();  
188
		ToolBar barreOutils = new ToolBar();  
188
		
189
		
189
		Button ajouterBouton = creerBoutonAjouter();
190
		Button ajouterBouton = creerBoutonAjouter();
190
		barreOutils.add(ajouterBouton);
191
		barreOutils.add(ajouterBouton);
191
		
192
		
192
		barreOutils.add(new Text(" ou "));
193
		barreOutils.add(new Text(" ou "));
193
		
194
		
194
		personnesSaisiesComboBox = creerComboBoxPersonnesSaisies();
195
		personnesSaisiesComboBox = creerComboBoxPersonnesSaisies();
195
		barreOutils.add(personnesSaisiesComboBox);
196
		barreOutils.add(personnesSaisiesComboBox);
196
		
197
		
197
		barreOutils.add(new SeparatorToolItem());
198
		barreOutils.add(new SeparatorToolItem());
198
		
199
		
199
		personnesBoutonModifier = creerBoutonModifier();
200
		personnesBoutonModifier = creerBoutonModifier();
200
		barreOutils.add(personnesBoutonModifier);
201
		barreOutils.add(personnesBoutonModifier);
201
		
202
		
202
		barreOutils.add(new SeparatorToolItem());
203
		barreOutils.add(new SeparatorToolItem());
203
		
204
		
204
		personnesBoutonSupprimer = creerBoutonSupprimer();
205
		personnesBoutonSupprimer = creerBoutonSupprimer();
205
		barreOutils.add(personnesBoutonSupprimer);		
206
		barreOutils.add(personnesBoutonSupprimer);		
206
		
207
		
207
		barreOutils.add(new SeparatorToolItem());
208
		barreOutils.add(new SeparatorToolItem());
208
		
209
		
209
		Button rafraichirBouton = creerBoutonRafraichir();
210
		Button rafraichirBouton = creerBoutonRafraichir();
210
		barreOutils.add(rafraichirBouton);
211
		barreOutils.add(rafraichirBouton);
211
		
212
		
212
		return barreOutils;
213
		return barreOutils;
213
	}
214
	}
214
 
215
 
215
	private Button creerBoutonAjouter() {
216
	private Button creerBoutonAjouter() {
216
		Button bouton = new Button(i18nC.ajouter());
217
		Button bouton = new Button(i18nC.ajouter());
217
		bouton.setIcon(Images.ICONES.vcardAjouter());
218
		bouton.setIcon(Images.ICONES.vcardAjouter());
218
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
219
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
219
			public void componentSelected(ButtonEvent ce) {  
220
			public void componentSelected(ButtonEvent ce) {  
220
				fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
221
				fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
221
				fenetreFormulaire.show();
222
				fenetreFormulaire.show();
222
			}  
223
			}  
223
		});
224
		});
224
		return bouton;
225
		return bouton;
225
	}
226
	}
226
	
227
	
227
	private Button creerBoutonModifier() {
228
	private Button creerBoutonModifier() {
228
		Button bouton = new Button(i18nC.modifier());
229
		Button bouton = new Button(i18nC.modifier());
229
		bouton.setIcon(Images.ICONES.vcardModifier());
230
		bouton.setIcon(Images.ICONES.vcardModifier());
230
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
231
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
231
			public void componentSelected(ButtonEvent ce) {  
232
			public void componentSelected(ButtonEvent ce) {  
232
				Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
233
				Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
233
				
234
				
234
				if (personneSaisieSelectionnee == null) {
235
				if (personneSaisieSelectionnee == null) {
235
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
236
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
236
				} else {
237
				} else {
237
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
238
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
238
					fenetreFormulaire.show();
239
					fenetreFormulaire.show();
239
				}
240
				}
240
			}  
241
			}  
241
		});
242
		});
242
		return bouton;
243
		return bouton;
243
	}
244
	}
244
	
245
	
245
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
246
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
246
		String personneId = null;
247
		String personneId = null;
247
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
248
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
248
			Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
249
			Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
249
			personneId = personneSaisieSelectionnee.getId();
250
			personneId = personneSaisieSelectionnee.getId();
250
		}
251
		}
251
		
252
		
252
		final FenetreForm fenetre = new FenetreForm("");
253
		final FenetreForm fenetre = new FenetreForm("");
253
		final PersonneForm formulaire = creerFormulairePersonne(fenetre, personneId);
254
		final PersonneForm formulaire = creerFormulairePersonne(fenetre, personneId);
254
		fenetre.add(formulaire);
255
		fenetre.add(formulaire);
255
		return fenetre;
256
		return fenetre;
256
	}
257
	}
257
	
258
	
258
	private PersonneForm creerFormulairePersonne(final FenetreForm fenetre, final String personneId) {
259
	private PersonneForm creerFormulairePersonne(final FenetreForm fenetre, final String personneId) {
259
		PersonneForm formulairePersonne = new PersonneForm(mediateur, personneId, this);
260
		PersonneForm formulairePersonne = new PersonneForm(mediateur, personneId, this);
260
		FormPanel panneauFormulaire = formulairePersonne.getFormulaire();
261
		FormPanel panneauFormulaire = formulairePersonne.getFormulaire();
261
		fenetre.setHeading(panneauFormulaire.getHeading());
262
		fenetre.setHeading(panneauFormulaire.getHeading());
262
		panneauFormulaire.setHeaderVisible(false);
263
		panneauFormulaire.setHeaderVisible(false);
263
		panneauFormulaire.setTopComponent(null);
264
		panneauFormulaire.setTopComponent(null);
264
		
265
		
265
		// FIXME : avec GXT-2.1.0 la redéfinition du bottom component ne marche plus. Nous le cachons et en créeons un dans la fenêtre.
266
		// FIXME : avec GXT-2.1.0 la redéfinition du bottom component ne marche plus. Nous le cachons et en créeons un dans la fenêtre.
266
		panneauFormulaire.getBottomComponent().hide();
267
		panneauFormulaire.getBottomComponent().hide();
267
		SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePersonne(fenetre, formulairePersonne);
268
		SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePersonne(fenetre, formulairePersonne);
268
		final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
269
		final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
269
		fenetre.setBottomComponent(barreValidation);
270
		fenetre.setBottomComponent(barreValidation);
270
		
271
		
271
		return formulairePersonne;
272
		return formulairePersonne;
272
	}
273
	}
273
	
274
	
274
	private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePersonne(final FenetreForm fenetre, final PersonneForm formulaire) {
275
	private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePersonne(final FenetreForm fenetre, final PersonneForm formulaire) {
275
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
276
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
276
			public void componentSelected(ButtonEvent ce) {
277
			public void componentSelected(ButtonEvent ce) {
277
				String code = ((Button) ce.getComponent()).getData("code");
278
				String code = ((Button) ce.getComponent()).getData("code");
278
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
279
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
279
					if (formulaire.soumettreFormulaire()) {
280
					if (formulaire.soumettreFormulaire()) {
280
						fenetre.hide();
281
						fenetre.hide();
281
					}
282
					}
282
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
283
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
283
					formulaire.soumettreFormulaire();
284
					formulaire.soumettreFormulaire();
284
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
285
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
285
					fenetre.hide();
286
					fenetre.hide();
286
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
287
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
287
					fenetreFormulaire.hide();
288
					fenetreFormulaire.hide();
288
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(formulaire.mode);
289
					fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(formulaire.mode);
289
					fenetreFormulaire.show();
290
					fenetreFormulaire.show();
290
				}
291
				}
291
			}
292
			}
292
		};
293
		};
293
		
294
		
294
		return ecouteur;
295
		return ecouteur;
295
	}
296
	}
296
	
297
	
297
	private Button creerBoutonSupprimer() {
298
	private Button creerBoutonSupprimer() {
298
		Button bouton = new Button(i18nC.supprimer());
299
		Button bouton = new Button(i18nC.supprimer());
299
		bouton.setIcon(Images.ICONES.vcardSupprimer());
300
		bouton.setIcon(Images.ICONES.vcardSupprimer());
300
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
301
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
301
			public void componentSelected(ButtonEvent ce) {
302
			public void componentSelected(ButtonEvent ce) {
302
				Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
303
				Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
303
				if (personneSaisieSelectionnee == null) {
304
				if (personneSaisieSelectionnee == null) {
304
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
305
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
305
				} else {
306
				} else {
306
					supprimerDansGrille(personneSaisieSelectionnee);
307
					supprimerDansGrille(personneSaisieSelectionnee);
307
				}
308
				}
308
			}   
309
			}   
309
		});
310
		});
310
		return bouton;
311
		return bouton;
311
	}
312
	}
312
	
313
	
313
	private Button creerBoutonRafraichir() {
314
	private Button creerBoutonRafraichir() {
314
		Button bouton = new Button(i18nC.rafraichir());
315
		Button bouton = new Button(i18nC.rafraichir());
315
		bouton.setIcon(Images.ICONES.rafraichir());
316
		bouton.setIcon(Images.ICONES.rafraichir());
316
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
317
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
317
			public void componentSelected(ButtonEvent ce) {
318
			public void componentSelected(ButtonEvent ce) {
318
				actualiserGrille();
319
				actualiserGrille();
319
			}   
320
			}   
320
		});
321
		});
321
		return bouton;
322
		return bouton;
322
	}
323
	}
323
	
324
	
324
	private void actualiserGrille() {
325
	private void actualiserGrille() {
325
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
326
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
326
			// FIXME : c'est la merde
327
			// FIXME : c'est la merde
327
			//mediateur.selectionner(this, null, personneSelectionnee.getId(), "%");
328
			//mediateur.selectionner(this, null, personneSelectionnee.getId(), "%");
328
		} else {
329
		} else {
329
			grille.getStore().removeAll();
330
			grille.getStore().removeAll();
330
			layout();
331
			layout();
331
		}
332
		}
332
	}
333
	}
333
	
334
	
334
	private ComboBox<Personne> creerComboBoxPersonnesSaisies() {
335
	private ComboBox<Personne> creerComboBoxPersonnesSaisies() {
335
		ListStore<Personne> personnesSaisiesStore = new ListStore<Personne>();
336
		ListStore<Personne> personnesSaisiesStore = new ListStore<Personne>();
336
		
337
		
337
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
338
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
338
		comboBox.setWidth(400);
339
		comboBox.setWidth(400);
339
		comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
340
		comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
340
		comboBox.setTriggerAction(TriggerAction.ALL);  
341
		comboBox.setTriggerAction(TriggerAction.ALL);  
341
		comboBox.setEditable(true);
342
		comboBox.setEditable(true);
342
		comboBox.setDisplayField("fmt_nom_complet");
343
		comboBox.setDisplayField("fmt_nom_complet");
343
		comboBox.setStore(personnesSaisiesStore);
344
		comboBox.setStore(personnesSaisiesStore);
344
		comboBox.addKeyListener(new KeyListener() {
345
		comboBox.addKeyListener(new KeyListener() {
345
			public void componentKeyUp(ComponentEvent ce) {
346
			public void componentKeyUp(ComponentEvent ce) {
346
				if (personnesSaisiesComboBox.getRawValue() != null && personnesSaisiesComboBox.getRawValue().length() > 0) {
347
				if (personnesSaisiesComboBox.getRawValue() != null && personnesSaisiesComboBox.getRawValue().length() > 0) {
347
					if (!ce.isNavKeyPress()) {
348
					if (!ce.isNavKeyPress()) {
348
						obtenirPersonnesSaisies(personnesSaisiesComboBox.getRawValue());
349
						obtenirPersonnesSaisies(personnesSaisiesComboBox.getRawValue());
349
					}
350
					}
350
				}
351
				}
351
			}
352
			}
352
		});
353
		});
353
		comboBox.addListener(Events.Select, new Listener<BaseEvent>() {
354
		comboBox.addListener(Events.Select, new Listener<BaseEvent>() {
354
			public void handleEvent(BaseEvent be) {
355
			public void handleEvent(BaseEvent be) {
355
				if (personnesSaisiesComboBox.getValue() instanceof Personne) {
356
				if (personnesSaisiesComboBox.getValue() instanceof Personne) {
356
					// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
357
					// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
357
					Personne personneSaisieSelectionne = personnesSaisiesComboBox.getValue();
358
					Personne personneSaisieSelectionne = personnesSaisiesComboBox.getValue();
358
					if (grille.getStore().findModel(personneSaisieSelectionne) != null)	{
359
					if (grille.getStore().findModel(personneSaisieSelectionne) != null)	{
359
						Info.display("Information", "La personne est déjà présente dans la liste d'auteurs");
360
						Info.display("Information", "La personne est déjà présente dans la liste d'auteurs");
360
					} else {
361
					} else {
361
						if (!auteursInitialListe.containsValue(personneSaisieSelectionne))	{
362
						if (!auteursInitialListe.containsValue(personneSaisieSelectionne))	{
362
							auteursAjoutes.put(personneSaisieSelectionne.getId(), personneSaisieSelectionne);
363
							auteursAjoutes.put(personneSaisieSelectionne.getId(), personneSaisieSelectionne);
363
						}
364
						}
364
						ajouterDansGrille(personneSaisieSelectionne);
365
						ajouterDansGrille(personneSaisieSelectionne);
365
						personnesSaisiesComboBox.setValue(null);
366
						personnesSaisiesComboBox.setValue(null);
366
					}
367
					}
367
				}
368
				}
368
			}
369
			}
369
		});
370
		});
370
		return comboBox;
371
		return comboBox;
371
	}
372
	}
372
	
373
	
373
	private void obtenirPersonnesSaisies(String nom) {
374
	private void obtenirPersonnesSaisies(String nom) {
374
		mediateur.selectionnerPersonneParNomComplet(this, null, nom+"%", null); 
375
		mediateur.selectionnerPersonneParNomComplet(this, null, nom+"%", null); 
375
	}
376
	}
376
	
377
	
377
	private void ajouterDansGrille(Personne personne) {
378
	private void ajouterDansGrille(Personne personne) {
378
		ajouterDansGrille(personne, 0);
379
		ajouterDansGrille(personne, 0);
379
	}
380
	}
380
	
381
	
381
	private void ajouterDansGrille(Personne personne, int index) {
382
	private void ajouterDansGrille(Personne personne, int index) {
382
		if (personne != null) {
383
		if (personne != null) {
383
			if (!grille.getStore().contains(personne))	{
384
			if (!grille.getStore().contains(personne))	{
384
				//1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter
385
				//1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter
385
				if (!auteursInitialListe.containsValue(personne))	{
386
				if (!auteursInitialListe.containsValue(personne))	{
386
					auteursAjoutes.put(personne.getId(), personne);
387
					auteursAjoutes.put(personne.getId(), personne);
387
				}
388
				}
388
				
389
				
389
				// L'enlever de la liste à supprimer
390
				// L'enlever de la liste à supprimer
390
				if (auteursSupprimes.containsValue(personne))	{
391
				if (auteursSupprimes.containsValue(personne))	{
391
					auteursSupprimes.remove(personne);
392
					auteursSupprimes.remove(personne);
392
				}
393
				}
393
				//2) Ajouter a la grille
394
				//2) Ajouter a la grille
394
				grille.getStore().insert(personne, index);
395
				grille.getStore().insert(personne, index);
395
				grille.getSelectionModel().select(index, false);
396
				grille.getSelectionModel().select(index, false);
396
			} else {
397
			} else {
397
				InfoLogger.display("Information", "La personne choisie existe déjà dans la liste.");
398
				InfoLogger.display("Information", "La personne choisie existe déjà dans la liste.");
398
			}
399
			}
399
		}
400
		}
400
	}
401
	}
401
	
402
	
402
	/**
403
	/**
403
	 * Met à jour la grille avec les informations contenus dans la variable listePublicationsLiees
404
	 * Met à jour la grille avec les informations contenus dans la variable listePublicationsLiees
404
	 */
405
	 */
405
	private void mettreAJourGrille()	{
406
	private void mettreAJourGrille()	{
406
 
407
 
407
		grille.getStore().removeAll();
408
		grille.getStore().removeAll();
408
		grille.getStore().add(listePersonne.toList());
409
		grille.getStore().add(listePersonne.toList());
409
	}
410
	}
410
	
411
	
411
	private void supprimerDansGrille(Personne personne) {
412
	private void supprimerDansGrille(Personne personne) {
412
		if (personne != null) {
413
		if (personne != null) {
413
			//1) Ajouter a la liste des personne à supprimer uniquement si est présente dans la liste initiale
414
			//1) Ajouter a la liste des personne à supprimer uniquement si est présente dans la liste initiale
414
			if (auteursInitialListe.containsValue(personne)) {
415
			if (auteursInitialListe.containsValue(personne)) {
415
				auteursSupprimes.put(personne.getId(), personne);
416
				auteursSupprimes.put(personne.getId(), personne);
416
			}
417
			}
417
			
418
			
418
			if (auteursAjoutes.containsValue(personne))	{
419
			if (auteursAjoutes.containsValue(personne))	{
419
				auteursAjoutes.remove(personne);
420
				auteursAjoutes.remove(personne);
420
			}
421
			}
421
			
422
			
422
			//2) Supprimer la personne de la liste
423
			//2) Supprimer la personne de la liste
423
			grille.getStore().remove(personne);	
424
			grille.getStore().remove(personne);	
424
		} else {
425
		} else {
425
			Info.display("Information", "Vous devez sélectionner une personne");
426
			Info.display("Information", "Vous devez sélectionner une personne");
426
		}
427
		}
427
	}
428
	}
428
	
429
	
429
	private EditorGrid<Personne> creerGrille() {
430
	private EditorGrid<Personne> creerGrille() {
430
		
431
		
431
		ListStore<Personne> storeGrille = new ListStore<Personne>();
432
		ListStore<Personne> storeGrille = new ListStore<Personne>();
432
		storeGrille.addListener(Store.Add, new Listener<StoreEvent<Personne>>() {
433
		storeGrille.addListener(Store.Add, new Listener<StoreEvent<Personne>>() {
433
			public void handleEvent(StoreEvent<Personne> ce) {
434
			public void handleEvent(StoreEvent<Personne> ce) {
434
				actualiserEtatBoutonsBarreOutils();
435
				actualiserEtatBoutonsBarreOutils();
435
			}
436
			}
436
		});
437
		});
437
		
438
		
438
		storeGrille.addListener(Store.Remove, new Listener<StoreEvent<Personne>>() {
439
		storeGrille.addListener(Store.Remove, new Listener<StoreEvent<Personne>>() {
439
			public void handleEvent(StoreEvent<Personne> ce) {
440
			public void handleEvent(StoreEvent<Personne> ce) {
440
				actualiserEtatBoutonsBarreOutils();
441
				actualiserEtatBoutonsBarreOutils();
441
			}
442
			}
442
		});
443
		});
443
		
444
		
444
		storeGrille.addListener(Store.Update, new Listener<StoreEvent<Personne>>() {
445
		storeGrille.addListener(Store.Update, new Listener<StoreEvent<Personne>>() {
445
			public void handleEvent(StoreEvent<Personne> ce) {
446
			public void handleEvent(StoreEvent<Personne> ce) {
446
				if (ce.getRecord().isModified("_role_") && !ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
447
				if (ce.getRecord().isModified("_role_") && !ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
447
					ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE);
448
					ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE);
448
				}
449
				}
449
			}
450
			}
450
		});		
451
		});		
451
		
452
		
452
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
453
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
453
		colonnes.add(new ColumnConfig("fmt_nom_complet", i18nC.personneNomComplet(), 150));
454
		colonnes.add(new ColumnConfig("fmt_nom_complet", i18nC.personneNomComplet(), 150));
454
		colonnes.add(new ColumnConfig("code_postal", i18nC.personneCodePostal(), 150));
455
		colonnes.add(new ColumnConfig("code_postal", i18nC.personneCodePostal(), 150));
455
		colonnes.add(new ColumnConfig("ville", i18nC.personneVille(), 75));
456
		colonnes.add(new ColumnConfig("ville", i18nC.personneVille(), 75));
456
		colonnes.add(new ColumnConfig("truk_courriel", i18nC.personneCourriel(), 75));
457
		colonnes.add(new ColumnConfig("truk_courriel", i18nC.personneCourriel(), 75));
457
		
458
		
458
		GridSelectionModel<Personne> modeleDeSelection = new GridSelectionModel<Personne>();
459
		GridSelectionModel<Personne> modeleDeSelection = new GridSelectionModel<Personne>();
459
		
460
		
460
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
461
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
461
		
462
		
462
		EditorGrid<Personne> grillePublications = new EditorGrid<Personne>(storeGrille, modeleDeColonnes);
463
		EditorGrid<Personne> grillePublications = new EditorGrid<Personne>(storeGrille, modeleDeColonnes);
463
		grillePublications.setHeight("100%");
464
		grillePublications.setHeight("100%");
464
		grillePublications.setBorders(true);
465
		grillePublications.setBorders(true);
465
		grillePublications.setSelectionModel(modeleDeSelection);
466
		grillePublications.setSelectionModel(modeleDeSelection);
466
		grillePublications.getView().setForceFit(true);
467
		grillePublications.getView().setForceFit(true);
467
		grillePublications.setAutoExpandColumn("fmt_nom_complet");
468
		grillePublications.setAutoExpandColumn("fmt_nom_complet");
468
		grillePublications.setStripeRows(true);
469
		grillePublications.setStripeRows(true);
469
		grillePublications.setTrackMouseOver(true);
470
		grillePublications.setTrackMouseOver(true);
470
		
471
		
471
		return grillePublications;
472
		return grillePublications;
472
	}
473
	}
473
	
474
	
474
	private void genererTitreFormulaire() {
475
	private void genererTitreFormulaire() {
475
		String titre = i18nC.publicationTitreFormAjout();
476
		String titre = i18nC.publicationTitreFormAjout();
476
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
477
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
477
			 titre = i18nC.publicationTitreFormModif();
478
			 titre = i18nC.publicationTitreFormModif();
478
			 if (publication != null) {
479
			 if (publication != null) {
479
				 titre += " - "+i18nC.id()+": "+publication.getId()+" - "+publication.getTitre();
480
				 titre += " - "+i18nC.id()+": "+publication.getId()+" - "+publication.getTitre();
480
			 }
481
			 }
481
		}
482
		}
482
		panneauFormulaire.setHeading(titre);
483
		panneauFormulaire.setHeading(titre);
483
	}
484
	}
484
 
485
 
485
	
486
	
486
	private void creerZoneAuteurs() {
487
	private void creerZoneAuteurs() {
487
		auteursFieldset = new ContentPanel();
488
		auteursFieldset = new ContentPanel();
488
		auteursFieldset.setLayout(new FitLayout());
489
		auteursFieldset.setLayout(new FitLayout());
489
		auteursFieldset.setHeading("Auteurs");
490
		auteursFieldset.setHeading("Auteurs");
490
		
491
		
491
		auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
492
		auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
492
		mediateur.clicObtenirListeAuteurs(this);
493
		mediateur.clicObtenirListeAuteurs(this);
493
		
494
		
494
		creerChampsAuteur();
495
		creerChampsAuteur();
495
	}
496
	}
496
	
497
	
497
	private void creerChampsAuteur() {
498
	private void creerChampsAuteur() {
498
		auteursFieldset.removeAll();
499
		auteursFieldset.removeAll();
499
		barreOutils = creerBarreOutilsGrille();
500
		barreOutils = creerBarreOutilsGrille();
500
		auteursFieldset.setTopComponent(barreOutils);
501
		auteursFieldset.setTopComponent(barreOutils);
501
		grille = creerGrille();
502
		grille = creerGrille();
502
		auteursFieldset.add(grille);
503
		auteursFieldset.add(grille);
503
		auteursFieldset.layout();
504
		auteursFieldset.layout();
504
	}
505
	}
505
	
506
	
506
	private ComboBox<Personne> creerComboBoxAuteursSaisis() {
507
	private ComboBox<Personne> creerComboBoxAuteursSaisis() {
507
		ListStore<Personne> auteursStore = new ListStore<Personne>();
508
		ListStore<Personne> auteursStore = new ListStore<Personne>();
508
		auteursStore.add(auteursStorePartage.getModels());
509
		auteursStore.add(auteursStorePartage.getModels());
509
		
510
		
510
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
511
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
511
		comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
512
		comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
512
		comboBox.setEditable(true);
513
		comboBox.setEditable(true);
513
		comboBox.setAllowBlank(false);
514
		comboBox.setAllowBlank(false);
514
		comboBox.setForceSelection(true);
515
		comboBox.setForceSelection(true);
515
		comboBox.setDisplayField("fmt_nom_complet");
516
		comboBox.setDisplayField("fmt_nom_complet");
516
		comboBox.setTriggerAction(TriggerAction.ALL);
517
		comboBox.setTriggerAction(TriggerAction.ALL);
517
		comboBox.setStore(auteursStore);
518
		comboBox.setStore(auteursStore);
518
		comboBox.setMessageTarget("tooltip");
519
		comboBox.setMessageTarget("tooltip");
519
		comboBox.addStyleName(ComposantClass.OBLIGATOIRE);
520
		comboBox.addStyleName(ComposantClass.OBLIGATOIRE);
520
		comboBox.addListener(Events.Valid, creerEcouteurChampObligatoire());
521
		comboBox.addListener(Events.Valid, creerEcouteurChampObligatoire());
521
 
522
 
522
		return comboBox;
523
		return comboBox;
523
	}
524
	}
524
	
525
	
525
	private void creerZoneGeneralites() {
526
	private void creerZoneGeneralites() {
526
		FormLayout layout = new FormLayout();
527
		FormLayout layout = new FormLayout();
527
		layout.setLabelWidth(200);
528
		layout.setLabelWidth(200);
528
		
529
		
529
		// Fieldset Infos Générales
530
		// Fieldset Infos Générales
530
		generalitesFieldset = new FieldSet();
531
		generalitesFieldset = new FieldSet();
531
		generalitesFieldset.setHeading("Informations générales");
532
		generalitesFieldset.setHeading("Informations générales");
532
		generalitesFieldset.setCollapsible(true);
533
		generalitesFieldset.setCollapsible(true);
533
		generalitesFieldset.setLayout(layout);
534
		generalitesFieldset.setLayout(layout);
534
 
535
 
535
		ModelType modelTypeProjets = new ModelType();
536
		ModelType modelTypeProjets = new ModelType();
536
		modelTypeProjets.setRoot("projets");
537
		modelTypeProjets.setRoot("projets");
537
		modelTypeProjets.setTotalName("nbElements");
538
		modelTypeProjets.setTotalName("nbElements");
538
		modelTypeProjets.addField("cpr_nom");
539
		modelTypeProjets.addField("cpr_nom");
539
		modelTypeProjets.addField("cpr_id_projet");
540
		modelTypeProjets.addField("cpr_id_projet");
540
		
541
		
541
		String displayNameProjets = "cpr_nom";
542
		String displayNameProjets = "cpr_nom";
542
		ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(sequenceur);
543
		ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(sequenceur);
543
		
544
		
544
		projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
545
		projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
545
		projetsCombo.setWidth(200, 600);
546
		projetsCombo.setWidth(200, 600);
546
		projetsCombo.getCombo().setTabIndex(tabIndex++);
547
		projetsCombo.getCombo().setTabIndex(tabIndex++);
547
		projetsCombo.getCombo().setFieldLabel(i18nC.projetChamp());
548
		projetsCombo.getCombo().setFieldLabel(i18nC.projetChamp());
548
		projetsCombo.getCombo().setForceSelection(true);
549
		projetsCombo.getCombo().setForceSelection(true);
549
		projetsCombo.getCombo().addStyleName(ComposantClass.OBLIGATOIRE);
550
		projetsCombo.getCombo().addStyleName(ComposantClass.OBLIGATOIRE);
550
		projetsCombo.getCombo().addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire());
551
		projetsCombo.getCombo().addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire());
551
		
552
		
552
		projetsCombo.getCombo().setValidator(new Validator() {
553
		projetsCombo.getCombo().setValidator(new Validator() {
553
			public String validate(Field<?> field, String value) {
554
			public String validate(Field<?> field, String value) {
554
				String retour = null;
555
				String retour = null;
555
				if (field.getRawValue().equals("")) {
556
				if (field.getRawValue().equals("")) {
556
					field.setValue(null);
557
					field.setValue(null);
557
				} else if (projetsCombo.getStore().findModel("cpr_nom", field.getRawValue()) == null) {
558
				} else if (projetsCombo.getStore().findModel("cpr_nom", field.getRawValue()) == null) {
558
					String contenuBrut = field.getRawValue();
559
					String contenuBrut = field.getRawValue();
559
					field.setValue(null);
560
					field.setValue(null);
560
					field.setRawValue(contenuBrut);
561
					field.setRawValue(contenuBrut);
561
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
562
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
562
				}
563
				}
563
				return retour;
564
				return retour;
564
			}
565
			}
565
		});	
566
		});	
566
		generalitesFieldset.add(projetsCombo, new FormData(600, 0));
567
		generalitesFieldset.add(projetsCombo, new FormData(600, 0));
567
		
568
		
568
		titreChp = new TextField<String>();
569
		titreChp = new TextField<String>();
569
		titreChp.setName("cpu");
570
		titreChp.setName("cpu");
570
		titreChp.setFieldLabel("Titre de l'article ou de l'ouvrage");
571
		titreChp.setFieldLabel("Titre de l'article ou de l'ouvrage");
571
		titreChp.addStyleName(ComposantClass.OBLIGATOIRE);
572
		titreChp.addStyleName(ComposantClass.OBLIGATOIRE);
572
		titreChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
573
		titreChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
573
		generalitesFieldset.add(titreChp, new FormData(450, 0));
574
		generalitesFieldset.add(titreChp, new FormData(450, 0));
574
		
575
		
575
		collectionChp = new TextField<String>();
576
		collectionChp = new TextField<String>();
576
		collectionChp.setFieldLabel("Intitulé de la revue ou de la collection");
577
		collectionChp.setFieldLabel("Intitulé de la revue ou de la collection");
577
		generalitesFieldset.add(collectionChp, new FormData(450, 0));
578
		generalitesFieldset.add(collectionChp, new FormData(450, 0));
578
		
579
		
579
		uriChp = new TextField<String>();
580
		uriChp = new TextField<String>();
580
		uriChp.setFieldLabel("URL de la publication");
581
		uriChp.setFieldLabel("URL de la publication");
581
		generalitesFieldset.add(uriChp, new FormData(450, 0));
582
		generalitesFieldset.add(uriChp, new FormData(450, 0));
582
	}
583
	}
583
	
584
	
584
	private void creerZoneEdition() {
585
	private void creerZoneEdition() {
585
		FormLayout layout = new FormLayout();
586
		FormLayout layout = new FormLayout();
586
		layout.setLabelWidth(200);
587
		layout.setLabelWidth(200);
587
 
588
 
588
		// Fieldset Edition
589
		// Fieldset Edition
589
		editionFieldset = new FieldSet();
590
		editionFieldset = new FieldSet();
590
		editionFieldset.setHeading("Édition");
591
		editionFieldset.setHeading("Édition");
591
		editionFieldset.setCollapsible(true);
592
		editionFieldset.setCollapsible(true);
592
		editionFieldset.setLayout(layout);
593
		editionFieldset.setLayout(layout);
593
		
594
		
594
 
595
 
595
		/*****************************************************/
596
		/*****************************************************/
596
		/**			Champ 'Editeur de la publication'		**/
597
		/**			Champ 'Editeur de la publication'		**/
597
		/*****************************************************/		
598
		/*****************************************************/		
598
		ModelType modelTypeStructures = new ModelType();
599
		ModelType modelTypeStructures = new ModelType();
599
		modelTypeStructures.setRoot("structures");
600
		modelTypeStructures.setRoot("structures");
600
		modelTypeStructures.setTotalName("nbElements");
601
		modelTypeStructures.setTotalName("nbElements");
601
		modelTypeStructures.addField("cs_nom");
602
		modelTypeStructures.addField("cs_nom");
602
		modelTypeStructures.addField("cs_id_structure");
603
		modelTypeStructures.addField("cs_id_structure");
603
		
604
		
604
		String displayNameStructures = "cs_nom";
605
		String displayNameStructures = "cs_nom";
605
		ProxyStructures<ModelData> proxyStructures = new ProxyStructures<ModelData>(sequenceur);
606
		ProxyStructures<ModelData> proxyStructures = new ProxyStructures<ModelData>(sequenceur);
606
		
607
		
607
		editeurCombobox = new ChampComboBoxRechercheTempsReelPaginable(proxyStructures, modelTypeStructures, displayNameStructures);
608
		editeurCombobox = new ChampComboBoxRechercheTempsReelPaginable(proxyStructures, modelTypeStructures, displayNameStructures);
608
		editeurCombobox.setWidth(200, 600);
609
		editeurCombobox.setWidth(200, 600);
609
		editeurCombobox.getCombo().setTabIndex(tabIndex++);
610
		editeurCombobox.getCombo().setTabIndex(tabIndex++);
610
		editeurCombobox.getCombo().setEmptyText("Sélectionner un éditeur...");
611
		editeurCombobox.getCombo().setEmptyText("Sélectionner un éditeur...");
611
		editeurCombobox.getCombo().setFieldLabel("Éditeur de la publication");
612
		editeurCombobox.getCombo().setFieldLabel("Éditeur de la publication");
612
		editeurCombobox.getCombo().setEditable(true);
613
		editeurCombobox.getCombo().setEditable(true);
613
		editionFieldset.add(editeurCombobox, new FormData(600, 0));
614
		editionFieldset.add(editeurCombobox, new FormData(600, 0));
614
		
615
		
615
		/*********************************************/
616
		/*********************************************/
616
		/**			Champ 'Date de publication'		**/
617
		/**			Champ 'Date de publication'		**/
617
		/*********************************************/			
618
		/*********************************************/			
618
		datePublicationChp = new TextField<String>();
619
		datePublicationChp = new TextField<String>();
619
		datePublicationChp.setMaxLength(4);
620
		datePublicationChp.setMaxLength(4);
620
		datePublicationChp.setMinLength(4);
621
		datePublicationChp.setMinLength(4);
621
		datePublicationChp.setFieldLabel("Année de publication");
622
		datePublicationChp.setFieldLabel("Année de publication");
622
		datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE);
623
		datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE);
623
		datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
624
		datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
624
		editionFieldset.add(datePublicationChp, new FormData(40, 0));
625
		editionFieldset.add(datePublicationChp, new FormData(40, 0));
625
		
626
		
626
		/*****************************/
627
		/*****************************/
627
		/**			Champ ''		**/
628
		/**			Champ ''		**/
628
		/*****************************/	
629
		/*****************************/	
629
		tomeChp = new TextField<String>();
630
		tomeChp = new TextField<String>();
630
		tomeChp.setFieldLabel("Série de la revue ou tome");
631
		tomeChp.setFieldLabel("Série de la revue ou tome");
631
		editionFieldset.add(tomeChp, new FormData(75, 0));
632
		editionFieldset.add(tomeChp, new FormData(75, 0));
632
 
633
 
633
		/*****************************/
634
		/*****************************/
634
		/**			Champ ''		**/
635
		/**			Champ ''		**/
635
		/*****************************/	
636
		/*****************************/	
636
		fasciculeChp = new TextField<String>();
637
		fasciculeChp = new TextField<String>();
637
		fasciculeChp.setFieldLabel("Fascicule de la revue");
638
		fasciculeChp.setFieldLabel("Fascicule de la revue");
638
		editionFieldset.add(fasciculeChp, new FormData(75, 0));
639
		editionFieldset.add(fasciculeChp, new FormData(75, 0));
639
 
640
 
640
		/*****************************/
641
		/*****************************/
641
		/**			Champ ''		**/
642
		/**			Champ ''		**/
642
		/*****************************/	
643
		/*****************************/	
643
		pagesChp = new TextField<String>();
644
		pagesChp = new TextField<String>();
644
		pagesChp.setFieldLabel("Pages");
645
		pagesChp.setFieldLabel("Pages");
645
		pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
646
		pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
646
		editionFieldset.add(pagesChp, new FormData(100, 0));
647
		editionFieldset.add(pagesChp, new FormData(100, 0));
647
	}
648
	}
648
 
649
 
649
	public void rafraichir(Object nouvellesDonnees) {
650
	public void rafraichir(Object nouvellesDonnees) {
650
		if (nouvellesDonnees instanceof Publication) {
651
		if (nouvellesDonnees instanceof Publication) {
651
			// Si on a reçu les details d'une publication
652
			// Si on a reçu les details d'une publication
652
			publication = (Publication) nouvellesDonnees;
653
			publication = (Publication) nouvellesDonnees;
653
			//rafraichirPublication((Publication) nouvellesDonnees);
-
 
654
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
654
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
655
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
655
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
656
		} else if (nouvellesDonnees instanceof Information) {
656
		} else if (nouvellesDonnees instanceof Information) {
657
			rafraichirInformation((Information) nouvellesDonnees);	
657
			rafraichirInformation((Information) nouvellesDonnees);	
658
		} else {
658
		} else {
659
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
659
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
660
		}
660
		}
661
	}
661
	}
662
	
662
	
663
	private void synchronisation() {
663
	private void synchronisation() {
664
		
664
		
665
	}
665
	}
666
	
666
	
667
	private void miseAJourAuteursInitialListe() {
667
	private void miseAJourAuteursInitialListe() {
668
		Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
668
		Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
669
		while (clesAjoutees.hasNext()) {
669
		while (clesAjoutees.hasNext()) {
670
			Personne auteurAjoute = auteursAjoutes.get(clesAjoutees.next());
670
			Personne auteurAjoute = auteursAjoutes.get(clesAjoutees.next());
671
			auteursInitialListe.put(auteurAjoute.getId(), auteurAjoute);
671
			auteursInitialListe.put(auteurAjoute.getId(), auteurAjoute);
672
		}
672
		}
673
		
673
		
674
		Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
674
		Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
675
		while (clesSupprimees.hasNext()) {
675
		while (clesSupprimees.hasNext()) {
676
			Personne auteurSupprime = auteursSupprimes.get(clesSupprimees.next());
676
			Personne auteurSupprime = auteursSupprimes.get(clesSupprimees.next());
677
			auteursInitialListe.remove(auteurSupprime.getId());
677
			auteursInitialListe.remove(auteurSupprime.getId());
678
		}
678
		}
679
	}
679
	}
680
	
680
	
681
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
681
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
682
		Iterator<String> it = auteurs.keySet().iterator();
682
		Iterator<String> it = auteurs.keySet().iterator();
683
		while (it.hasNext()) {
683
		while (it.hasNext()) {
684
			Personne auteur = auteurs.get(it.next()).getPersonne();
684
			Personne auteur = auteurs.get(it.next()).getPersonne();
685
			auteursInitialListe.put(auteur.getId(), auteur);
685
			auteursInitialListe.put(auteur.getId(), auteur);
686
		}
686
		}
687
		
687
		
688
		grille.getStore().removeAll();
688
		grille.getStore().removeAll();
689
		grille.getStore().add(auteursInitialListe.toList());
689
		grille.getStore().add(auteursInitialListe.toList());
690
		layout();
690
		layout();
691
	}
691
	}
692
	
692
	
693
	private void rafraichirInformation(Information info) {	
693
	private void rafraichirInformation(Information info) {	
694
		String type = info.getType();
694
		String type = info.getType();
695
		if (type.equals("publication_enregistree"))	{
695
		if (type.equals("publication_enregistree"))	{
696
			// la publication vien d'etre enregistrée, on soumet les auteurs
696
			// la publication vien d'etre enregistrée, on soumet les auteurs
697
			soumettreAuteurs();
697
			soumettreAuteurs();
698
		} else if (type.equals("auteurs_enregistres")) {
698
		} else if (type.equals("auteurs_enregistres")) {
699
			miseAJourAuteursInitialListe();
699
			miseAJourAuteursInitialListe();
700
			initialiserAuteurs();
700
			initialiserAuteurs();
701
			repandreRafraichissement();
701
			repandreRafraichissement();
702
			controlerFermeture();
702
			controlerFermeture();
703
		} else if (type.equals("chargement_modifier_ok"))	{
703
		} else if (type.equals("chargement_modifier_ok"))	{
704
			peuplerFormulaire();
704
			peuplerFormulaire();
705
			genererTitreFormulaire();
705
			genererTitreFormulaire();
706
		}
706
		}
707
		
707
		
708
		if (info.getType().equals("liste_personne")) {
708
		if (info.getType().equals("liste_personne")) {
709
			PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
709
			PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
710
			ListStore store = personnesSaisiesComboBox.getStore();
710
			ListStore store = personnesSaisiesComboBox.getStore();
711
			store.removeAll();
711
			store.removeAll();
712
			store.add(listePersonneAuteur.toList());
712
			store.add(listePersonneAuteur.toList());
713
		
713
		
714
		} else if (info.getType().equals("modif_publication")) {
714
		} else if (info.getType().equals("modif_publication")) {
715
			InfoLogger.display("Modification d'une publication", info.toString());
715
			InfoLogger.display("Modification d'une publication", info.toString());
716
		} else if (info.getType().equals("ajout_publication")) {
716
		} else if (info.getType().equals("ajout_publication")) {
717
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String && ((String) info.getDonnee(0)).matches("[0-9]+")) {
717
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String && ((String) info.getDonnee(0)).matches("[0-9]+")) {
718
				String publicationId = (String) info.getDonnee(0);
718
				String publicationId = (String) info.getDonnee(0);
719
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
719
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
720
			} else {
720
			} else {
721
				InfoLogger.display("Ajout d'une publication", info.toString());
721
				InfoLogger.display("Ajout d'une publication", info.toString());
722
			}
722
			}
723
		}	
723
		}	
724
	}
724
	}
725
	
-
 
726
	
725
	
727
	private void initialiserAuteurs() {
726
	private void initialiserAuteurs() {
728
		auteursAjoutes = new PersonneListe();
727
		auteursAjoutes = new PersonneListe();
729
		auteursSupprimes = new PersonneListe();
728
		auteursSupprimes = new PersonneListe();
730
	}
729
	}
731
	
730
	
732
	private void repandreRafraichissement() {
731
	private void repandreRafraichissement() {
733
		if (vueExterneARafraichirApresValidation != null) {
732
		if (vueExterneARafraichirApresValidation != null) {
734
			String type = "publication_modifiee";
733
			String type = "publication_modifiee";
735
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
734
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
736
				type = "publication_ajoutee";
735
				type = "publication_ajoutee";
737
			}
736
			}
738
			Information info = new Information(type);
737
			Information info = new Information(type);
739
			info.setDonnee(0, publication);
738
			info.setDonnee(0, publication);
740
			vueExterneARafraichirApresValidation.rafraichir(info);
739
			vueExterneARafraichirApresValidation.rafraichir(info);
741
		}
740
		}
742
	}
741
	}
743
	
742
	
744
	public boolean soumettreFormulaire() {
743
	public boolean soumettreFormulaire() {
745
		boolean formulaireValideOk = verifierFormulaire();
744
		boolean formulaireValideOk = verifierFormulaire();
746
		if (formulaireValideOk) {
745
		if (formulaireValideOk) {
747
			soumettrePublication();
746
			soumettrePublication();
748
		}
747
		}
749
		
748
		
750
		
749
		
751
		return formulaireValideOk;
750
		return formulaireValideOk;
752
	}
751
	}
753
 
752
 
754
	private void soumettrePublication() {
753
	private void soumettrePublication() {
755
		Publication publicationCollectee = collecterPublication();
754
		Publication publicationCollectee = collecterPublication();
756
		if (publicationCollectee != null) {
755
		if (publicationCollectee != null) {
757
			
756
			
758
			// Pour l'enregistrement des collections, on utilise le séquenceur
757
			// Pour l'enregistrement des collections, on utilise le séquenceur
759
			// Il doit attendre le retour de l'enregistrement pour poursuivre
758
			// Il doit attendre le retour de l'enregistrement pour poursuivre
760
			sequenceur = new Sequenceur();
759
			sequenceur = new Sequenceur();
761
			int seqId = sequenceur.lancerRequeteSynchrone(this);
760
			int seqId = sequenceur.lancerRequeteSynchrone(this);
762
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
761
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
763
				mediateur.ajouterPublication(sequenceur, publicationCollectee, seqId);
762
				mediateur.ajouterPublication(sequenceur, publicationCollectee, seqId);
764
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
763
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
765
				mediateur.modifierPublication(sequenceur, publicationCollectee, seqId);
764
				mediateur.modifierPublication(sequenceur, publicationCollectee, seqId);
766
			}
765
			}
767
			sequenceur.empilerRafraichissement(this, new Information("publication_enregistree"));
766
			sequenceur.empilerRafraichissement(this, new Information("publication_enregistree"));
768
		}
767
		}
769
	}
768
	}
770
	
769
	
771
	private void soumettreAuteurs() {
770
	private void soumettreAuteurs() {
772
		
771
		
773
		//attenteAjoutAuteursOk = false;
772
		//attenteAjoutAuteursOk = false;
774
		//attenteSuppressionAuteursOk = false;
773
		//attenteSuppressionAuteursOk = false;
775
		
774
		
776
		//1) Auteurs ajoutés : 
775
		//1) Auteurs ajoutés : 
777
		// - Créer une PublicationAAuteurListe
776
		// - Créer une PublicationAAuteurListe
778
		PublicationAPersonneListe listeDesAuteurs = new PublicationAPersonneListe();
777
		PublicationAPersonneListe listeDesAuteurs = new PublicationAPersonneListe();
779
		Iterator<String> itAuteur = auteursAjoutes.keySet().iterator();
778
		Iterator<String> itAuteur = auteursAjoutes.keySet().iterator();
780
		while (itAuteur.hasNext())	{
779
		while (itAuteur.hasNext())	{
781
			PublicationAPersonne publiAPersonne = new PublicationAPersonne();
780
			PublicationAPersonne publiAPersonne = new PublicationAPersonne();
782
			String cle = itAuteur.next();
781
			String cle = itAuteur.next();
783
			publiAPersonne.setIdPersonne(cle);
782
			publiAPersonne.setIdPersonne(cle);
784
			publiAPersonne.setIdPublication(publication.getId());
783
			publiAPersonne.setIdPublication(publication.getId());
785
			listeDesAuteurs.put(cle, publiAPersonne);
784
			listeDesAuteurs.put(cle, publiAPersonne);
786
		}
785
		}
787
		
786
		
788
		// - envoyer au mediateur SSI personnes à ajouter
787
		// - envoyer au mediateur SSI personnes à ajouter
789
		if (listeDesAuteurs.size() > 0)	{
788
		if (listeDesAuteurs.size() > 0)	{
790
			int seqId = sequenceur.lancerRequeteSynchrone(this);
789
			int seqId = sequenceur.lancerRequeteSynchrone(this);
791
			mediateur.ajouterPublicationAPersonne(sequenceur, publication.getId(), listeDesAuteurs, PublicationAPersonne.ROLE_AUTEUR, seqId);
790
			mediateur.ajouterPublicationAPersonne(sequenceur, publication.getId(), listeDesAuteurs, PublicationAPersonne.ROLE_AUTEUR, seqId);
792
			//attenteAjoutAuteursOk = true;
791
			//attenteAjoutAuteursOk = true;
793
		}
792
		}
794
		
793
		
795
		//2) Auteurs supprimés : 
794
		//2) Auteurs supprimés : 
796
		// - Créer une PublicationAPersonneListe
795
		// - Créer une PublicationAPersonneListe
797
		listeDesAuteurs = new PublicationAPersonneListe();
796
		listeDesAuteurs = new PublicationAPersonneListe();
798
		itAuteur = auteursSupprimes.keySet().iterator();
797
		itAuteur = auteursSupprimes.keySet().iterator();
799
		while (itAuteur.hasNext())	{
798
		while (itAuteur.hasNext())	{
800
			PublicationAPersonne publiAPersonne = new PublicationAPersonne();
799
			PublicationAPersonne publiAPersonne = new PublicationAPersonne();
801
			String cle = itAuteur.next();
800
			String cle = itAuteur.next();
802
			publiAPersonne.setIdPersonne(cle);
801
			publiAPersonne.setIdPersonne(cle);
803
			publiAPersonne.setIdPublication(publication.getId());
802
			publiAPersonne.setIdPublication(publication.getId());
804
			listeDesAuteurs.put(cle, publiAPersonne);
803
			listeDesAuteurs.put(cle, publiAPersonne);
805
		}
804
		}
806
		
805
		
807
		// - Envoyer au médiateur SSI personnes à supprimer
806
		// - Envoyer au médiateur SSI personnes à supprimer
808
		if (listeDesAuteurs.size() > 0) {
807
		if (listeDesAuteurs.size() > 0) {
809
			// Pour une suppression des auteurs, on a pas besoin d'attendre le retour
808
			// Pour une suppression des auteurs, on a pas besoin d'attendre le retour
810
			mediateur.supprimerPublicationAPersonne(this, listeDesAuteurs);
809
			mediateur.supprimerPublicationAPersonne(this, listeDesAuteurs);
811
			//attenteSuppressionAuteursOk = true;
810
			//attenteSuppressionAuteursOk = true;
812
		}
811
		}
813
		
812
		
814
		sequenceur.empilerRafraichissement(this, new Information("auteurs_enregistres"));
813
		sequenceur.empilerRafraichissement(this, new Information("auteurs_enregistres"));
815
	}
814
	}
816
	
815
	
817
	public boolean verifierFormulaire() {
816
	public boolean verifierFormulaire() {
818
		boolean valide = true;
817
		boolean valide = true;
819
		ArrayList<String> messages = new ArrayList<String>();
818
		ArrayList<String> messages = new ArrayList<String>();
820
		
819
		
821
		// Tester si au moins un auteur est présent
820
		// Tester si au moins un auteur est présent
822
		if (grille.getStore().getModels().size() == 0) {
821
		if (grille.getStore().getModels().size() == 0) {
823
			messages.add("Veuillez saisir au moins un auteur.");
822
			messages.add("Veuillez saisir au moins un auteur.");
824
		}
823
		}
825
		
824
		
826
		String titre = titreChp.getValue();
825
		String titre = titreChp.getValue();
827
		if (titre == null || titre.equals("")) {
826
		if (titre == null || titre.equals("")) {
828
			messages.add("Veuillez saisir le titre de la publication !");
827
			messages.add("Veuillez saisir le titre de la publication !");
829
		}
828
		}
830
		
829
		
831
		String uri = uriChp.getValue();
830
		String uri = uriChp.getValue();
832
		if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
831
		if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
833
			messages.add("L'URL saisie n'est pas valide !");
832
			messages.add("L'URL saisie n'est pas valide !");
834
		}
833
		}
835
		
834
		
836
		String datePublication = datePublicationChp.getRawValue();
835
		String datePublication = datePublicationChp.getRawValue();
837
		if (datePublication == null || datePublication.equals("")) {
836
		if (datePublication == null || datePublication.equals("")) {
838
			messages.add("Veuillez saisir une année de parution !");
837
			messages.add("Veuillez saisir une année de parution !");
839
		} else {
838
		} else {
840
			if (!etreDateValide(datePublication)) {
839
			if (!etreDateValide(datePublication)) {
841
				messages.add("Le format de l'année saisie est incorrect !");
840
				messages.add("Le format de l'année saisie est incorrect !");
842
			}
841
			}
843
		}
842
		}
844
		
843
		
845
		String pages = pagesChp.getValue();
844
		String pages = pagesChp.getValue();
846
		String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
845
		String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
847
		if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
846
		if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
848
			messages.add("Le format des pages est incorrect !");
847
			messages.add("Le format des pages est incorrect !");
849
		}
848
		}
850
		
849
		
851
		if (messages.size() != 0) {
850
		if (messages.size() != 0) {
852
			String[] tableauDeMessages = {};
851
			String[] tableauDeMessages = {};
853
			tableauDeMessages = messages.toArray(tableauDeMessages);
852
			tableauDeMessages = messages.toArray(tableauDeMessages);
854
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
853
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
855
			valide = false;
854
			valide = false;
856
		}
855
		}
857
		return valide;		
856
		return valide;		
858
	}
857
	}
859
	
858
	
860
	private void peuplerFormulaire() {
859
	private void peuplerFormulaire() {
861
		setValeurComboProjets();
860
		setValeurComboProjets();
862
		titreChp.setValue(publication.getTitre());
861
		titreChp.setValue(publication.getTitre());
863
		collectionChp.setValue(publication.getCollection());
862
		collectionChp.setValue(publication.getCollection());
864
		uriChp.setValue(publication.getURI());
863
		uriChp.setValue(publication.getURI());
865
		datePublicationChp.setValue(reduireDateParAnnee(publication.getDateParution()));
864
		datePublicationChp.setValue(reduireDateParAnnee(publication.getDateParution()));
866
		tomeChp.setValue(publication.getIndicationNvt());
865
		tomeChp.setValue(publication.getIndicationNvt());
867
		fasciculeChp.setValue(publication.getFascicule());
866
		fasciculeChp.setValue(publication.getFascicule());
868
		pagesChp.setValue(publication.getPages());
867
		pagesChp.setValue(publication.getPages());
869
		
868
		
870
		if (publication.getEditeur().matches("^[0-9]+$")) {
869
		if (publication.getEditeur().matches("^[0-9]+$")) {
871
			editeurCombobox.getCombo().setValue(editeurCombobox.getStore().findModel("cs_id_structure", publication.getEditeur()));
870
			editeurCombobox.getCombo().setValue(editeurCombobox.getStore().findModel("cs_id_structure", publication.getEditeur()));
872
		} else {
871
		} else {
873
			editeurCombobox.getCombo().setRawValue(publication.getEditeur());
872
			editeurCombobox.getCombo().setRawValue(publication.getEditeur());
874
		}
873
		}
875
	}
874
	}
876
	
875
	
877
	private Publication collecterPublication() {
876
	private Publication collecterPublication() {
878
		
877
		
879
		Publication publicationCollectee = (Publication) publication.cloner(new Publication());
878
		Publication publicationCollectee = (Publication) publication.cloner(new Publication());
880
		publicationCollectee.setIdProjet(getValeurComboProjets());
879
		publicationCollectee.setIdProjet(getValeurComboProjets());
881
		publicationCollectee.setAuteur(construireIntituleAuteur());
880
		publicationCollectee.setAuteur(construireIntituleAuteur());
882
		
881
		
883
		String titre = titreChp.getValue();
882
		String titre = titreChp.getValue();
884
		publicationCollectee.setTitre(titre);
883
		publicationCollectee.setTitre(titre);
885
		
884
		
886
		String collection = collectionChp.getValue();
885
		String collection = collectionChp.getValue();
887
		publicationCollectee.setCollection(collection);
886
		publicationCollectee.setCollection(collection);
888
		
887
		
889
		publicationCollectee.setNomComplet(construireNomComplet());
888
		publicationCollectee.setNomComplet(construireNomComplet());
890
		
889
		
891
		String uri = uriChp.getValue();
890
		String uri = uriChp.getValue();
892
		publicationCollectee.setUri(uri);
891
		publicationCollectee.setUri(uri);
893
		
892
		
894
		String editeur = "";
893
		String editeur = "";
895
		if (editeurCombobox.getValeur() != null) {
894
		if (editeurCombobox.getValeur() != null) {
896
			Structure structure = new Structure(editeurCombobox.getValeur());
895
			Structure structure = new Structure(editeurCombobox.getValeur());
897
			editeur = structure.getId();
896
			editeur = structure.getId();
898
			publicationCollectee.setStructureEditeur(structure);
897
			publicationCollectee.setStructureEditeur(structure);
899
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
898
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
900
			editeur = editeurCombobox.getCombo().getRawValue();
899
			editeur = editeurCombobox.getCombo().getRawValue();
901
		}
900
		}
902
		publicationCollectee.setEditeur(editeur);
901
		publicationCollectee.setEditeur(editeur);
903
		
902
		
904
		String anneePublication = datePublicationChp.getRawValue();
903
		String anneePublication = datePublicationChp.getRawValue();
905
		String datePublication = anneePublication+"-00-00";
904
		String datePublication = anneePublication+"-00-00";
906
		publicationCollectee.setDateParution(datePublication);
905
		publicationCollectee.setDateParution(datePublication);
907
		
906
		
908
		String tome = tomeChp.getValue();
907
		String tome = tomeChp.getValue();
909
		publicationCollectee.setIndicationNvt(tome);
908
		publicationCollectee.setIndicationNvt(tome);
910
		
909
		
911
		String fascicule = fasciculeChp.getValue();
910
		String fascicule = fasciculeChp.getValue();
912
		publicationCollectee.setFascicule(fascicule);
911
		publicationCollectee.setFascicule(fascicule);
913
		
912
		
914
		String pages = pagesChp.getValue();
913
		String pages = pagesChp.getValue();
915
		publicationCollectee.setPages(pages);
914
		publicationCollectee.setPages(pages);
916
		
915
		
917
		Publication publicationARetourner = null;
916
		Publication publicationARetourner = null;
918
		if (!publicationCollectee.comparer(publication)) {
917
		if (!publicationCollectee.comparer(publication)) {
919
			publicationARetourner = publication = publicationCollectee;
918
			publicationARetourner = publication = publicationCollectee;
920
		}
919
		}
921
		return publicationARetourner;
920
		return publicationARetourner;
922
	}
921
	}
923
	
922
	
924
	private String construireIntituleEditeur() {
923
	private String construireIntituleEditeur() {
925
		String editeur = "";
924
		String editeur = "";
926
		if (editeurCombobox.getValeur() != null) {
925
		if (editeurCombobox.getValeur() != null) {
927
			Structure structure = new Structure(editeurCombobox.getValeur());
926
			Structure structure = new Structure(editeurCombobox.getValeur());
928
			editeur = structure.getNom();
927
			editeur = structure.getNom();
929
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
928
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
930
			editeur = editeurCombobox.getCombo().getRawValue();
929
			editeur = editeurCombobox.getCombo().getRawValue();
931
		}
930
		}
932
		return editeur;
931
		return editeur;
933
	}
932
	}
934
	
933
	
935
	private String construireIntituleAuteur() {
934
	private String construireIntituleAuteur() {
936
		String intituleAuteur = "";
935
		String intituleAuteur = "";
937
		
936
		
938
		// TODO : ranger par ordre non-alphabétique
937
		// TODO : ranger par ordre non-alphabétique
939
		grille.getStore().sort("nom", SortDir.ASC);
938
		grille.getStore().sort("nom", SortDir.ASC);
940
		List<Personne> auteurs = grille.getStore().getModels();
939
		List<Personne> auteurs = grille.getStore().getModels();
941
		
940
		
942
		Iterator<Personne> itAuteurs = auteurs.iterator();
941
		Iterator<Personne> itAuteurs = auteurs.iterator();
943
		while (itAuteurs.hasNext())	{
942
		while (itAuteurs.hasNext())	{
944
			Personne personneCourante = itAuteurs.next();
943
			Personne personneCourante = itAuteurs.next();
945
			intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
944
			intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
946
			if (itAuteurs.hasNext())	{
945
			if (itAuteurs.hasNext())	{
947
				intituleAuteur+=", ";
946
				intituleAuteur+=", ";
948
			}
947
			}
949
		} 
948
		} 
950
		return intituleAuteur;
949
		return intituleAuteur;
951
	}
950
	}
952
	
951
	
953
	private String construireNomComplet() {
952
	private String construireNomComplet() {
954
		// Intitulé de la publication complet : fmt_auteur, date_parution(année). titre. Editeur (nom), collection, fascicule, indication_nvt. pages.
953
		// Intitulé de la publication complet : fmt_auteur, date_parution(année). titre. Editeur (nom), collection, fascicule, indication_nvt. pages.
955
		String nomComplet = "";
954
		String nomComplet = "";
956
		String auteurs = construireIntituleAuteur();
955
		String auteurs = construireIntituleAuteur();
957
		String annee = datePublicationChp.getRawValue();
956
		String annee = datePublicationChp.getRawValue();
958
		String titre = titreChp.getValue();
957
		String titre = titreChp.getValue();
959
		String editeur = construireIntituleEditeur();
958
		String editeur = construireIntituleEditeur();
960
		
959
		
961
		nomComplet += auteurs+", "+annee+". "+titre+".";
960
		nomComplet += auteurs+", "+annee+". "+titre+".";
962
		
961
		
963
		if (!UtilString.isEmpty(editeur)) {
962
		if (!UtilString.isEmpty(editeur)) {
964
			nomComplet += " Éditeur "+editeur+".";
963
			nomComplet += " Éditeur "+editeur+".";
965
		}
964
		}
966
		
965
		
967
		if (collectionChp.getValue() != null) {
966
		if (collectionChp.getValue() != null) {
968
			String revue = collectionChp.getValue();
967
			String revue = collectionChp.getValue();
969
			nomComplet += ", "+revue;
968
			nomComplet += ", "+revue;
970
		}
969
		}
971
		
970
		
972
		if (fasciculeChp.getValue() != null) {
971
		if (fasciculeChp.getValue() != null) {
973
			String fascicule = fasciculeChp.getValue();
972
			String fascicule = fasciculeChp.getValue();
974
			nomComplet += ", "+fascicule;
973
			nomComplet += ", "+fascicule;
975
		}
974
		}
976
		
975
		
977
		if (tomeChp.getValue() != null) {
976
		if (tomeChp.getValue() != null) {
978
			String tomaison = tomeChp.getValue();
977
			String tomaison = tomeChp.getValue();
979
			nomComplet += ", "+tomaison;
978
			nomComplet += ", "+tomaison;
980
		}
979
		}
981
		
980
		
982
		if (collectionChp.getValue() != null || fasciculeChp.getValue() != null || tomeChp.getValue() != null) {
981
		if (collectionChp.getValue() != null || fasciculeChp.getValue() != null || tomeChp.getValue() != null) {
983
			nomComplet += ".";	
982
			nomComplet += ".";	
984
		}
983
		}
985
		
984
		
986
		if (pagesChp.getValue() != null) {
985
		if (pagesChp.getValue() != null) {
987
			String pages = pagesChp.getValue();
986
			String pages = pagesChp.getValue();
988
			nomComplet += pages+".";
987
			nomComplet += pages+".";
989
		}
988
		}
990
		
989
		
991
		return nomComplet;
990
		return nomComplet;
992
	}
991
	}
993
	
992
	
994
	public void reinitialiserFormulaire() {
993
	public void reinitialiserFormulaire() {
995
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
994
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
996
			mediateur.afficherFormPublication(publication.getId());
995
			mediateur.afficherFormPublication(publication.getId());
997
		} else {
996
		} else {
998
			mediateur.afficherFormPublication(null);
997
			mediateur.afficherFormPublication(null);
999
		}
998
		}
1000
	}
999
	}
1001
	
1000
	
1002
	private boolean etreDateValide(String anneePublication) {
1001
	private boolean etreDateValide(String anneePublication) {
1003
		boolean valide = true;
1002
		boolean valide = true;
1004
		if (!anneePublication.matches("^[0-2][0-9]{3}$")) {
1003
		if (!anneePublication.matches("^[0-2][0-9]{3}$")) {
1005
			valide = false;
1004
			valide = false;
1006
		}
1005
		}
1007
		return valide;
1006
		return valide;
1008
	}
1007
	}
1009
	
1008
	
1010
	private String reduireDateParAnnee(String datePar) {
1009
	private String reduireDateParAnnee(String datePar) {
1011
		if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
1010
		if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
1012
			return datePar.split("-")[0];
1011
			return datePar.split("-")[0];
1013
		} else {
1012
		} else {
1014
			return "";
1013
			return "";
1015
		}
1014
		}
1016
	}
1015
	}
1017
	
1016
	
1018
	private String getValeurComboProjets() {
1017
	private String getValeurComboProjets() {
1019
		String valeur = "";
1018
		String valeur = "";
1020
		if (projetsCombo.getValeur() != null) {
1019
		if (projetsCombo.getValeur() != null) {
1021
			Projet projet = new Projet(projetsCombo.getValeur());
1020
			Projet projet = new Projet(projetsCombo.getValeur());
1022
			valeur = projet.getId();
1021
			valeur = projet.getId();
1023
		}
1022
		}
1024
		return valeur;
1023
		return valeur;
1025
	}
1024
	}
1026
	private void setValeurComboProjets() {
1025
	private void setValeurComboProjets() {
1027
		if (projetsCombo.getStore() != null ) {
1026
		if (projetsCombo.getStore() != null ) {
1028
			Debug.log(projetsCombo.getStore().getModels().toArray().toString());
-
 
1029
			if (mode.equals(Formulaire.MODE_MODIFIER) && publication != null) {
1027
			if (mode.equals(Formulaire.MODE_MODIFIER) && publication != null) {
1030
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", publication.getIdProjet()));
1028
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", publication.getIdProjet()));
1031
			} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
1029
			} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
1032
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", mediateur.getProjetId()));
1030
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", mediateur.getProjetId()));
1033
			}
1031
			}
1034
		}
1032
		}
1035
	}
1033
	}
1036
}
1034
}