27,6 → 27,7 |
import org.tela_botanica.client.modeles.structure.Structure; |
import org.tela_botanica.client.synchronisation.Sequenceur; |
import org.tela_botanica.client.util.Debug; |
import org.tela_botanica.client.util.Log; |
import org.tela_botanica.client.util.Pattern; |
import org.tela_botanica.client.util.UtilArray; |
import org.tela_botanica.client.util.UtilString; |
37,6 → 38,9 |
|
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.Style.SortDir; |
import com.extjs.gxt.ui.client.data.BaseModelData; |
import com.extjs.gxt.ui.client.data.LoadEvent; |
import com.extjs.gxt.ui.client.data.Loader; |
import com.extjs.gxt.ui.client.data.ModelData; |
import com.extjs.gxt.ui.client.data.ModelType; |
import com.extjs.gxt.ui.client.event.BaseEvent; |
154,11 → 158,12 |
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION); |
panneauFormulaire.setLayout(new RowLayout()); |
panneauFormulaire.setStyleAttribute("padding", "0"); |
panneauFormulaire.setHeight(600); |
|
zoneHaut = new LayoutContainer(new FitLayout()); |
zoneBas = new LayoutContainer(new FlowLayout()); |
panneauFormulaire.add(zoneHaut, new RowData(1, 0.3)); |
panneauFormulaire.add(zoneBas, new RowData(1, 0.5)); |
panneauFormulaire.add(zoneHaut, new RowData(0.99, 0.45)); |
panneauFormulaire.add(zoneBas, new RowData(0.99, 0.55)); |
panneauFormulaire.setScrollMode(Scroll.AUTO); |
genererTitreFormulaire(); |
|
243,30 → 248,7 |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
if (grilleAuteurs.getGrille().getSelectionModel().getSelectedItem() != null) { |
|
ModelData publiAPersonneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem(); |
|
int index = grilleAuteurs.getStore().indexOf(publiAPersonneSelectionnee); |
int newIndex = index - 1; // l'auteur monte dans dans la liste donc son ordre diminue |
int newOrdre = newIndex + 1; // parce que index commence à zéro |
|
// le marqueur suivant est obligatoire sinon les évènements liés au magasin se |
// déclenchent et posent problème |
changeOrderMarker = true; |
|
publiAPersonneSelectionnee.set("_ordre_", String.valueOf(newOrdre)); |
|
ModelData publiAPersonneSwitch = grilleAuteurs.getStore().getAt(index-1); |
int newOrdrePapSwitch = newOrdre + 1; |
|
publiAPersonneSwitch.set("_ordre_", String.valueOf(newOrdrePapSwitch)); |
|
grilleAuteurs.getStore().update(publiAPersonneSwitch); |
grilleAuteurs.getStore().remove(publiAPersonneSelectionnee); |
grilleAuteurs.getStore().insert(publiAPersonneSelectionnee, newIndex); |
changeOrderMarker = false; |
|
grilleAuteurs.getSelectionModel().select(newIndex, true); |
mettreAJourOrdreAuteur(-1); |
} |
} |
}); |
280,36 → 262,88 |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) { |
|
ModelData publiAPersonneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem(); |
|
int index = grilleAuteurs.getStore().indexOf(publiAPersonneSelectionnee); |
int newIndex = index + 1; // l'auteur monte dans dans la liste donc son ordre diminue |
int newOrdre = newIndex + 1; // parce que index commence à zéro |
|
// le marqueur suivant est obligatoire sinon les évènements liés au magasin se |
// déclenchent et posent problème |
changeOrderMarker = true; |
|
publiAPersonneSelectionnee.set("_ordre_", String.valueOf(newOrdre)); |
|
ModelData publiAPersonneSwitch = grilleAuteurs.getStore().getAt(index+1); |
int newOrdrePapSwitch = index + 1; |
|
publiAPersonneSwitch.set("_ordre_", String.valueOf(newOrdrePapSwitch)); |
|
grilleAuteurs.getStore().update(publiAPersonneSwitch); |
grilleAuteurs.getStore().remove(publiAPersonneSelectionnee); |
grilleAuteurs.getStore().insert(publiAPersonneSelectionnee, newIndex); |
changeOrderMarker = false; |
|
grilleAuteurs.getSelectionModel().select(newIndex, true); |
mettreAJourOrdreAuteur(+1); |
} |
} |
}); |
return bouton; |
} |
|
private void formaterOrdreAuteurs() { |
List<ModelData> auteurs = grilleAuteurs.getStore().getModels(); |
Iterator<ModelData> itAuteurs = auteurs.iterator(); |
while (itAuteurs.hasNext()) { |
ModelData selection = itAuteurs.next(); |
PublicationAPersonne pap = new PublicationAPersonne(selection, false); |
|
String ordre = String.valueOf(grilleAuteurs.getStore().indexOf(selection) + 1); |
if (pap.getOrdreAuteurs() != ordre) { |
selection.set("_ordre_", ordre); |
grilleAuteurs.getStore().update(selection); |
pap.setOrdreAuteurs(ordre); |
auteursModifies.put(pap.getId(), pap); |
} |
} |
} |
|
private void mettreAJourOrdreAuteur(int monterOuDescendre) { |
ModelData publiAPersonneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem(); |
int index = grilleAuteurs.getStore().indexOf(publiAPersonneSelectionnee); |
int nouvelIndex = index + monterOuDescendre; |
|
if (verifierOrdreAuteur(nouvelIndex)) { |
// le marqueur suivant est obligatoire sinon les évènements liés au magasin se |
// déclenchent et posent problème |
changeOrderMarker = true; |
|
int indexAPermuter = index + monterOuDescendre; |
ModelData publiAPersonneSwitch = grilleAuteurs.getStore().getAt(indexAPermuter); |
String ordreAPermuter = String.valueOf((indexAPermuter + 1) - monterOuDescendre); |
publiAPersonneSwitch.set("_ordre_", ordreAPermuter); |
grilleAuteurs.getStore().update(publiAPersonneSwitch); |
PublicationAPersonne papSwitch = new PublicationAPersonne(publiAPersonneSwitch, false); |
papSwitch.setOrdreAuteurs(ordreAPermuter); |
auteursModifies.put(papSwitch.getId(), papSwitch); |
|
grilleAuteurs.getStore().remove(publiAPersonneSelectionnee); |
String nouvelOrdre = String.valueOf((index + 1) + monterOuDescendre); |
publiAPersonneSelectionnee.set("_ordre_", nouvelOrdre); |
grilleAuteurs.getStore().insert(publiAPersonneSelectionnee, nouvelIndex); |
PublicationAPersonne papSelectionnee = new PublicationAPersonne(publiAPersonneSelectionnee, false); |
papSelectionnee.setOrdreAuteurs(nouvelOrdre); |
auteursModifies.put(papSelectionnee.getId(), papSelectionnee); |
changeOrderMarker = false; |
|
grilleAuteurs.getSelectionModel().select(nouvelIndex, false); |
} |
} |
|
private boolean verifierOrdreAuteur(int nouvelIndex) { |
int nbrElement = grilleAuteurs.getStore().getCount(); |
boolean ok = true; |
if (nouvelIndex < 0 || nouvelIndex >= nbrElement) { |
ok = false; |
} |
return ok; |
} |
|
private void activerBoutonsOrdreAuteur() { |
ModelData papSelectionnee = grilleAuteurs.getGrille().getSelectionModel().getSelectedItem(); |
int index = grilleAuteurs.getStore().indexOf(papSelectionnee); |
|
if (index >= 1) { |
boutonAuteurUp.setEnabled(true); |
} else { |
boutonAuteurUp.setEnabled(false); |
} |
|
if ((index+1) < grilleAuteurs.getStore().getCount()) { |
boutonAuteurDown.setEnabled(true); |
} else { |
boutonAuteurDown.setEnabled(false); |
} |
} |
|
private Button creerBoutonAjouter() { |
Button bouton = new Button(i18nC.ajouter()); |
bouton.setIcon(Images.ICONES.vcardAjouter()); |
397,12 → 431,7 |
bouton.setIcon(Images.ICONES.vcardSupprimer()); |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
PublicationAPersonne personneSelectionnee = new PublicationAPersonne(grilleAuteurs.getSelectionModel().getSelectedItem(), false); |
if (personneSelectionnee == null) { |
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication()); |
} else { |
supprimerDansGrille(personneSelectionnee); |
} |
supprimerDansGrille(); |
} |
}); |
return bouton; |
422,7 → 451,7 |
private void actualiserGrille() { |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
// FIXME : c'est la merde |
//mediateur.selectionner(this, null, personneSelectionnee.getId(), "%"); |
grilleAuteurs.reload(); |
} else { |
grilleAuteurs.getStore().removeAll(); |
layout(); |
475,8 → 504,10 |
|
private void ajouterDansGrille(PublicationAPersonne pap, int index) { |
if (pap != null) { |
if (!grilleAuteurs.getStore().contains(pap)) { |
//1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter |
if (grilleAuteurs.getStore().contains(pap)) { |
InfoLogger.display("Information", "La personne choisie existe déjà dans la liste."); |
} else { |
// 1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter |
if (!auteursInitialListe.containsValue(pap)) { |
auteursAjoutes.put(pap.getId(), pap); |
} |
485,34 → 516,38 |
if (auteursSupprimes.containsValue(pap)) { |
auteursSupprimes.remove(pap); |
} |
//2) Ajouter a la grille |
|
// 2) Ajouter a la grille |
grilleAuteurs.getStore().insert(pap, index); |
grilleAuteurs.getSelectionModel().select(index, false); |
} else { |
InfoLogger.display("Information", "La personne choisie existe déjà dans la liste."); |
} |
} |
} |
|
private void supprimerDansGrille(PublicationAPersonne pap) { |
if (pap != null) { |
private void supprimerDansGrille() { |
ModelData donneeSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem(); |
PublicationAPersonne personneSelectionnee = new PublicationAPersonne(donneeSelectionnee, false); |
if (personneSelectionnee.getId() == null) { |
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerAuteur()); |
} else { |
// 1) Ajouter a la liste des personne à supprimer uniquement si est présente dans la liste initiale |
if (auteursInitialListe.containsValue(pap)) { |
auteursSupprimes.put(pap.getId(), pap); |
if (auteursInitialListe.containsKey(personneSelectionnee.getId())) { |
auteursSupprimes.put(personneSelectionnee.getId(), personneSelectionnee); |
Log.debug("Ajout Personne à supprimer : "+auteursSupprimes.toString()); |
} |
|
if (auteursAjoutes.containsValue(pap)) { |
auteursAjoutes.remove(pap); |
if (auteursAjoutes.containsValue(personneSelectionnee)) { |
auteursAjoutes.remove(personneSelectionnee); |
} |
|
if (auteursModifies.containsValue(pap)) { |
auteursModifies.remove(pap); |
if (auteursModifies.containsValue(personneSelectionnee)) { |
auteursModifies.remove(personneSelectionnee); |
} |
|
// 2) Supprimer la personne de la liste |
grilleAuteurs.getStore().remove(pap); |
} else { |
Info.display("Information", "Vous devez sélectionner une personne"); |
Log.debug("Personne trouvée : "+grilleAuteurs.getStore().findModel(donneeSelectionnee).toString()); |
grilleAuteurs.getStore().remove(donneeSelectionnee); |
formaterOrdreAuteurs(); |
} |
} |
|
554,13 → 589,7 |
GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>(); |
modeleDeSelection.addListener(Events.SelectionChange, new SelectionChangedListener<ModelData>() { |
public void selectionChanged(SelectionChangedEvent<ModelData> se) { |
ModelData papSelectionnee = grilleAuteurs.getGrille().getSelectionModel().getSelectedItem(); |
int index = grilleAuteurs.getStore().indexOf(papSelectionnee); |
|
if (index >= 1) boutonAuteurUp.setEnabled(true); |
else boutonAuteurUp.setEnabled(false); |
if ((index+1) < grilleAuteurs.getStore().getCount()) boutonAuteurDown.setEnabled(true); |
else boutonAuteurDown.setEnabled(false); |
activerBoutonsOrdreAuteur(); |
} |
}); |
|
577,6 → 606,19 |
grilleAuteurs.getGrille().setStripeRows(true); |
grilleAuteurs.getGrille().setTrackMouseOver(true); |
|
grilleAuteurs.getStore().getLoader().addListener(Loader.Load, new Listener<LoadEvent>() { |
public void handleEvent(LoadEvent be) { |
List<ModelData> auteurs = grilleAuteurs.getStore().getModels(); |
Iterator<ModelData> itAuteurs = auteurs.iterator(); |
while (itAuteurs.hasNext()) { |
ModelData selection = itAuteurs.next(); |
PublicationAPersonne auteur = new PublicationAPersonne(selection, false); |
auteursInitialListe.put(auteur.getId(), auteur); |
} |
Log.debug("Initialisation liste auteur :"+auteursInitialListe.size()); |
} |
}); |
|
// Rajouter des écouteurs |
grilleAuteurs.getStore().addListener(Store.Add, new Listener<StoreEvent<ModelData>>() { |
public void handleEvent(StoreEvent<ModelData> ce) { |
589,25 → 631,13 |
public void handleEvent(StoreEvent<ModelData> ce) { |
if (!changeOrderMarker) { |
actualiserEtatBoutonsBarreOutils(); |
Log.debug("Dans listener remove de grilleAuteur"); |
} |
} |
}); |
grilleAuteurs.getStore().addListener(Store.Update, new Listener<StoreEvent<ModelData>>() { |
public void handleEvent(StoreEvent<ModelData> ce) { |
if (!changeOrderMarker) { |
if (ce.getRecord().isModified("_ordre_")) { |
// s'il s'agit d'un auteur que l'on vient d'ajouter à la liste, alors on a pas besoin |
// de faire quoique ce soit car l'auteur est déjà dans la liste des auteurs ajoutés |
if (ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) { |
// ... do nothing |
// s'il s'agit d'un auteur qui était déjà présent dans la liste initiale, il faut |
// ajouter cet auteur à la liste des auteurs modifiés |
} else { |
PublicationAPersonne pap = new PublicationAPersonne(ce.getModel(), false); |
auteursModifies.put(pap.getId(), pap); |
} |
} |
} |
|
} |
}); |
|
813,15 → 843,13 |
} |
|
private void soumettreAuteurs() { |
|
formaterOrdreAuteurs(); |
|
//1) Auteurs ajoutés : |
PublicationAPersonneListe listeAuteursAAjouter = new PublicationAPersonneListe(); |
Iterator<String> itAuteur = auteursAjoutes.keySet().iterator(); |
while (itAuteur.hasNext()) { |
String cle = itAuteur.next(); |
PublicationAPersonne publiAPersonne = auteursAjoutes.get(cle); |
PublicationAPersonne publiAPersonne = auteursAjoutes.get(cle); |
Log.debug("Ajouter :"+publiAPersonne.toString()); |
publiAPersonne.setIdPublication(this.publicationId); |
publiAPersonne.setOrdreAuteurs(publiAPersonne.getOrdreAuteurs()); |
listeAuteursAAjouter.put(cle, publiAPersonne); |
839,6 → 867,7 |
while (itAuteur.hasNext()) { |
String cle = itAuteur.next(); |
PublicationAPersonne publiAPersonne = auteursSupprimes.get(cle); |
Log.debug("Supprimer :"+publiAPersonne.toString()); |
listeAuteursASupprimer.put(cle, publiAPersonne); |
} |
|
845,6 → 874,7 |
// - Envoyer au médiateur SSI personnes à supprimer |
if (listeAuteursASupprimer.size() > 0) { |
// Pour une suppression des auteurs, on a pas besoin d'attendre le retour |
Log.debug("Lancement suppression :"+listeAuteursASupprimer.size()); |
mediateur.supprimerPublicationAPersonne(this, listeAuteursASupprimer); |
} |
|
854,6 → 884,7 |
while (itAuteur.hasNext()) { |
String cle = itAuteur.next(); |
PublicationAPersonne publiAPersonne = auteursModifies.get(cle); |
Log.debug("Modifier :"+publiAPersonne.toString()); |
listeAuteursAModifier.put(cle, publiAPersonne); |
} |
|
866,24 → 897,6 |
sequenceur.enfilerRafraichissement(this, new Information("auteurs_enregistres")); |
} |
|
private void formaterOrdreAuteurs() { |
ListStore<ModelData> store = grilleAuteurs.getStore(); |
List<ModelData> auteurs = grilleAuteurs.getStore().getModels(); |
|
Iterator<ModelData> itAuteurs = auteurs.iterator(); |
while (itAuteurs.hasNext()) { |
ModelData selection = itAuteurs.next(); |
|
PublicationAPersonne pap = new PublicationAPersonne(selection, false); |
int ordre = store.indexOf(selection) + 1; |
|
if (pap.getOrdreAuteurs() != String.valueOf(ordre)) { |
pap.setOrdreAuteurs(String.valueOf(ordre)); |
auteursModifies.put(pap.getId(), pap); |
} |
} |
} |
|
private void peuplerFormulaire() { |
setValeurComboProjets(); |
titreChp.setValue(publication.getTitre()); |
1165,7 → 1178,9 |
} else { |
InfoLogger.display("Ajout d'une publication", info.toString()); |
} |
} |
} else if (info.getType().equals("suppression_publication_a_personne")) { |
InfoLogger.display("Suppression d'auteur", info.getMessages().toString()); |
} |
} |
|
private void repandreRafraichissement() { |