Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1560 → Rev 1561

/trunk/src/org/tela_botanica/client/vues/publication/PublicationForm.java
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() {