Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1283 → Rev 1284

/trunk/src/org/tela_botanica/client/vues/publication/PublicationForm.java
6,11 → 6,13
 
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.composants.InfoLogger;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.composants.InfoLogger;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.MenuApplicationId;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.modeles.personne.PersonneListe;
import org.tela_botanica.client.modeles.projet.Projet;
24,27 → 26,58
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilArray;
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.FenetreForm;
import org.tela_botanica.client.vues.Formulaire;
import org.tela_botanica.client.vues.FormulaireBarreValidation;
import org.tela_botanica.client.vues.personne.PersonneForm;
 
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.Style.SortDir;
import com.extjs.gxt.ui.client.core.XTemplate;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.Store;
import com.extjs.gxt.ui.client.store.StoreEvent;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.Validator;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
 
 
public class PublicationForm extends Formulaire implements Rafraichissable {
52,13 → 85,12
private Publication publication;
private PersonneListe auteursInitialListe = null;
private static boolean publicationAPersonneListeChargementOk = false;
private PublicationAPersonneListe auteursAjoutes = null;
private PublicationAPersonneListe auteursSupprimes = null;
private PersonneListe auteursAjoutes = null;
private PersonneListe auteursSupprimes = null;
private FieldSet auteursFieldset = null;
private LayoutContainer auteursFieldset = null;
private ComboBox<Projet> projetsCombo = null;
private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
private LayoutContainer conteneurChamps;
private ListStore<Personne> auteursStorePartage = null;
private static boolean auteurStorePartageChargementOk = false;
82,7 → 114,23
private static boolean publicationOk = false;
private static boolean attenteAjoutAuteursOk = true;
private static boolean attenteSuppressionAuteursOk = true;
 
private LayoutContainer zoneHaut, zoneBas;
private static int idGenere = 1;
private ToolBar barreOutils = null;
private EditorGrid<Personne> grille;
private PersonneListe personnesAjoutees = null;
private PersonneListe personnesSupprimees = null;
private ComboBox<Personne> personnesSaisiesComboBox = null;
private Button personnesBoutonSupprimer = null;
private Button personnesBoutonModifier = null;
private ComboBox<Valeur> typeRelationCombo = null;
private List<Valeur> roles = null;
private PersonneListe listePersonne = new PersonneListe();
private FenetreForm fenetreFormulaire = null;
public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
initialiserPublicationForm(mediateurCourrant, publicationId);
}
93,6 → 141,7
}
private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
auteursInitialListe = new PersonneListe();
initialiserValidation();
initialiserAffichageAuteurs();
102,18 → 151,24
String modeDeCreation = (UtilString.isEmpty(publication.getId()) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
panneauFormulaire.setLayout(new RowLayout());
panneauFormulaire.setStyleAttribute("padding", "0");
zoneHaut = new LayoutContainer(new FitLayout());
zoneBas = new LayoutContainer(new FlowLayout());
panneauFormulaire.setLayout(new FlowLayout());
panneauFormulaire.add(zoneHaut, new RowData(1, 0.3));
panneauFormulaire.add(zoneBas, new RowData(1, 0.5));
panneauFormulaire.setScrollMode(Scroll.AUTO);
genererTitreFormulaire();
creerZoneAuteurs();
panneauFormulaire.add(auteursFieldset);
zoneHaut.add(auteursFieldset);
creerZoneGeneralites();
panneauFormulaire.add(generalitesFieldset);
zoneBas.add(generalitesFieldset);
creerZoneEdition();
panneauFormulaire.add(editionFieldset);
zoneBas.add(editionFieldset);
if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
mediateurCourrant.selectionnerPublication(this, publicationId);
121,30 → 176,323
}
}
public void actualiserEtatBoutonsBarreOutils() {
// Activation des boutons si la grille contient un élément
if (grille.getStore().getCount() > 0) {
personnesBoutonSupprimer.enable();
personnesBoutonModifier.enable();
}
// Désactivation des boutons si la grille ne contient plus d'élément
if (grille.getStore().getCount() == 0) {
personnesBoutonSupprimer.disable();
personnesBoutonModifier.disable();
}
}
private ToolBar creerBarreOutilsGrille() {
ToolBar barreOutils = new ToolBar();
Button ajouterBouton = creerBoutonAjouter();
barreOutils.add(ajouterBouton);
barreOutils.add(new Text(" ou "));
personnesSaisiesComboBox = creerComboBoxPersonnesSaisies();
barreOutils.add(personnesSaisiesComboBox);
barreOutils.add(new SeparatorToolItem());
personnesBoutonModifier = creerBoutonModifier();
barreOutils.add(personnesBoutonModifier);
barreOutils.add(new SeparatorToolItem());
personnesBoutonSupprimer = creerBoutonSupprimer();
barreOutils.add(personnesBoutonSupprimer);
barreOutils.add(new SeparatorToolItem());
Button rafraichirBouton = creerBoutonRafraichir();
barreOutils.add(rafraichirBouton);
return barreOutils;
}
 
private Button creerBoutonAjouter() {
Button bouton = new Button(i18nC.ajouter());
bouton.setIcon(Images.ICONES.vcardAjouter());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
fenetreFormulaire.show();
}
});
return bouton;
}
private Button creerBoutonModifier() {
Button bouton = new Button(i18nC.modifier());
bouton.setIcon(Images.ICONES.vcardModifier());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
if (personneSaisieSelectionnee == null) {
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
} else {
fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
fenetreFormulaire.show();
}
}
});
return bouton;
}
private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
String personneId = null;
if (mode.equals(Formulaire.MODE_MODIFIER)) {
Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
personneId = personneSaisieSelectionnee.getId();
}
final FenetreForm fenetre = new FenetreForm("");
final PersonneForm formulaire = creerFormulairePersonne(fenetre, personneId);
fenetre.add(formulaire);
return fenetre;
}
private PersonneForm creerFormulairePersonne(final FenetreForm fenetre, final String personneId) {
PersonneForm formulairePersonne = new PersonneForm(mediateur, personneId, this);
FormPanel panneauFormulaire = formulairePersonne.getFormulaire();
fenetre.setHeading(panneauFormulaire.getHeading());
panneauFormulaire.setHeaderVisible(false);
panneauFormulaire.setTopComponent(null);
// 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.
panneauFormulaire.getBottomComponent().hide();
SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePersonne(fenetre, formulairePersonne);
final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
fenetre.setBottomComponent(barreValidation);
return formulairePersonne;
}
private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePersonne(final FenetreForm fenetre, final PersonneForm formulaire) {
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String code = ((Button) ce.getComponent()).getData("code");
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
if (formulaire.soumettreFormulaire()) {
fenetre.hide();
}
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
formulaire.soumettreFormulaire();
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
fenetre.hide();
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
fenetreFormulaire.hide();
fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(formulaire.mode);
fenetreFormulaire.show();
}
}
};
return ecouteur;
}
private Button creerBoutonSupprimer() {
Button bouton = new Button(i18nC.supprimer());
bouton.setIcon(Images.ICONES.vcardSupprimer());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
if (personneSaisieSelectionnee == null) {
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
} else {
supprimerDansGrille(personneSaisieSelectionnee);
}
}
});
return bouton;
}
private Button creerBoutonRafraichir() {
Button bouton = new Button(i18nC.rafraichir());
bouton.setIcon(Images.ICONES.rafraichir());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
actualiserGrille();
}
});
return bouton;
}
private void actualiserGrille() {
if (mode.equals(Formulaire.MODE_MODIFIER)) {
// FIXME : c'est la merde
//mediateur.selectionner(this, null, personneSelectionnee.getId(), "%");
} else {
grille.getStore().removeAll();
layout();
}
}
private ComboBox<Personne> creerComboBoxPersonnesSaisies() {
ListStore<Personne> personnesSaisiesStore = new ListStore<Personne>();
ComboBox<Personne> comboBox = new ComboBox<Personne>();
comboBox.setWidth(400);
comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
comboBox.setTriggerAction(TriggerAction.ALL);
comboBox.setEditable(true);
comboBox.setDisplayField("fmt_nom_complet");
comboBox.setStore(personnesSaisiesStore);
comboBox.addKeyListener(new KeyListener() {
public void componentKeyUp(ComponentEvent ce) {
if (personnesSaisiesComboBox.getRawValue() != null && personnesSaisiesComboBox.getRawValue().length() > 0) {
if (!ce.isNavKeyPress()) {
obtenirPersonnesSaisies(personnesSaisiesComboBox.getRawValue());
}
}
}
});
comboBox.addListener(Events.Select, new Listener<BaseEvent>() {
public void handleEvent(BaseEvent be) {
if (personnesSaisiesComboBox.getValue() instanceof Personne) {
// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
Personne personneSaisieSelectionne = personnesSaisiesComboBox.getValue();
if (grille.getStore().findModel(personneSaisieSelectionne) != null) {
Info.display("Information", "La personne est déjà présente dans la liste d'auteurs");
} else {
if (!auteursInitialListe.containsValue(personneSaisieSelectionne)) {
auteursAjoutes.put(personneSaisieSelectionne.getId(), personneSaisieSelectionne);
}
ajouterDansGrille(personneSaisieSelectionne);
personnesSaisiesComboBox.setValue(null);
}
}
}
});
return comboBox;
}
private void obtenirPersonnesSaisies(String nom) {
mediateur.selectionnerPersonneParNomComplet(this, null, nom+"%");
}
private void ajouterDansGrille(Personne personne) {
ajouterDansGrille(personne, 0);
}
private void ajouterDansGrille(Personne personne, int index) {
if (personne != null) {
if (!grille.getStore().contains(personne)) {
//1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter
if (!auteursInitialListe.containsValue(personne)) {
auteursAjoutes.put(personne.getId(), personne);
}
// L'enlever de la liste à supprimer
if (auteursSupprimes.containsValue(personne)) {
auteursSupprimes.remove(personne);
}
//2) Ajouter a la grille
grille.getStore().insert(personne, index);
grille.getSelectionModel().select(index, false);
} else {
InfoLogger.display("Information", "La personne choisie existe déjà dans la liste.");
}
}
}
/**
* Met à jour la grille avec les informations contenus dans la variable listePublicationsLiees
*/
private void mettreAJourGrille() {
 
grille.getStore().removeAll();
grille.getStore().add(listePersonne.toList());
}
private void supprimerDansGrille(Personne personne) {
if (personne != null) {
//1) Ajouter a la liste des personne à supprimer uniquement si est présente dans la liste initiale
if (auteursInitialListe.containsValue(personne)) {
auteursSupprimes.put(personne.getId(), personne);
}
if (auteursAjoutes.containsValue(personne)) {
auteursAjoutes.remove(personne);
}
//2) Supprimer la personne de la liste
grille.getStore().remove(personne);
} else {
Info.display("Information", "Vous devez sélectionner une personne");
}
}
private EditorGrid<Personne> creerGrille() {
ListStore<Personne> storeGrille = new ListStore<Personne>();
storeGrille.addListener(Store.Add, new Listener<StoreEvent<Personne>>() {
public void handleEvent(StoreEvent<Personne> ce) {
actualiserEtatBoutonsBarreOutils();
}
});
storeGrille.addListener(Store.Remove, new Listener<StoreEvent<Personne>>() {
public void handleEvent(StoreEvent<Personne> ce) {
actualiserEtatBoutonsBarreOutils();
}
});
storeGrille.addListener(Store.Update, new Listener<StoreEvent<Personne>>() {
public void handleEvent(StoreEvent<Personne> ce) {
if (ce.getRecord().isModified("_role_") && !ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE);
}
}
});
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
colonnes.add(new ColumnConfig("fmt_nom_complet", i18nC.personneNomComplet(), 150));
colonnes.add(new ColumnConfig("code_postal", i18nC.personneCodePostal(), 150));
colonnes.add(new ColumnConfig("ville", i18nC.personneVille(), 75));
colonnes.add(new ColumnConfig("truk_courriel", i18nC.personneCourriel(), 75));
GridSelectionModel<Personne> modeleDeSelection = new GridSelectionModel<Personne>();
ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
EditorGrid<Personne> grillePublications = new EditorGrid<Personne>(storeGrille, modeleDeColonnes);
grillePublications.setHeight("100%");
grillePublications.setBorders(true);
grillePublications.setSelectionModel(modeleDeSelection);
grillePublications.getView().setForceFit(true);
grillePublications.setAutoExpandColumn("fmt_nom_complet");
grillePublications.setStripeRows(true);
grillePublications.setTrackMouseOver(true);
return grillePublications;
}
private void genererTitreFormulaire() {
String titre = i18nC.publicationTitreFormAjout();
if (mode.equals(Formulaire.MODE_MODIFIER)) {
titre = i18nC.publicationTitreFormModif();
if (publication != null) {
titre += " - "+i18nC.id()+": "+publication.getId();
titre += " - "+i18nC.id()+": "+publication.getId()+" - "+publication.getObjetDeLaPublication();
}
}
panneauFormulaire.setHeading(titre);
}
 
private void creerZoneAuteurs() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(200);
// Fieldset Auteur
auteursFieldset = new FieldSet();
auteursFieldset.setHeading(i18nC.publicationAuteursTitre());
auteursFieldset.setCollapsible(true);
auteursFieldset.setLayout(layout);
Debug.log("Dans creerZoneAuteurs");
auteursFieldset = new LayoutContainer(new FitLayout());
auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
auteursStorePartage = new ListStore<Personne>();
mediateur.clicObtenirListeAuteurs(this);
creerChampsAuteur();
152,23 → 500,15
private void creerChampsAuteur() {
auteursFieldset.removeAll();
conteneurChamps = new LayoutContainer();
Button ajouterAuteurBouton = new Button(i18nC.publicationAuteurBoutonAjouter());
ajouterAuteurBouton.setIcon(Images.ICONES.ajouter());
ajouterAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
creerChampAuteurEtBoutonSupprimer(null);
}
});
auteursFieldset.add(conteneurChamps);
auteursFieldset.add(ajouterAuteurBouton);
barreOutils = creerBarreOutilsGrille();
panneauFormulaire.setTopComponent(barreOutils);
grille = creerGrille();
auteursFieldset.add(grille);
auteursFieldset.layout();
}
public void creerChampAuteurEtBoutonSupprimer(Personne auteur) {
final HorizontalPanel panneauHorizontal = new HorizontalPanel();
/*final HorizontalPanel panneauHorizontal = new HorizontalPanel();
 
LayoutContainer panneauChampTxt = new LayoutContainer();
panneauChampTxt.setLayout(new FormLayout());
204,7 → 544,7
panneauHorizontal.add(supprimerAuteurBouton);
 
conteneurChamps.add(panneauHorizontal);
auteursFieldset.layout();
auteursFieldset.layout();*/
}
private ComboBox<Personne> creerComboBoxAuteursSaisis() {
356,7 → 696,6
}
if (etrePretAPeupler()) {
Debug.log("Entrain de peupler");
peuplerFormulaire();
genererTitreFormulaire();
initialiserPeupler();
363,7 → 702,6
}
if (avoirAuteursMiseAJourCorrectement()) {
Debug.log("Mise à jour liste auteur");
miseAJourAuteursInitialListe();
initialiserAuteurs();
auteursValideOk = true;
379,13 → 717,13
private void miseAJourAuteursInitialListe() {
Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
while (clesAjoutees.hasNext()) {
Personne auteurAjoute = auteursAjoutes.get(clesAjoutees.next()).getPersonne();
Personne auteurAjoute = auteursAjoutes.get(clesAjoutees.next());
auteursInitialListe.put(auteurAjoute.getId(), auteurAjoute);
}
Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
while (clesSupprimees.hasNext()) {
Personne auteurSupprime = auteursSupprimes.get(clesSupprimees.next()).getPersonne();
Personne auteurSupprime = auteursSupprimes.get(clesSupprimees.next());
auteursInitialListe.remove(auteurSupprime.getId());
}
}
407,13 → 745,18
Personne auteur = auteurs.get(it.next()).getPersonne();
auteursInitialListe.put(auteur.getId(), auteur);
}
Debug.log("Réception liste des auteurs : "+auteurs.size());
grille.getStore().removeAll();
grille.getStore().add(auteursInitialListe.toList());
publicationAPersonneListeChargementOk = true;
}
private void rafraichirInformation(Information info) {
private void rafraichirInformation(Information info) {
String type = info.getType();
if (type.equals("ajout_publication") || type.equals("modif_publication")) {
// On vient de soumettre le formulaire, on doit passer à l'étape suivante:
// Validation des auteurs ou fermeture du formulaire
publicationValideOk = true;
if (mode.equals(Formulaire.MODE_AJOUTER)) {
if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
422,38 → 765,42
publication.setId(publicationId);
}
}
attenteAjoutAuteursOk = true;
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
attenteAjoutAuteursOk = true;
}
soumettreAuteurs();
}
if (info.getType().equals("liste_personne")) {
PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
List<Personne> liste = listePersonneAuteur.toList();
/*List<Personne> liste = listePersonneAuteur.toList();
auteursStorePartage.removeAll();
auteursStorePartage.add(liste);
Debug.log("Reception nouvelle liste auteurs");
auteurStorePartageChargementOk = true;
auteurStorePartageChargementOk = true;*/
ListStore store = personnesSaisiesComboBox.getStore();
store.removeAll();
store.add(listePersonneAuteur.toList());
} else if (info.getType().equals("ajout_publication_a_personne")) {
attenteAjoutAuteursOk = false;
Debug.log("attenteAjoutAuteursOk");
} else if (info.getType().equals("suppression_publication_a_personne")) {
attenteSuppressionAuteursOk = false;
Debug.log("attenteSuppressionAuteursOk");
} else if (info.getType().equals("modif_publication")) {
Info.display("Modification d'une publication", info.toString());
InfoLogger.display("Modification d'une publication", info.toString());
} else if (info.getType().equals("ajout_publication")) {
if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String && ((String) info.getDonnee(0)).matches("[0-9]+")) {
String publicationId = (String) info.getDonnee(0);
Info.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
} else {
Info.display("Ajout d'une publication", info.toString());
InfoLogger.display("Ajout d'une publication", info.toString());
}
}
}
}
private boolean avoirAuteursMiseAJourCorrectement() {
boolean ok = false;
if (attenteAjoutAuteursOk == false && attenteSuppressionAuteursOk == false) {
ok = true;
496,8 → 843,7
private boolean etrePretAPeupler() {
boolean ok = false;
Debug.log("Mode :"+mode.equals(Formulaire.MODE_MODIFIER)+" - PublicationOk :"+publicationOk+" - AuteursAffiches :"+auteursAffiches);
if (mode.equals(Formulaire.MODE_MODIFIER) && publicationOk && auteursAffiches && editeursOk) {
if (mode.equals(Formulaire.MODE_MODIFIER) && publicationOk && editeursOk) {
ok = true;
}
return ok;
505,8 → 851,7
private Boolean etreValide() {
Boolean valide = false;
//Debug.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null);
if (formulaireValideOk && publicationValideOk && auteursValideOk) {
if (formulaireValideOk && auteursValideOk) {
valide = true;
}
return valide;
521,9 → 866,9
private void initialiserAuteurs() {
attenteAjoutAuteursOk = true;
auteursAjoutes = new PublicationAPersonneListe();
auteursAjoutes = new PersonneListe();
attenteSuppressionAuteursOk = true;
auteursSupprimes = new PublicationAPersonneListe();
auteursSupprimes = new PersonneListe();
}
private void repandreRafraichissement() {
542,7 → 887,7
formulaireValideOk = verifierFormulaire();
if (formulaireValideOk) {
soumettrePublication();
soumettreAuteurs();
//Les auteurs seront mis à jour lors du rafraichissement
}
return formulaireValideOk;
}
562,6 → 907,46
attenteAjoutAuteursOk = false;
attenteSuppressionAuteursOk = false;
//1) Auteurs ajoutés :
// - Créer une PublicationAAuteurListe
PublicationAPersonneListe listeDesAuteurs = new PublicationAPersonneListe();
Iterator<String> itAuteur = auteursAjoutes.keySet().iterator();
while (itAuteur.hasNext()) {
PublicationAPersonne publiAPersonne = new PublicationAPersonne();
String cle = itAuteur.next();
publiAPersonne.setIdPersonne(cle);
publiAPersonne.setIdPublication(publication.getId());
listeDesAuteurs.put(cle, publiAPersonne);
}
// - envoyer au mediateur SSI personnes à ajouter
if (listeDesAuteurs.size() > 0) {
mediateur.ajouterPublicationAPersonne(this, publication.getId(), listeDesAuteurs, PublicationAPersonne.ROLE_AUTEUR);
attenteAjoutAuteursOk = true;
}
//2) Auteurs supprimés :
// - Créer une PublicationAPersonneListe
listeDesAuteurs = new PublicationAPersonneListe();
itAuteur = auteursSupprimes.keySet().iterator();
while (itAuteur.hasNext()) {
PublicationAPersonne publiAPersonne = new PublicationAPersonne();
String cle = itAuteur.next();
publiAPersonne.setIdPersonne(cle);
publiAPersonne.setIdPublication(publication.getId());
listeDesAuteurs.put(cle, publiAPersonne);
}
// - Envoyer au médiateur SSI personnes à supprimer
if (listeDesAuteurs.size() > 0) {
mediateur.supprimerPublicationAPersonne(this, listeDesAuteurs);
attenteSuppressionAuteursOk = true;
}
/*
attenteAjoutAuteursOk = false;
attenteSuppressionAuteursOk = false;
PersonneListe personnesInitiales = auteursInitialListe;
PersonneListe personnesActuelles = new PersonneListe();
590,7 → 975,7
}
publicationAAuteur.setPersonne(personne);
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur);
//FIXME : auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur);
attenteAjoutAuteursOk = true;
}
}
606,7 → 991,7
publicationAAuteur.setIdPublication(publication.getId());
publicationAAuteur.setPersonne(personne);
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
auteursSupprimes.put(publicationAAuteur.getId(), publicationAAuteur);
//FIXME : auteursSupprimes.put(publicationAAuteur.getId(), publicationAAuteur);
attenteSuppressionAuteursOk = true;
}
}
615,14 → 1000,13
// Execution de les mise à jour pour le mode MODIFICATION
if (mode.equals(Formulaire.MODE_MODIFIER)) {
if (auteursAjoutes != null && auteursAjoutes.size() != 0) {
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
//FIXME : mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
}
if (auteursSupprimes != null && auteursSupprimes.size() != 0) {
mediateur.supprimerPublicationAPersonne(this, auteursSupprimes);
//FIXME : mediateur.supprimerPublicationAPersonne(this, auteursSupprimes);
}
}
Debug.log("personnesInitiales:"+personnesInitiales.size()+" - personnesActuelles :"+personnesActuelles.size()+" - auteursSupprimes :"+auteursSupprimes.size()+" - auteursAjoutes :"+auteursAjoutes.size());
}*/
}
public boolean verifierFormulaire() {
629,16 → 1013,10
boolean valide = true;
ArrayList<String> messages = new ArrayList<String>();
boolean auteurErreur = true;
for (int i = 0; i < auteurComboboxListe.size(); i++) {
if (auteurComboboxListe.get(i).getValue() != null) {
auteurErreur = false;
break;
}
// Tester si au moins un auteur est présent
if (grille.getStore().getModels().size() == 0) {
messages.add("Veuillez saisir au moins un auteur.");
}
if (auteurErreur) {
messages.add("Veuillez saisir au moins un auteur !");
}
String titre = titreChp.getValue();
if (titre == null || titre.equals("")) {
692,10 → 1070,9
}
private Publication collecterPublication() {
Publication publicationCollectee = (Publication) publication.cloner(new Publication());
publicationCollectee.setIdProjet(getValeurComboProjets());
publicationCollectee.setAuteur(construireIntituleAuteur());
String titre = titreChp.getValue();
749,8 → 1126,23
}
private String construireIntituleAuteur() {
String inituleAuteur = "";
int auteursNombre = auteurComboboxListe.size();
String intituleAuteur = "";
// TODO : ranger par ordre non-alphabétique
grille.getStore().sort("nom", SortDir.ASC);
List<Personne> auteurs = grille.getStore().getModels();
Iterator<Personne> itAuteurs = auteurs.iterator();
while (itAuteurs.hasNext()) {
Personne personneCourante = itAuteurs.next();
intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
if (itAuteurs.hasNext()) {
intituleAuteur+=", ";
}
}
/*
* TO DELETE:int auteursNombre = auteurComboboxListe.size();
*
for (int i = 0; i < auteursNombre; i++) {
if (auteurComboboxListe.get(i).getValue() != null) {
Personne auteur = auteurComboboxListe.get(i).getValue();
759,8 → 1151,8
inituleAuteur += ", ";
}
}
}
return inituleAuteur;
}*/
return intituleAuteur;
}
private String construireNomComplet() {