11,6 → 11,8 |
import org.tela_botanica.client.interfaces.Rafraichissable; |
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,57 |
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.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 → 84,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 → 113,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 → 140,7 |
} |
|
private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) { |
|
auteursInitialListe = new PersonneListe(); |
initialiserValidation(); |
initialiserAffichageAuteurs(); |
102,18 → 150,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)); |
|
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,6 → 175,307 |
} |
} |
|
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)) { |
134,17 → 489,9 |
|
|
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); |
|
auteursFieldset = new LayoutContainer(new FitLayout()); |
auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0); |
auteursStorePartage = new ListStore<Personne>(); |
mediateur.clicObtenirListeAuteurs(this); |
|
creerChampsAuteur(); |
152,23 → 499,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 → 543,7 |
panneauHorizontal.add(supprimerAuteurBouton); |
|
conteneurChamps.add(panneauHorizontal); |
auteursFieldset.layout(); |
auteursFieldset.layout();*/ |
} |
|
private ComboBox<Personne> creerComboBoxAuteursSaisis() { |
377,13 → 716,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()); |
} |
} |
405,6 → 744,10 |
Personne auteur = auteurs.get(it.next()).getPersonne(); |
auteursInitialListe.put(auteur.getId(), auteur); |
} |
|
grille.getStore().removeAll(); |
grille.getStore().add(auteursInitialListe.toList()); |
|
publicationAPersonneListeChargementOk = true; |
} |
|
411,6 → 754,8 |
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) { |
420,17 → 765,23 |
} |
} |
attenteAjoutAuteursOk = true; |
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR); |
} |
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); |
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; |
} else if (info.getType().equals("suppression_publication_a_personne")) { |
448,6 → 799,7 |
} |
|
private boolean avoirAuteursMiseAJourCorrectement() { |
|
boolean ok = false; |
if (attenteAjoutAuteursOk == false && attenteSuppressionAuteursOk == false) { |
ok = true; |
490,7 → 842,7 |
|
private boolean etrePretAPeupler() { |
boolean ok = false; |
if (mode.equals(Formulaire.MODE_MODIFIER) && publicationOk && auteursAffiches && editeursOk) { |
if (mode.equals(Formulaire.MODE_MODIFIER) && publicationOk && editeursOk) { |
ok = true; |
} |
return ok; |
498,7 → 850,7 |
|
private Boolean etreValide() { |
Boolean valide = false; |
if (formulaireValideOk && publicationValideOk && auteursValideOk) { |
if (formulaireValideOk && auteursValideOk) { |
valide = true; |
} |
return valide; |
513,9 → 865,9 |
|
private void initialiserAuteurs() { |
attenteAjoutAuteursOk = true; |
auteursAjoutes = new PublicationAPersonneListe(); |
auteursAjoutes = new PersonneListe(); |
attenteSuppressionAuteursOk = true; |
auteursSupprimes = new PublicationAPersonneListe(); |
auteursSupprimes = new PersonneListe(); |
} |
|
private void repandreRafraichissement() { |
534,7 → 886,7 |
formulaireValideOk = verifierFormulaire(); |
if (formulaireValideOk) { |
soumettrePublication(); |
soumettreAuteurs(); |
//Les auteurs seront mis à jour lors du rafraichissement |
} |
return formulaireValideOk; |
} |
554,6 → 906,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(); |
582,7 → 974,7 |
} |
publicationAAuteur.setPersonne(personne); |
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR); |
auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur); |
//FIXME : auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur); |
attenteAjoutAuteursOk = true; |
} |
} |
598,7 → 990,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; |
} |
} |
607,13 → 999,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); |
} |
} |
}*/ |
} |
|
public boolean verifierFormulaire() { |
620,16 → 1012,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("")) { |
683,10 → 1069,9 |
} |
|
private Publication collecterPublication() { |
|
Publication publicationCollectee = (Publication) publication.cloner(new Publication()); |
|
publicationCollectee.setIdProjet(getValeurComboProjets()); |
|
publicationCollectee.setAuteur(construireIntituleAuteur()); |
|
String titre = titreChp.getValue(); |
740,8 → 1125,19 |
} |
|
private String construireIntituleAuteur() { |
String inituleAuteur = ""; |
int auteursNombre = auteurComboboxListe.size(); |
String intituleAuteur = ""; |
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(); |
750,8 → 1146,8 |
inituleAuteur += ", "; |
} |
} |
} |
return inituleAuteur; |
}*/ |
return intituleAuteur; |
} |
|
private String construireNomComplet() { |