New file |
0,0 → 1,656 |
package org.tela_botanica.client.vues.collection; |
|
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.List; |
|
import org.tela_botanica.client.Mediateur; |
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.Valeur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.modeles.aDonnee; |
import org.tela_botanica.client.modeles.collection.Collection; |
import org.tela_botanica.client.modeles.collection.CollectionACommentaire; |
import org.tela_botanica.client.modeles.collection.CollectionACommentaireListe; |
import org.tela_botanica.client.modeles.commentaire.Commentaire; |
import org.tela_botanica.client.modeles.commentaire.CommentaireListe; |
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.commentaire.CommentaireForm; |
|
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.ContentPanel; |
import com.extjs.gxt.ui.client.widget.Info; |
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.FormPanel; |
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.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; |
|
public class CollectionFormCommentaire extends FormulaireOnglet implements Rafraichissable { |
|
private Collection collection = null; |
private static int idGenere = 1; |
|
private ContentPanel panneauPrincipal = null; |
private ToolBar barreOutils = null; |
private EditorGrid<CollectionACommentaire> grille; |
private ComboBox<Valeur> typeCombo = null; |
|
private CollectionACommentaireListe commentairesAjoutees = null; |
private CollectionACommentaireListe commentairesSupprimees = null; |
private ComboBox<Commentaire> commentairesSaisisComboBox = null; |
private Button commentairesBoutonSupprimer = null; |
private Button commentairesBoutonModifier = null; |
|
private static boolean chargementTypesOk = false; |
private static boolean chargementCommentairesOk = false; |
|
private FenetreForm fenetreFormulaire = null; |
|
public CollectionFormCommentaire(Formulaire formulaireCourrant) { |
initialiserOnglet(formulaireCourrant); |
setText(Mediateur.i18nC.collectionCommentaire()); |
setStyleAttribute("padding", "0"); |
|
panneauPrincipal = creerPanneauContenantGrille(); |
barreOutils = creerBarreOutilsGrille(); |
panneauPrincipal.setTopComponent(barreOutils); |
grille = creerGrille(); |
panneauPrincipal.add(grille); |
|
mediateur.obtenirListeValeurEtRafraichir(this, "typeCommentaireCollection"); |
add(panneauPrincipal); |
|
initialiser(); |
} |
|
private void initialiser() { |
// Remise à zéro des modification dans la liste des auteurs |
idGenere = 1; |
commentairesAjoutees = new CollectionACommentaireListe(); |
commentairesSupprimees = new CollectionACommentaireListe(); |
|
// Actualisation de l'état des boutons de la barre d'outils |
actualiserEtatBoutonsBarreOutils(); |
|
collection = ((CollectionForm) formulaire).collection; |
} |
|
private void initialiserChargement() { |
chargementCommentairesOk = false; |
} |
|
private ContentPanel creerPanneauContenantGrille() { |
ContentPanel panneau = new ContentPanel(); |
|
panneau.setHeading(i18nC.collectionCommentaireTitre()); |
panneau.setIcon(Images.ICONES.table()); |
panneau.setLayout(new FitLayout()); |
panneau.setFrame(true); |
|
return panneau; |
} |
|
private ToolBar creerBarreOutilsGrille() { |
ToolBar barreOutils = new ToolBar(); |
|
Button ajouterPersonneBouton = creerBoutonAjouter(); |
barreOutils.add(ajouterPersonneBouton); |
|
barreOutils.add(new Text(" ou ")); |
|
commentairesSaisisComboBox = creerComboBoxCommentairesSaisies(); |
barreOutils.add(commentairesSaisisComboBox); |
|
barreOutils.add(new SeparatorToolItem()); |
|
commentairesBoutonModifier = creerBoutonModifier(); |
barreOutils.add(commentairesBoutonModifier); |
|
barreOutils.add(new SeparatorToolItem()); |
|
commentairesBoutonSupprimer = creerBoutonSupprimer(); |
barreOutils.add(commentairesBoutonSupprimer); |
|
barreOutils.add(new SeparatorToolItem()); |
|
Button rafraichirPersonneBouton = creerBoutonRafraichir(); |
barreOutils.add(rafraichirPersonneBouton); |
|
return barreOutils; |
} |
|
private Button creerBoutonAjouter() { |
Button bouton = new Button(i18nC.ajouter()); |
bouton.setIcon(Images.ICONES.vcardAjouter()); |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
|
@Override |
public void componentSelected(ButtonEvent ce) { |
fenetreFormulaire = creerFenetreModaleAvecFormulaireCommentaire(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>() { |
@Override |
public void componentSelected(ButtonEvent ce) { |
CollectionACommentaire commentaireSaisiSelectionne = grille.getSelectionModel().getSelectedItem(); |
if (commentaireSaisiSelectionne == null) { |
Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerCommentaire()); |
} else { |
fenetreFormulaire = creerFenetreModaleAvecFormulaireCommentaire(Formulaire.MODE_MODIFIER); |
fenetreFormulaire.show(); |
} |
} |
}); |
return bouton; |
} |
|
private FenetreForm creerFenetreModaleAvecFormulaireCommentaire(String mode) { |
String commentaireId = null; |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
CollectionACommentaire commentaierSaisieSelectionnee = grille.getSelectionModel().getSelectedItem(); |
commentaireId = commentaierSaisieSelectionnee.getIdCommentaire(); |
} |
|
final FenetreForm fenetre = new FenetreForm(""); |
final CommentaireForm formulaire = creerFormulaireCommentaire(fenetre, commentaireId); |
fenetre.add(formulaire); |
return fenetre; |
} |
|
private CommentaireForm creerFormulaireCommentaire(final FenetreForm fenetre, String commentaireId) { |
CommentaireForm formulaire = new CommentaireForm(mediateur, commentaireId, this); |
FormPanel panneauFormulaire = formulaire.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 = creerEcouteurValidationFormulaireCommentaire(fenetre, formulaire); |
final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur); |
fenetre.setBottomComponent(barreValidation); |
|
return formulaire; |
} |
|
private SelectionListener<ButtonEvent> creerEcouteurValidationFormulaireCommentaire(final FenetreForm fenetre, final CommentaireForm formulaire) { |
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() { |
@Override |
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 = creerFenetreModaleAvecFormulaireCommentaire(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>() { |
@Override |
public void componentSelected(ButtonEvent ce) { |
CollectionACommentaire commentaireSaisiSelectionnee = grille.getSelectionModel().getSelectedItem(); |
if (commentaireSaisiSelectionnee == null) { |
Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerCommentaire()); |
} else { |
supprimerDansGrille(commentaireSaisiSelectionnee); |
} |
} |
}); |
return bouton; |
} |
|
private Button creerBoutonRafraichir() { |
Button bouton = new Button(i18nC.rafraichir()); |
bouton.setIcon(Images.ICONES.rafraichir()); |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
@Override |
public void componentSelected(ButtonEvent ce) { |
actualiserGrille(); |
} |
}); |
return bouton; |
} |
|
private ComboBox<Commentaire> creerComboBoxCommentairesSaisies() { |
ListStore<Commentaire> commentairesSaisiesStore = new ListStore<Commentaire>(); |
commentairesSaisiesStore.add(new ArrayList<Commentaire>()); |
|
ComboBox<Commentaire> comboBox = new ComboBox<Commentaire>(); |
comboBox.setWidth(200); |
comboBox.setEmptyText(i18nC.chercherCommentaireSaisi()); |
comboBox.setTriggerAction(TriggerAction.ALL); |
comboBox.setEditable(true); |
comboBox.setDisplayField("titre"); |
comboBox.setStore(commentairesSaisiesStore); |
comboBox.addKeyListener(new KeyListener() { |
public void componentKeyUp(ComponentEvent ce) { |
if (commentairesSaisisComboBox.getRawValue() != null && commentairesSaisisComboBox.getRawValue().length() > 0) { |
if (!ce.isNavKeyPress()) { |
obtenirCommentairesSaisis(commentairesSaisisComboBox.getRawValue()); |
} |
} |
} |
}); |
comboBox.addListener(Events.Select, new Listener<BaseEvent>() { |
@Override |
public void handleEvent(BaseEvent be) { |
if (commentairesSaisisComboBox.getValue() instanceof Commentaire) { |
Commentaire commentaireSaisiSelectionnee = commentairesSaisisComboBox.getValue(); |
ajouterDansGrille(commentaireSaisiSelectionnee); |
commentairesSaisisComboBox.setValue(null); |
} |
} |
}); |
return comboBox; |
} |
|
private void ajouterDansGrille(Commentaire commentaire) { |
ajouterDansGrille(commentaire, null, 0); |
} |
|
private void ajouterDansGrille(Commentaire commentaire, String type, int index) { |
if (commentaire != null) { |
CollectionACommentaire relationCollectionACommentaire = new CollectionACommentaire(); |
relationCollectionACommentaire.setCommentaire(commentaire); |
relationCollectionACommentaire.setIdCommentaire(commentaire.getId()); |
if (type != null) { |
relationCollectionACommentaire.set("_type_", type); |
} |
// Gestion de l'id de la collection |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
relationCollectionACommentaire.setIdCollection(collection.getId()); |
} |
relationCollectionACommentaire.set("_etat_", aDonnee.ETAT_AJOUTE); |
corrigerChampsGrille(relationCollectionACommentaire); |
|
// Ajout à la grille |
grille.stopEditing(); |
grille.getStore().insert(relationCollectionACommentaire, index); |
grille.startEditing(index, 0); |
grille.getSelectionModel().select(index, false); |
} |
} |
|
private void supprimerDansGrille(CollectionACommentaire relationCollectionACommentaire) { |
if (relationCollectionACommentaire != null) { |
// Ajout de la personne supprimée à la liste |
if ((relationCollectionACommentaire.get("_etat_").equals("") || !relationCollectionACommentaire.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) |
&& relationCollectionACommentaire.getId() != null |
&& !relationCollectionACommentaire.getId().equals("")) { |
Debug.log("Nbre commentaires supprimées avant:"+commentairesSupprimees.size()); |
commentairesSupprimees.put("id"+idGenere++, relationCollectionACommentaire); |
Debug.log("Commentaires supprimées : "+relationCollectionACommentaire.getCommentaire().getId()); |
Debug.log("Nbre commentaires supprimées :"+commentairesSupprimees.size()); |
} |
|
// Suppression de l'enregistrement de la grille |
grille.getStore().remove(relationCollectionACommentaire); |
} |
} |
|
private EditorGrid<CollectionACommentaire> creerGrille() { |
ListStore<CollectionACommentaire> storeGrille = new ListStore<CollectionACommentaire>(); |
storeGrille.addListener(Store.Add, new Listener<StoreEvent<CollectionACommentaire>>() { |
public void handleEvent(StoreEvent<CollectionACommentaire> ce) { |
actualiserEtatBoutonsBarreOutils(); |
} |
}); |
storeGrille.addListener(Store.Remove, new Listener<StoreEvent<CollectionACommentaire>>() { |
public void handleEvent(StoreEvent<CollectionACommentaire> ce) { |
actualiserEtatBoutonsBarreOutils(); |
} |
}); |
storeGrille.addListener(Store.Update, new Listener<StoreEvent<CollectionACommentaire>>() { |
public void handleEvent(StoreEvent<CollectionACommentaire> ce) { |
if (ce.getRecord().isModified("_type_") && !ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) { |
Debug.log("id type modifié : "+ce.getModel().get("_type_")); |
ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE); |
} |
} |
}); |
|
RowNumberer pluginLigneNumero = new RowNumberer(); |
|
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>(); |
colonnes.add(pluginLigneNumero); |
|
colonnes.add(creerColonneType()); |
colonnes.add(new ColumnConfig("_titre_", i18nC.commentaireTitre(), 150)); |
colonnes.add(new ColumnConfig("_texte_", i18nC.commentaireTexte(), 75)); |
colonnes.add(new ColumnConfig("_ponderation_", i18nC.commentairePonderation(), 35)); |
colonnes.add(creerColonneAcces()); |
|
GridSelectionModel<CollectionACommentaire> modeleDeSelection = new GridSelectionModel<CollectionACommentaire>(); |
ColumnModel modeleDeColonnes = new ColumnModel(colonnes); |
|
EditorGrid<CollectionACommentaire> grille = new EditorGrid<CollectionACommentaire>(storeGrille, modeleDeColonnes); |
grille.setHeight("100%"); |
grille.setBorders(true); |
grille.setSelectionModel(modeleDeSelection); |
grille.addPlugin(pluginLigneNumero); |
grille.getView().setForceFit(true); |
grille.setAutoExpandColumn("_titre_"); |
grille.setStripeRows(true); |
grille.setTrackMouseOver(true); |
|
return grille; |
} |
|
private ColumnConfig creerColonneType() { |
typeCombo = new ComboBox<Valeur>(); |
typeCombo.setForceSelection(true); |
typeCombo.setTriggerAction(TriggerAction.ALL); |
typeCombo.setDisplayField("nom"); |
typeCombo.setStore(new ListStore<Valeur>()); |
typeCombo.setEditable(false); |
|
CellEditor typeEditeur = new CellEditor(typeCombo) { |
@Override |
public Object preProcessValue(Object valeur) { |
Valeur retour = null; |
if (valeur != null ) { |
Debug.log(""+valeur.toString()); |
if (typeCombo.getStore().findModel("nom", valeur.toString()) != null) { |
retour = typeCombo.getStore().findModel("nom", valeur.toString()); |
} else if (typeCombo.getStore().findModel("abr", valeur.toString()) != null) { |
retour = typeCombo.getStore().findModel("abr", valeur.toString()); |
} else if (typeCombo.getStore().findModel("id_valeur", valeur.toString()) != null) { |
retour = typeCombo.getStore().findModel("id_valeur", valeur.toString()); |
} |
} |
return retour; |
} |
|
@Override |
public Object postProcessValue(Object valeur) { |
String retour = null; |
if (valeur != null ) { |
if (valeur instanceof Valeur) { |
Valeur valeurOntologie = (Valeur) valeur; |
retour = valeurOntologie.getNom(); |
Debug.log("Retour:"+retour); |
} |
} |
return retour; |
} |
}; |
|
GridCellRenderer<CollectionACommentaire> typeRendu = new GridCellRenderer<CollectionACommentaire>() { |
@Override |
public String render(CollectionACommentaire model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<CollectionACommentaire> store, Grid<CollectionACommentaire> grid) { |
String typeOrigine = model.get("_type_"); |
String type = typeOrigine; |
if (typeCombo.getStore() != null && typeOrigine != null && typeOrigine.matches("[0-9"+aDonnee.SEPARATEUR_VALEURS+"]+")) { |
type = ""; |
String[] valeurs = typeOrigine.split(aDonnee.SEPARATEUR_VALEURS); |
int nbreValeurs = valeurs.length; |
int indexAvtDernier = nbreValeurs - 1; |
if (nbreValeurs > 0) { |
for (int i = 0; i < nbreValeurs; i++) { |
String valeur = valeurs[i]; |
if (valeur.matches("^[0-9]+$")) { |
if (valeur.equals("0")) { |
valeur = ""; |
} else if (typeCombo.getStore() != null) { |
ListStore<Valeur> ontologie = typeCombo.getStore(); |
Valeur valeurOntologie = ontologie.findModel("id_valeur", valeur); |
if (valeurOntologie != null) { |
valeur = valeurOntologie.getNom(); |
} |
} |
} |
if (i != indexAvtDernier) { |
type += valeur+", "; |
} else { |
type += valeur; |
} |
} |
} |
} |
model.set("_type_", type); |
return type; |
} |
}; |
ColumnConfig typeColonne = new ColumnConfig("_type_", i18nC.commentaireType(), 100); |
typeColonne.setEditor(typeEditeur); |
typeColonne.setRenderer(typeRendu); |
return typeColonne; |
} |
|
private ColumnConfig creerColonneAcces() { |
GridCellRenderer<CollectionACommentaire> accesRendu = new GridCellRenderer<CollectionACommentaire>() { |
@Override |
public String render(CollectionACommentaire model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<CollectionACommentaire> store, Grid<CollectionACommentaire> grid) { |
String acces = (model.getCommentaire().etrePublic() ? i18nC.donneePublic() : i18nC.donneePrivee()); |
model.set("_public_", acces); |
return acces; |
} |
}; |
ColumnConfig accesColonne = new ColumnConfig("_public_", i18nC.commentairePublic(), 30); |
accesColonne.setRenderer(accesRendu); |
return accesColonne; |
} |
|
public void actualiserEtatBoutonsBarreOutils() { |
// Activation des boutons si la grille contient un élément |
if (grille.getStore().getCount() > 0) { |
commentairesBoutonSupprimer.enable(); |
commentairesBoutonModifier.enable(); |
} |
// Désactivation des boutons si la grille ne contient plus d'élément |
if (grille.getStore().getCount() == 0) { |
commentairesBoutonSupprimer.disable(); |
commentairesBoutonModifier.disable(); |
} |
} |
|
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof ValeurListe) { |
ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees; |
rafraichirValeurListe(listeValeurs); |
} else if (nouvellesDonnees instanceof Information) { |
Information info = (Information) nouvellesDonnees; |
rafraichirInformation(info); |
} else if (nouvellesDonnees instanceof CommentaireListe) { |
CommentaireListe listeCommentaires = (CommentaireListe) nouvellesDonnees; |
rafraichirCommentairesListe(listeCommentaires); |
} else { |
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null); |
} |
|
if (chargementTypesOk && chargementCommentairesOk) { |
peupler(); |
initialiserChargement(); |
} |
} |
|
private void rafraichirValeurListe(ValeurListe listeValeurs) { |
if (listeValeurs.getId().equals(config.getListeId("typeCommentaireCollection"))) { |
Formulaire.rafraichirComboBox(listeValeurs, typeCombo); |
chargementTypesOk = true; |
} else { |
GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", 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 (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 personnes liées |
// En mode AJOUT, il ne peut que y avoir des personnes liées ajoutées |
mediateur.ajouterCollectionACommentaire(this, collectionId, commentairesAjoutees); |
} |
} else if (type.equals("commentaire_modifiee")) { |
if (info.getDonnee(0) != null) { |
Commentaire commentaire = (Commentaire) info.getDonnee(0); |
CollectionACommentaire commentaireDansGrille = grille.getStore().findModel("id_commentaire", commentaire.getId()); |
int index = grille.getStore().indexOf(commentaireDansGrille); |
grille.getStore().remove(commentaireDansGrille); |
String typeCommentaire = (String) commentaireDansGrille.get("_type_"); |
ajouterDansGrille(commentaire, typeCommentaire, index); |
} |
} else if (type.equals("commentaire_ajoutee")) { |
if (info.getDonnee(0) != null) { |
Commentaire commentaire = (Commentaire) info.getDonnee(0); |
ajouterDansGrille(commentaire); |
} |
} else if (info.getType().equals("modif_collection_a_commentaire")) { |
Info.display("Modification des notes liées à la collection", info.toString()); |
} else if (info.getType().equals("suppression_collection_a_commentaire")) { |
Info.display("Suppression des notes liées à la collection", info.toString()); |
} else if (info.getType().equals("ajout_collection_a_commentaire")) { |
Info.display("Ajout des notes liées à la collection", info.toString()); |
} else if (info.getType().equals("liste_collection_a_commentaire")) { |
if (info.getDonnee(0) != null) { |
initialiser(); |
collection.setCommentairesLiees((CollectionACommentaireListe) info.getDonnee(0)); |
chargementCommentairesOk = true; |
} |
} |
} |
|
private void rafraichirCommentairesListe(CommentaireListe listeCommentaires) { |
commentairesSaisisComboBox.getStore().removeAll(); |
commentairesSaisisComboBox.getStore().add(listeCommentaires.toList()); |
commentairesSaisisComboBox.expand(); |
} |
|
public void peupler() { |
grille.getStore().removeAll(); |
grille.getStore().add(collection.getCommentairesLiees().toList()); |
layout(); |
Info.display(i18nC.chargementCommentaire(), i18nC.ok()); |
} |
|
public void collecter() { |
if (etreAccede()) { |
int nbreCommentaire = grille.getStore().getCount(); |
for (int i = 0; i < nbreCommentaire; i++) { |
CollectionACommentaire relationCollectionACommentaire = grille.getStore().getAt(i); |
if (relationCollectionACommentaire.get("_etat_") != null) { |
if (relationCollectionACommentaire.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 |
commentairesSupprimees.put("id"+idGenere++, relationCollectionACommentaire); |
Debug.log("AVANT:"+relationCollectionACommentaire.getType()); |
|
CollectionACommentaire relationAAjouter = (CollectionACommentaire) relationCollectionACommentaire.cloner(new CollectionACommentaire()); |
corrigerChampsGrille(relationAAjouter);// Nous modifions l'id_type |
Debug.log("APRES:"+relationAAjouter.getType()); |
commentairesAjoutees.put("id"+idGenere++, relationAAjouter); |
Debug.log("Commentaires modifiés : "+relationAAjouter.getCommentaire().getTitre()); |
} |
if (relationCollectionACommentaire.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) { |
corrigerChampsGrille(relationCollectionACommentaire);// Nous modifions l'id_type |
commentairesAjoutees.put("id"+idGenere++, relationCollectionACommentaire); |
Debug.log("Commentaires ajoutés : "+relationCollectionACommentaire.getCommentaire().getTitre()); |
} |
// Initialisation de la grille |
relationCollectionACommentaire.set("_etat_", ""); |
} |
} |
grille.getStore().commitChanges(); |
} |
} |
|
private void corrigerChampsGrille(CollectionACommentaire relationCollectionACommentaire) { |
String type = relationCollectionACommentaire.get("_type_"); |
String champModele = "nom"; |
if (type.matches("[0-9]+")) { |
champModele = "id_valeur"; |
} |
if (typeCombo.getStore().findModel(champModele, type) != null) { |
String idType = typeCombo.getStore().findModel(champModele, type).getId(); |
relationCollectionACommentaire.setType(idType); |
} |
} |
|
public void soumettre() { |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
if (commentairesAjoutees.size() == 0 && commentairesSupprimees.size() == 0) { |
Info.display("Modification des commentaires liées", "Rien n'a été enregistré car le formulaire n'a pas été modifié."); |
} else { |
// Ajout des relations CollectionAPersonne |
if (commentairesAjoutees.size() != 0) { |
mediateur.ajouterCollectionACommentaire(this, collection.getId(), commentairesAjoutees); |
} |
// Suppression des relations StructureAPersonne |
if (commentairesSupprimees.size() != 0) { |
mediateur.supprimerCollectionACommentaire(this, commentairesSupprimees); |
Debug.log("Nbre commentaires supprimées :"+commentairesSupprimees.size()); |
} |
} |
} |
} |
|
private void obtenirCommentairesSaisis(String titre) { |
mediateur.selectionnerCommentaireParTitre(this, titre+"%"); |
} |
|
private void actualiserGrille() { |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
mediateur.selectionnerCollectionACommentaire(this, collection.getId()); |
} else { |
grille.getStore().removeAll(); |
layout(); |
} |
} |
} |