7,13 → 7,14 |
import org.tela_botanica.client.images.Images; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Collection; |
import org.tela_botanica.client.modeles.CollectionAPublication; |
import org.tela_botanica.client.modeles.CollectionAPublicationListe; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.Publication; |
import org.tela_botanica.client.modeles.PublicationListe; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.modeles.aDonnee; |
import org.tela_botanica.client.util.Debug; |
|
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; |
import com.extjs.gxt.ui.client.core.XTemplate; |
import com.extjs.gxt.ui.client.event.BaseEvent; |
import com.extjs.gxt.ui.client.event.ButtonEvent; |
34,12 → 35,9 |
import com.extjs.gxt.ui.client.widget.form.FormPanel; |
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; |
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.Grid; |
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; |
import com.extjs.gxt.ui.client.widget.grid.EditorGrid; |
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel; |
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig; |
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; |
46,9 → 44,6 |
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.event.shared.GwtEvent; |
import com.google.gwt.user.client.Event; |
import com.google.gwt.user.client.ui.Image; |
|
public class CollectionFormPublication extends FormulaireOnglet implements Rafraichissable { |
|
57,10 → 52,10 |
|
private ContentPanel panneauPrincipal = null; |
private ToolBar barreOutils = null; |
private Grid<Publication> grille; |
private EditorGrid<CollectionAPublication> grille; |
|
private PublicationListe publicationsAjoutees = null; |
private PublicationListe publicationsSupprimees = null; |
private CollectionAPublicationListe publicationsAjoutees = null; |
private CollectionAPublicationListe publicationsSupprimees = null; |
private ComboBox<Publication> publicationsSaisiesComboBox = null; |
private Button publicationsBoutonSupprimer = null; |
private Button publicationsBoutonModifier = null; |
67,8 → 62,6 |
|
private FenetreForm fenetreFormulaire = null; |
|
private static final String ETAT_AJOUTE = "A"; |
|
public CollectionFormPublication(Formulaire formulaireCourrant) { |
initialiserOnglet(formulaireCourrant); |
setId("publication"); |
88,8 → 81,8 |
private void initialiser() { |
// Remise à zéro des modification dans la liste des auteurs |
idGenere = 1; |
publicationsAjoutees = new PublicationListe(); |
publicationsSupprimees = new PublicationListe(); |
publicationsAjoutees = new CollectionAPublicationListe(); |
publicationsSupprimees = new CollectionAPublicationListe(); |
|
// Actualisation de l'état des boutons de la barre d'outils |
actualiserEtatBoutonsBarreOutils(); |
156,7 → 149,7 |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
@Override |
public void componentSelected(ButtonEvent ce) { |
Publication publicationSaisieSelectionnee = grille.getSelectionModel().getSelectedItem(); |
CollectionAPublication publicationSaisieSelectionnee = grille.getSelectionModel().getSelectedItem(); |
|
if (publicationSaisieSelectionnee == null) { |
Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication()); |
172,8 → 165,8 |
private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) { |
String publicationId = null; |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
Publication publicationSaisiSelectionne = grille.getSelectionModel().getSelectedItem(); |
publicationId = publicationSaisiSelectionne.getId(); |
CollectionAPublication publicationSaisiSelectionne = grille.getSelectionModel().getSelectedItem(); |
publicationId = publicationSaisiSelectionne.getIdPublication(); |
} |
|
final FenetreForm fenetre = new FenetreForm(""); |
227,7 → 220,7 |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
@Override |
public void componentSelected(ButtonEvent ce) { |
Publication publicationSaisieSelectionnee = grille.getSelectionModel().getSelectedItem(); |
CollectionAPublication publicationSaisieSelectionnee = grille.getSelectionModel().getSelectedItem(); |
if (publicationSaisieSelectionnee == null) { |
Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication()); |
} else { |
284,6 → 277,7 |
if (publicationsSaisiesComboBox.getValue() instanceof Publication) { |
Publication publicationSaisieSelectionne = publicationsSaisiesComboBox.getValue(); |
ajouterDansGrille(publicationSaisieSelectionne); |
Debug.log("ici"); |
publicationsSaisiesComboBox.setValue(null); |
} |
} |
290,44 → 284,56 |
}); |
return comboBox; |
} |
|
|
private void ajouterDansGrille(Publication publication) { |
ajouterDansGrille(publication, 0); |
} |
|
private void ajouterDansGrille(Publication publication, int index) { |
if (publication != null) { |
// Ajout de la personne ajoutée à la liste |
if (publication.getId() != null && !publication.getId().equals("")) { |
publicationsAjoutees.put(publication.getId(), publication); |
CollectionAPublication publicationLiee = new CollectionAPublication(); |
publicationLiee.setPublication(publication); |
publicationLiee.setIdPublication(publication.getId()); |
// Gestion de l'id de la collection |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
publicationLiee.setIdCollection(collection.getId()); |
} |
|
// Définition de l'état |
publication.set("_etat_", ETAT_AJOUTE); |
|
publicationLiee.set("_etat_", aDonnee.ETAT_AJOUTE); |
Debug.log("publi liée:"+publicationLiee.getClass()); |
// Ajout à la grille |
grille.getStore().insert(publication, 0); |
grille.getSelectionModel().select(0, false); |
grille.stopEditing(); |
grille.getStore().insert(publicationLiee, 0); |
grille.startEditing(index, 0); |
grille.getSelectionModel().select(index, false); |
} |
} |
|
private void supprimerDansGrille(Publication publication) { |
if (publication != null) { |
private void supprimerDansGrille(CollectionAPublication publicationLiee) { |
if (publicationLiee != null) { |
// Ajout de la personne supprimée à la liste |
if ((publication.get("etat") == null || !publication.get("etat").equals(ETAT_AJOUTE)) && publication.getId() != null && !publication.getId().equals("")) { |
publicationsSupprimees.put(publication.getId(), publication); |
if ((publicationLiee.get("_etat_").equals("") || !publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) |
&& publicationLiee.getId() != null |
&& !publicationLiee.getId().equals("")) { |
Debug.log("Nbre publications supprimées avant:"+publicationsSupprimees.size()); |
publicationsSupprimees.put("id"+idGenere++, publicationLiee); |
GWT.log("Publications supprimée : "+publicationLiee.getPublication().getId()+" "+publicationLiee.getPublication().getNomComplet(), null); |
Debug.log("Nbre publications supprimées :"+publicationsSupprimees.size()); |
} |
|
// Suppression de l'enregistrement de la grille |
grille.getStore().remove(publication); |
grille.getStore().remove(publicationLiee); |
} |
} |
|
private Grid<Publication> creerGrille() { |
ListStore<Publication> storeGrille = new ListStore<Publication>(); |
storeGrille.addListener(Store.Add, new Listener<StoreEvent<Publication>>() { |
public void handleEvent(StoreEvent<Publication> ce) { |
private EditorGrid<CollectionAPublication> creerGrille() { |
ListStore<CollectionAPublication> storeGrille = new ListStore<CollectionAPublication>(); |
storeGrille.addListener(Store.Add, new Listener<StoreEvent<CollectionAPublication>>() { |
public void handleEvent(StoreEvent<CollectionAPublication> ce) { |
actualiserEtatBoutonsBarreOutils(); |
} |
}); |
storeGrille.addListener(Store.Remove, new Listener<StoreEvent<Publication>>() { |
public void handleEvent(StoreEvent<Publication> ce) { |
storeGrille.addListener(Store.Remove, new Listener<StoreEvent<CollectionAPublication>>() { |
public void handleEvent(StoreEvent<CollectionAPublication> ce) { |
actualiserEtatBoutonsBarreOutils(); |
} |
}); |
356,12 → 362,12 |
colonnes.add(new ColumnConfig("fascicule", i18nC.publicationFascicule(), 75)); |
colonnes.add(new ColumnConfig("truk_pages", i18nC.publicationPage(), 50)); |
|
GridSelectionModel<Publication> modeleDeSelection = new GridSelectionModel<Publication>(); |
GridSelectionModel<CollectionAPublication> modeleDeSelection = new GridSelectionModel<CollectionAPublication>(); |
|
ColumnModel modeleDeColonnes = new ColumnModel(colonnes); |
modeleDeColonnes.getColumn(0).setWidget(Images.ICONES.information().createImage(), "Info"); |
|
Grid<Publication> grillePublications = new Grid<Publication>(storeGrille, modeleDeColonnes); |
EditorGrid<CollectionAPublication> grillePublications = new EditorGrid<CollectionAPublication>(storeGrille, modeleDeColonnes); |
grillePublications.setHeight("100%"); |
grillePublications.setBorders(true); |
grillePublications.setSelectionModel(modeleDeSelection); |
368,7 → 374,6 |
grillePublications.addPlugin(expansionPlugin); |
grillePublications.addPlugin(numeroPlugin); |
grillePublications.getView().setForceFit(true); |
grillePublications.getView().setAutoFill(true); |
grillePublications.setAutoExpandColumn("titre"); |
grillePublications.setStripeRows(true); |
grillePublications.setTrackMouseOver(true); |
402,10 → 407,8 |
} |
|
private void rafraichirPublicationListe(PublicationListe listePublications) { |
List<Publication> liste = listePublications.toList(); |
|
publicationsSaisiesComboBox.getStore().removeAll(); |
publicationsSaisiesComboBox.getStore().add(liste); |
publicationsSaisiesComboBox.getStore().add(listePublications.toList()); |
publicationsSaisiesComboBox.expand(); |
} |
|
417,31 → 420,26 |
if (type.equals("liste_collection_a_publication")) { |
if (info.getDonnee(0) != null) { |
initialiser(); |
// TODO : passer à la méthode peupler un objet CollectionAPublicationListe et modifier le type de publications |
//publications = (CollectionAPublicationListe) info.getDonnee(0); |
collection.setPublicationsLiees((CollectionAPublicationListe) info.getDonnee(0)); |
peupler(); |
} |
} else if (type.equals("publication_modifiee")) { |
if (info.getDonnee(0) != null) { |
Publication publication = (Publication) info.getDonnee(0); |
Publication publicationDansGrille = grille.getStore().findModel("id_publication", publication.getId()); |
CollectionAPublication publicationDansGrille = grille.getStore().findModel("id_publication", publication.getId()); |
int index = grille.getStore().indexOf(publicationDansGrille); |
grille.getStore().remove(publicationDansGrille); |
grille.getStore().insert(publication, index); |
grille.getStore().commitChanges(); |
ajouterDansGrille(publication, index); |
} |
} else if (type.equals("publication_ajoutee")) { |
if (info.getDonnee(0) != null) { |
Publication publication = (Publication) info.getDonnee(0); |
grille.getStore().add(publication); |
grille.getStore().commitChanges(); |
ajouterDansGrille(publication); |
} |
} else if (info.getType().equals("liste_collection_a_publication")) { |
if (info.getDonnee(0) != null) { |
initialiser(); |
collection.setPublicationsLiees((CollectionAPublicationListe) info.getDonnee(0)); |
peupler(); |
} |
} else if (type.equals("suppression_collection_a_publication")) { |
Info.display("Suppression des publications liées à la collection", info.toString()); |
} else if (type.equals("ajout_collection_a_publication")) { |
Info.display("Ajout des publications liées à la collection", info.toString()); |
} else { |
GWT.log(Mediateur.i18nM.erreurRafraichir(info.getClass(), this.getClass()), null); |
} |
448,11 → 446,55 |
} |
|
public void peupler() { |
//grille.getStore().add(collection.getPublicationsLiees().toList()); |
grille.getStore().removeAll(); |
grille.getStore().add(collection.getPublicationsLiees().toList()); |
layout(); |
Info.display(i18nC.chargementPublication(), i18nC.ok()); |
} |
|
public void collecter() { |
if (etreAccede()) { |
int nbrePersonne = grille.getStore().getCount(); |
for (int i = 0; i < nbrePersonne; i++) { |
CollectionAPublication publicationLiee = grille.getStore().getAt(i); |
if (publicationLiee.get("_etat_") != null) { |
if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_MODIFIE)) { |
// Comme il est impossible de modifier les relations nous supprimons l'ancien enregistrement et ajoutons un nouveau avec le nouveau id_role |
publicationsSupprimees.put("id"+idGenere++, publicationLiee); |
|
CollectionAPublication relationAAjouter = (CollectionAPublication) publicationLiee.cloner(new CollectionAPublication()); |
publicationsAjoutees.put("id"+idGenere++, relationAAjouter); |
} |
if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) { |
publicationsAjoutees.put("id"+idGenere++, publicationLiee); |
} |
// Initialisation de la grille |
publicationLiee.set("_etat_", ""); |
} |
} |
grille.getStore().commitChanges(); |
} |
} |
|
public void soumettre() { |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
if (publicationsAjoutees.size() == 0 && publicationsSupprimees.size() == 0) { |
Info.display("Modification des publications liées", "Rien n'a été enregistré car le formulaire n'a pas été modifié."); |
} else { |
// Ajout des relations CollectionAPublication |
if (publicationsAjoutees.size() != 0) { |
mediateur.ajouterCollectionAPublication(this, collection.getId(), publicationsAjoutees); |
Debug.log("Nbre publications ajoutées :"+publicationsAjoutees.size()); |
} |
// Suppression des relations CollectionAPublication |
if (publicationsSupprimees.size() != 0) { |
mediateur.supprimerCollectionAPublication(this, publicationsSupprimees); |
Debug.log("Nbre publications supprimées :"+publicationsSupprimees.size()); |
} |
} |
} |
} |
|
private void obtenirPublicationsSaisies(String nom) { |
mediateur.selectionnerPublicationParNomComplet(this, null, nom+"%"); |
} |