New file |
0,0 → 1,621 |
package org.tela_botanica.client.vues.collection; |
|
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
|
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable; |
import org.tela_botanica.client.composants.GrillePaginable; |
import org.tela_botanica.client.composants.InfoLogger; |
import org.tela_botanica.client.composants.pagination.ProxyCollectionAPublication; |
import org.tela_botanica.client.composants.pagination.ProxyPublications; |
import org.tela_botanica.client.images.Images; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.aDonnee; |
import org.tela_botanica.client.modeles.collection.Collection; |
import org.tela_botanica.client.modeles.collection.CollectionAPublication; |
import org.tela_botanica.client.modeles.collection.CollectionAPublicationListe; |
import org.tela_botanica.client.modeles.publication.Publication; |
import org.tela_botanica.client.util.Debug; |
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.FormulaireOnglet; |
import org.tela_botanica.client.vues.publication.PublicationForm; |
|
import com.extjs.gxt.ui.client.core.XTemplate; |
import com.extjs.gxt.ui.client.data.ModelData; |
import com.extjs.gxt.ui.client.data.ModelType; |
import com.extjs.gxt.ui.client.event.BaseEvent; |
import com.extjs.gxt.ui.client.event.ButtonEvent; |
import com.extjs.gxt.ui.client.event.Events; |
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.ContentPanel; |
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.Field; |
import com.extjs.gxt.ui.client.widget.form.FormPanel; |
import com.extjs.gxt.ui.client.widget.form.Validator; |
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.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.toolbar.SeparatorToolItem; |
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; |
import com.google.gwt.core.client.GWT; |
import com.extjs.gxt.ui.client.widget.form.CheckBox; |
|
public class CollectionFormPublication extends FormulaireOnglet implements Rafraichissable { |
|
public static final String ID = "publication"; |
private Collection collection = null; |
private static int idGenere = 1; |
|
private ContentPanel panneauPrincipal = null; |
private ToolBar barreOutils = null; |
private GrillePaginable<ModelData> grille; |
|
private CollectionAPublicationListe publicationsAjoutees = null; |
private CollectionAPublicationListe publicationsSupprimees = null; |
private CollectionAPublicationListe publicationsModifiees = null; |
private ChampComboBoxRechercheTempsReelPaginable publicationsSaisiesComboBox = null; |
private Button publicationsBoutonSupprimer = null; |
private Button publicationsBoutonModifier = null; |
|
private FenetreForm fenetreFormulaire = null; |
|
public boolean publicationsSontModifiees = false; |
|
public CollectionFormPublication(Formulaire formulaireCourrant) { |
|
initialiserOnglet(formulaireCourrant); |
setId(ID); |
setText(Mediateur.i18nC.collectionPublication()); |
setStyleAttribute("padding", "0"); |
|
initialiser(); |
|
panneauPrincipal = creerPanneauContenantGrille(); |
setLayout(new FitLayout()); |
barreOutils = creerBarreOutilsGrille(); |
panneauPrincipal.setTopComponent(barreOutils); |
grille = creerGrille(); |
panneauPrincipal.setLayout(new FitLayout()); |
panneauPrincipal.add(grille); |
|
add(panneauPrincipal); |
} |
|
private void initialiser() { |
// Remise à zéro des modification dans la liste des auteurs |
idGenere = 1; |
publicationsAjoutees = new CollectionAPublicationListe(); |
publicationsSupprimees = new CollectionAPublicationListe(); |
publicationsModifiees = new CollectionAPublicationListe(); |
|
collection = ((CollectionForm) formulaire).collection; |
} |
|
private ContentPanel creerPanneauContenantGrille() { |
ContentPanel panneau = new ContentPanel(); |
|
panneau.setHeadingHtml(i18nC.collectionPublicationTitre()); |
panneau.setIcon(Images.ICONES.table()); |
panneau.setLayout(new FitLayout()); |
panneau.setFrame(true); |
|
return panneau; |
} |
|
private ToolBar creerBarreOutilsGrille() { |
ToolBar barreOutils = new ToolBar(); |
|
publicationsSaisiesComboBox = creerComboBoxPublicationsSaisis(); |
barreOutils.add(publicationsSaisiesComboBox); |
|
barreOutils.add(new Text(" ou ")); |
|
Button ajouterBouton = creerBoutonAjouter(); |
barreOutils.add(ajouterBouton); |
|
barreOutils.add(new SeparatorToolItem()); |
|
publicationsBoutonModifier = creerBoutonModifier(); |
barreOutils.add(publicationsBoutonModifier); |
|
barreOutils.add(new SeparatorToolItem()); |
|
publicationsBoutonSupprimer = creerBoutonSupprimer(); |
barreOutils.add(publicationsBoutonSupprimer); |
|
barreOutils.add(new SeparatorToolItem()); |
|
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 = creerFenetreModaleAvecFormulairePublication(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) { |
ModelData publicationSaisieSelectionnee = grille.getGrille().getSelectionModel().getSelectedItem(); |
if (publicationSaisieSelectionnee == null) { |
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication()); |
} else { |
fenetreFormulaire = creerFenetreModaleAvecFormulairePublication(Formulaire.MODE_MODIFIER); |
fenetreFormulaire.show(); |
} |
} |
}); |
return bouton; |
} |
|
private FenetreForm creerFenetreModaleAvecFormulairePublication(String mode) { |
String publicationId = null; |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
CollectionAPublication publicationSaisiSelectionne = new CollectionAPublication(grille.getGrille().getSelectionModel().getSelectedItem(), false); |
publicationId = publicationSaisiSelectionne.getIdPublication(); |
} |
|
final FenetreForm fenetre = new FenetreForm(""); |
final PublicationForm formulaire = creerFormulairePublication(fenetre, publicationId); |
fenetre.add(formulaire); |
return fenetre; |
} |
|
private PublicationForm creerFormulairePublication(final FenetreForm fenetre, final String publicationId) { |
PublicationForm formulairePublication = new PublicationForm(mediateur, publicationId, this); |
FormPanel panneauFormulaire = formulairePublication.getFormulaire(); |
fenetre.setHeadingHtml(panneauFormulaire.getHeadingHtml()); |
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 = creerEcouteurValidationFormulairePublication(fenetre, formulairePublication); |
final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur); |
fenetre.setBottomComponent(barreValidation); |
|
return formulairePublication; |
} |
|
private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePublication(final FenetreForm fenetre, final PublicationForm 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(); |
} |
} |
}; |
|
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) { |
List<ModelData> listeDonneesSelectionnees = grille.getGrille().getSelectionModel().getSelectedItems(); |
for (ModelData donneeSelectionnee : listeDonneesSelectionnees) { |
CollectionAPublication publicationSaisieSelectionnee = new CollectionAPublication(grille.getGrille().getSelectionModel().getSelectedItem(), false); |
supprimerDansGrille(publicationSaisieSelectionnee, donneeSelectionnee); |
} |
} |
}); |
return bouton; |
} |
|
private void actualiserGrille() { |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
mediateur.selectionnerCollectionAPublication(this, collection.getId(), null); |
} else { |
grille.getStore().removeAll(); |
layout(); |
} |
} |
|
private ChampComboBoxRechercheTempsReelPaginable creerComboBoxPublicationsSaisis() { |
|
ModelType modelTypePublications = new ModelType(); |
modelTypePublications.setRoot("publications"); |
modelTypePublications.setTotalName("nbElements"); |
modelTypePublications.addField("ccapu_id_collection"); |
modelTypePublications.addField("ccapu_id_publication"); |
modelTypePublications.addField("ccapu_source"); |
modelTypePublications.addField("cc_nom"); |
modelTypePublications.addField("cc_id_collection"); |
modelTypePublications.addField("cpu_id_publication"); |
modelTypePublications.addField("cpu_fmt_nom_complet"); |
modelTypePublications.addField("cpu_titre"); |
modelTypePublications.addField("cpu_nom"); |
modelTypePublications.addField("cpu_fmt_auteur"); |
modelTypePublications.addField("cpu_indication_nvt"); |
modelTypePublications.addField("cpu_truk_pages"); |
modelTypePublications.addField("cpu_fascicule"); |
modelTypePublications.addField("cpu_date_parution"); |
modelTypePublications.addField("cpu_ce_truk_editeur"); |
|
String displayNamePublications = "cpu_fmt_nom_complet"; |
ProxyPublications<ModelData> proxyPublications= new ProxyPublications<ModelData>(null); |
|
final ChampComboBoxRechercheTempsReelPaginable publicationsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyPublications, modelTypePublications, displayNamePublications); |
publicationsCombo.getCombo().setTabIndex(tabIndex++); |
publicationsCombo.getCombo().setForceSelection(true); |
|
publicationsCombo.getCombo().setValidator(new Validator() { |
public String validate(Field<?> field, String value) { |
String retour = null; |
if (field.getRawValue().equals("")) { |
field.setValue(null); |
} else if (publicationsCombo.getStore().findModel("cpu_fmt_nom_complet", field.getRawValue()) == null) { |
String contenuBrut = field.getRawValue(); |
field.setValue(null); |
field.setRawValue(contenuBrut); |
retour = "Veuillez sélectionner une valeur ou laisser le champ vide"; |
} |
return retour; |
} |
}); |
|
publicationsCombo.getCombo().setEmptyText("Rechercher et sélectionner une publication existante dans la base"); |
|
publicationsCombo.getCombo().addListener(Events.Select, new Listener<BaseEvent>() { |
public void handleEvent(BaseEvent be) { |
if (publicationsSaisiesComboBox.getValeur() instanceof ModelData) { |
Publication publicationSaisieSelectionne = new Publication(publicationsSaisiesComboBox.getValeur(), false); |
ajouterDansGrille(publicationSaisieSelectionne); |
publicationsSaisiesComboBox.getCombo().setValue(null); |
} |
} |
}); |
|
return publicationsCombo; |
} |
|
private void ajouterDansGrille(Publication publication) { |
ajouterDansGrille(publication, 0); |
} |
|
private void ajouterDansGrille(Publication publication, int index) { |
if (publication != null) { |
CollectionAPublication publicationLiee = new CollectionAPublication(false); |
publicationLiee.setPublication(publication); |
publicationLiee.setIdPublication(publication.getId()); |
|
// Gestion de l'id de la collection |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
publicationLiee.setIdCollection(collection.getId()); |
} |
|
// ajout au cache si nécessaire |
if(!Publication.publisSaisiesModifieesCache.containsKey(publication.getId())) { |
Publication.publisSaisiesModifieesCache.put(publication.getId(), publication); |
} |
|
publicationLiee.set("_etat_", aDonnee.ETAT_AJOUTE); |
|
grille.getGrille().stopEditing(); |
grille.getGrille().getStore().insert(publicationLiee, index); |
grille.getGrille().startEditing(index, 0); |
grille.getGrille().getSelectionModel().select(index, false); |
} |
} |
|
private void supprimerDansGrille(CollectionAPublication publicationLiee, ModelData publicationLieeModele) { |
if (publicationLiee != null) { |
// Ajout de la personne supprimée à la liste |
if ((publicationLiee.get("_etat_").equals("") || !publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) |
&& publicationLiee.getId() != null |
&& !publicationLiee.getId().equals("")) { |
publicationsSupprimees.put("id"+idGenere++, publicationLiee); |
} |
|
// Suppression de l'enregistrement de la grille |
grille.getStore().remove(publicationLieeModele); |
} |
} |
|
private GrillePaginable<ModelData> creerGrille() { |
|
GrillePaginable<ModelData> grillePublications = null; |
|
// ModelType |
ModelType modelTypeCollectionAPublication = new ModelType(); |
modelTypeCollectionAPublication.setRoot("collectionsAPublication"); |
modelTypeCollectionAPublication.setTotalName("nbElements"); |
modelTypeCollectionAPublication.addField("ccapu_id_collection"); |
modelTypeCollectionAPublication.addField("ccapu_id_publication"); |
modelTypeCollectionAPublication.addField("ccapu_source"); |
modelTypeCollectionAPublication.addField("ccapu_mark_licence"); |
modelTypeCollectionAPublication.addField("cpu_id_publication"); |
modelTypeCollectionAPublication.addField("cpu_fmt_auteur"); |
modelTypeCollectionAPublication.addField("cpu_titre"); |
modelTypeCollectionAPublication.addField("cpu_collection"); |
modelTypeCollectionAPublication.addField("cpu_ce_truk_editeur"); |
modelTypeCollectionAPublication.addField("cpu_date_parution"); |
modelTypeCollectionAPublication.addField("cpu_fascicule"); |
modelTypeCollectionAPublication.addField("cpu_truk_pages"); |
modelTypeCollectionAPublication.addField("cpu_indication_nvt"); |
|
// Proxy |
ProxyCollectionAPublication<ModelData> proxyCollectionAPublication = new ProxyCollectionAPublication<ModelData>(null, collection.getId()); |
|
// Colonnes |
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>(); |
RowNumberer numeroPlugin = new RowNumberer(); |
numeroPlugin.setHeaderHtml("#"); |
XTemplate infoTpl = XTemplate.create("<p>"+ |
"<span style='font-weight:bold;'>"+i18nC.publicationAuteurs()+" :</span> {cpu_fmt_auteur}<br />"+ |
"<span style='font-weight:bold;'>"+i18nC.publicationTitre()+" :</span> {cpu_titre}<br />"+ |
"<span style='font-weight:bold;'>"+i18nC.publicationRevueCollection()+" :</span> {cpu_collection}<br />"+ |
"<span style='font-weight:bold;'>"+i18nC.publicationEditeur()+" :</span> {_editeur_}"+ |
"</p>"); |
RowExpander expansionPlugin = new RowExpander(); |
expansionPlugin.setTemplate(infoTpl); |
colonnes.add(expansionPlugin); |
|
ColumnConfig sourceColonne = new ColumnConfig("ccapu_source", i18nC.collectionPublicationSource(), 60); |
sourceColonne.setRenderer(new GridCellRenderer<ModelData>() { |
@Override |
public Object render(ModelData model, String property, |
ColumnData config, int rowIndex, int colIndex, |
ListStore<ModelData> store, Grid<ModelData> grid) { |
|
CheckBox cbSource = new CheckBox(); |
boolean source = model.get("ccapu_source") != null && model.get("ccapu_source").equals("1"); |
|
Publication publiFromCache = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()); |
if(publiFromCache != null) { |
source = publiFromCache.get("ccapu_source") != null && publiFromCache.get("ccapu_source").equals("1"); |
} |
|
cbSource.setValue(source); |
|
final Integer ligne = rowIndex; |
final ModelData ceModele = model; |
|
cbSource.addListener(Events.Change, new Listener<BaseEvent>() { |
@Override |
public void handleEvent(BaseEvent be) { |
String estSource = ((CheckBox)be.getSource()).getValue() ? "1" : "0"; |
ceModele.set("ccapu_source", estSource); |
if (!(ceModele.get("_etat_") != null && ceModele.get("_etat_").equals(aDonnee.ETAT_AJOUTE))) { |
ceModele.set("_etat_", aDonnee.ETAT_MODIFIE); |
} |
grille.getStore().commitChanges(); |
} |
}); |
return cbSource; |
} |
}); |
colonnes.add(sourceColonne); |
|
colonnes.add(numeroPlugin); |
colonnes.add(new ColumnConfig("cpu_fmt_auteur", i18nC.publicationAuteurs(), 135)); |
colonnes.add(new ColumnConfig("cpu_titre", i18nC.publicationTitre(), 135)); |
colonnes.add(new ColumnConfig("cpu_collection", i18nC.publicationRevueCollection(), 100)); |
colonnes.add(creerColonneEditeur()); |
colonnes.add(creerColonneAnneePublication()); |
colonnes.add(new ColumnConfig("cpu_indication_nvt", i18nC.publicationNvt(), 75)); |
colonnes.add(new ColumnConfig("cpu_fascicule", i18nC.publicationFascicule(), 70)); |
colonnes.add(new ColumnConfig("cpu_truk_pages", i18nC.publicationPage(), 50)); |
|
HashMap<String, String> virtualFields = new HashMap<String, String>(); |
virtualFields.put("_editeur_", "cpu_ce_truk_editeur"); |
virtualFields.put("_annee_", "cpu_date_parution"); |
virtualFields.put("_etat_", ""); |
|
// Modele de selection |
GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>(); |
ColumnModel modeleDeColonnes = new ColumnModel(colonnes); |
modeleDeColonnes.getColumn(0).setWidget(Images.ICONES.information().createImage(), "Info"); |
|
// Grille |
grillePublications = new GrillePaginable<ModelData>(modelTypeCollectionAPublication, virtualFields, proxyCollectionAPublication, colonnes, modeleDeColonnes); |
grillePublications.getGrille().setBorders(true); |
grillePublications.getGrille().setSelectionModel(modeleDeSelection); |
grillePublications.getGrille().addPlugin(expansionPlugin); |
grillePublications.getGrille().addPlugin(numeroPlugin); |
grillePublications.getGrille().getView().setForceFit(true); |
grillePublications.getGrille().setAutoExpandColumn("titre"); |
grillePublications.getGrille().setStripeRows(true); |
grillePublications.getGrille().setTrackMouseOver(true); |
|
// Rajouter des écouteurs |
grillePublications.getStore().addListener(Store.Add, new Listener<StoreEvent<ModelData>>() { |
public void handleEvent(StoreEvent<ModelData> ce) { |
actualiserEtatBoutonsBarreOutils(); |
} |
}); |
grillePublications.getStore().addListener(Store.Remove, new Listener<StoreEvent<ModelData>>() { |
public void handleEvent(StoreEvent<ModelData> ce) { |
actualiserEtatBoutonsBarreOutils(); |
} |
}); |
|
return grillePublications; |
} |
|
private ColumnConfig creerColonneEditeur() { |
GridCellRenderer<ModelData> editeurRendu = new GridCellRenderer<ModelData>() { |
public String render(ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) { |
String editeur = (new CollectionAPublication(model, false)).getPublication().getNomEditeur(); |
// Des fois l'éditeur est vide, là intervient le caché fabriqué dans publication |
if(editeur.isEmpty() && Publication.publisSaisiesModifieesCache.containsKey((new CollectionAPublication(model, false)).getPublication().getId())) { |
editeur = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getNomEditeur(); |
} |
model.set("_editeur_", editeur); |
return editeur; |
} |
}; |
ColumnConfig editeurColonne = new ColumnConfig("_editeur_", Mediateur.i18nC.publicationEditeur(), 130); |
editeurColonne.setRenderer(editeurRendu); |
return editeurColonne; |
} |
|
private ColumnConfig creerColonneAnneePublication() { |
GridCellRenderer<ModelData> datePublicationRendu = new GridCellRenderer<ModelData>() { |
public String render(ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) { |
String annee = (new CollectionAPublication(model, false)).getPublication().getAnneeParution(); |
if(annee.isEmpty() && Publication.publisSaisiesModifieesCache.containsKey((new CollectionAPublication(model, false)).getPublication().getId())) { |
annee = Publication.publisSaisiesModifieesCache.get((new CollectionAPublication(model, false)).getPublication().getId()).getAnneeParution(); |
} |
model.set("_annee_", annee); |
return annee; |
} |
}; |
ColumnConfig datePublicationColonne = new ColumnConfig("_annee_", Mediateur.i18nC.publicationDateParution(), 40); |
datePublicationColonne.setRenderer(datePublicationRendu); |
return datePublicationColonne; |
} |
|
public void actualiserEtatBoutonsBarreOutils() { |
// Activation des boutons si la grille contient un élément |
if (grille.getStore().getCount() > 0) { |
publicationsBoutonSupprimer.enable(); |
publicationsBoutonModifier.enable(); |
} |
// Désactivation des boutons si la grille ne contient plus d'élément |
if (grille.getStore().getCount() == 0) { |
publicationsBoutonSupprimer.disable(); |
publicationsBoutonModifier.disable(); |
} |
} |
|
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof Information) { |
Information info = (Information) nouvellesDonnees; |
rafraichirInformation(info); |
} else { |
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null); |
} |
} |
|
public void rafraichirInformation(Information info) { |
if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) { |
GWT.log("MESSAGES:\n"+info.getMessages().toString(), null); |
} |
String type = info.getType(); |
if (type.equals("liste_collection_a_publication")) { |
if (info.getDonnee(0) != null) { |
initialiser(); |
collection.setPublicationsLiees((CollectionAPublicationListe) info.getDonnee(0)); |
peupler(); |
} |
} else if (info.getType().equals("ajout_collection")) { |
if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) { |
String collectionId = (String) info.getDonnee(0); |
|
// Suite à la récupération de l'id de la collection nouvellement ajoutée nous ajoutons les publications liées |
// En mode AJOUT, il ne peut que y avoir des publications liées ajoutées |
mediateur.ajouterCollectionAPublication(this, collectionId, publicationsAjoutees); |
} |
} else if (type.equals("publication_modifiee")) { |
if (info.getDonnee(0) != null) { |
Publication publication = (Publication) info.getDonnee(0); |
ModelData publicationDansGrille = null; |
publicationDansGrille = grille.getStore().findModel("cpu_id_publication", publication.getId()); |
publication.set("ccapu_source", publicationDansGrille.get("ccapu_source")); |
int index = grille.getStore().indexOf(publicationDansGrille); |
grille.getStore().remove(publicationDansGrille); |
ajouterDansGrille(publication, index); |
} |
} else if (type.equals("publication_ajoutee")) { |
if (info.getDonnee(0) != null) { |
Publication publication = (Publication) info.getDonnee(0); |
ajouterDansGrille(publication); |
} |
} else if (type.equals("suppression_collection_a_publication")) { |
InfoLogger.display("Suppression des publications liées à la collection", info.toString()); |
} else if (type.equals("ajout_collection_a_publication")) { |
InfoLogger.display("Ajout des publications liées à la collection", info.toString()); |
} else { |
GWT.log(Mediateur.i18nM.erreurRafraichir(info.getClass(), this.getClass()), null); |
} |
} |
|
public void peupler() { |
grille.getStore().removeAll(); |
grille.getStore().add(collection.getPublicationsLiees().toList()); |
layout(); |
InfoLogger.display(i18nC.chargementPublication(), i18nC.ok()); |
} |
|
public void collecter() { |
if (etreAccede()) { |
int nbrePublication = grille.getStore().getCount(); |
for (int i = 0; i < nbrePublication; i++) { |
ModelData publicationLiee = grille.getStore().getAt(i); |
CollectionAPublication cap = new CollectionAPublication(grille.getStore().getAt(i), false); |
if (publicationLiee.get("_etat_") != null) { |
if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_MODIFIE)) { |
publicationsModifiees.put(cap.getIdPublication(), cap); |
} |
if (publicationLiee.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) { |
publicationsAjoutees.put("id"+idGenere++, cap); |
} |
// 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 && publicationsModifiees.size() == 0) { |
//InfoLogger.display("Modification des publications liées", "Rien n'a été enregistré car le formulaire n'a pas été modifié."); |
} else { |
//Window.alert(publicationsAjoutees.size()+" | "+publicationsSupprimees.size()+" | "+publicationsModifiees.size()); |
publicationsSontModifiees = true; |
// Ajout des relations CollectionAPublication |
if (publicationsAjoutees.size() != 0) { |
mediateur.ajouterCollectionAPublication(this, collection.getId(), publicationsAjoutees); |
} |
|
// Modification des relations CollectionAPublication |
if (publicationsModifiees.size() != 0) { |
mediateur.modifierCollectionAPublication(this, publicationsModifiees); |
} |
|
// Suppression des relations CollectionAPublication |
if (publicationsSupprimees.size() != 0) { |
mediateur.supprimerCollectionAPublication(this, publicationsSupprimees); |
} |
} |
} |
} |
} |
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/collection/CollectionFormPublication.java:r1136-1368 |
Merged /branches/v1.8-narince/src/org/tela_botanica/client/vues/collection/CollectionFormPublication.java:r1891-1892 |
Merged /trunk/src/org/tela_botanica/client/vues/collection/CollectionFormPublication.java:r11-933,1209-1382 |
Merged /branches/v1.1-aramon/src/org/tela_botanica/client/vues/collection/CollectionFormPublication.java:r1383-1511 |