1,12 → 1,16 |
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.ChampComboBoxMultiSelect; |
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.ProxyCollectionACommentaire; |
import org.tela_botanica.client.composants.pagination.ProxyCollectionAPersonne; |
import org.tela_botanica.client.composants.pagination.ProxyCommentaires; |
import org.tela_botanica.client.composants.pagination.ProxyPublications; |
import org.tela_botanica.client.images.Images; |
60,6 → 64,7 |
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.HeaderGroupConfig; |
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; |
74,7 → 79,7 |
|
private ContentPanel panneauPrincipal = null; |
private ToolBar barreOutils = null; |
private EditorGrid<CollectionACommentaire> grille; |
private GrillePaginable<ModelData> grille = null; |
private ChampComboBoxMultiSelect<Valeur> typeCombo = null; |
|
private CollectionACommentaireListe commentairesAjoutes = null; |
91,11 → 96,15 |
private Sequenceur sequenceur; |
|
public CollectionFormCommentaire(Formulaire formulaireCourrant) { |
|
initialiserOnglet(formulaireCourrant); |
setLayout(new FitLayout()); |
setId(ID); |
setText(Mediateur.i18nC.collectionCommentaire()); |
setStyleAttribute("padding", "0"); |
|
initialiser(); |
|
panneauPrincipal = creerPanneauContenantGrille(); |
barreOutils = creerBarreOutilsGrille(); |
panneauPrincipal.setTopComponent(barreOutils); |
104,8 → 113,6 |
|
mediateur.obtenirListeValeurEtRafraichir(this, "typeCommentaireCollection", null); |
add(panneauPrincipal); |
|
initialiser(); |
} |
|
private void initialiser() { |
112,9 → 119,6 |
// Remise à zéro des modification dans la liste des commentaires |
initialiserGestionCommentaires(); |
|
// Actualisation de l'état des boutons de la barre d'outils |
actualiserEtatBoutonsBarreOutils(); |
|
collection = ((CollectionForm) formulaire).collection; |
} |
|
189,7 → 193,7 |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
@Override |
public void componentSelected(ButtonEvent ce) { |
CollectionACommentaire commentaireSaisiSelectionne = grille.getSelectionModel().getSelectedItem(); |
ModelData commentaireSaisiSelectionne = grille.getGrille().getSelectionModel().getSelectedItem(); |
if (commentaireSaisiSelectionne == null) { |
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerCommentaire()); |
} else { |
204,8 → 208,9 |
private FenetreForm creerFenetreModaleAvecFormulaireCommentaire(String mode) { |
String commentaireId = null; |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
CollectionACommentaire commentaierSaisieSelectionnee = grille.getSelectionModel().getSelectedItem(); |
commentaireId = commentaierSaisieSelectionnee.getIdCommentaire(); |
ModelData commentaierSaisieSelectionnee = grille.getGrille().getSelectionModel().getSelectedItem(); |
CollectionACommentaire cac = new CollectionACommentaire(commentaierSaisieSelectionnee, false); |
commentaireId = cac.getIdCommentaire(); |
} |
|
final FenetreForm fenetre = new FenetreForm(""); |
259,11 → 264,12 |
bouton.setIcon(Images.ICONES.vcardSupprimer()); |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
CollectionACommentaire commentaireSaisiSelectionnee = grille.getSelectionModel().getSelectedItem(); |
ModelData commentaireSaisiSelectionnee = grille.getGrille().getSelectionModel().getSelectedItem(); |
CollectionACommentaire cac = new CollectionACommentaire(commentaireSaisiSelectionnee, false); |
if (commentaireSaisiSelectionnee == null) { |
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerCommentaire()); |
} else { |
supprimerDansGrille(commentaireSaisiSelectionnee); |
supprimerDansGrille(cac); |
} |
} |
}); |
349,10 → 355,10 |
corrigerChampsGrille(relationCollectionACommentaire); |
|
// Ajout à la grille |
grille.stopEditing(); |
grille.getStore().insert(relationCollectionACommentaire, index); |
grille.startEditing(index, 0); |
grille.getSelectionModel().select(index, false); |
grille.getGrille().stopEditing(); |
grille.getGrille().getStore().insert(relationCollectionACommentaire, index); |
grille.getGrille().startEditing(index, 0); |
grille.getGrille().getSelectionModel().select(index, false); |
} |
} |
|
370,31 → 376,34 |
} |
} |
|
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)) { |
ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE); |
} |
} |
}); |
private GrillePaginable<ModelData> creerGrille() { |
|
RowNumberer pluginLigneNumero = new RowNumberer(); |
GrillePaginable<ModelData> grillePaginable = null; |
|
// ModelType |
ModelType modelTypeCollectionACommentaire = new ModelType(); |
modelTypeCollectionACommentaire.setRoot("collectionsACommentaire"); |
modelTypeCollectionACommentaire.setTotalName("nbElements"); |
modelTypeCollectionACommentaire.addField("ccac_id_commentaire"); |
modelTypeCollectionACommentaire.addField("ccac_id_collection"); |
modelTypeCollectionACommentaire.addField("ccac_truk_type"); |
modelTypeCollectionACommentaire.addField("ccm_id_commentaire"); |
modelTypeCollectionACommentaire.addField("ccm_titre"); |
modelTypeCollectionACommentaire.addField("ccm_texte"); |
modelTypeCollectionACommentaire.addField("ccm_ponderation"); |
modelTypeCollectionACommentaire.addField("ccm_mark_public"); |
modelTypeCollectionACommentaire.addField("ccm_ce_pere"); |
modelTypeCollectionACommentaire.addField("ccm_ce_projet"); |
|
// Proxy |
ProxyCollectionACommentaire<ModelData> proxyCollectionACommentaire = new ProxyCollectionACommentaire<ModelData>(null, collection.getId()); |
|
// Colonnes |
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>(); |
colonnes.add(pluginLigneNumero); |
|
RowNumberer pluginLigneNumero = new RowNumberer(); |
colonnes.add(pluginLigneNumero); |
|
colonnes.add(creerColonneType()); |
colonnes.add(new ColumnConfig("_titre_", i18nC.commentaireTitre(), 150)); |
colonnes.add(new ColumnConfig("_texte_", i18nC.commentaireTexte(), 75)); |
401,20 → 410,38 |
colonnes.add(new ColumnConfig("_ponderation_", i18nC.commentairePonderation(), 35)); |
colonnes.add(creerColonneAcces()); |
|
GridSelectionModel<CollectionACommentaire> modeleDeSelection = new GridSelectionModel<CollectionACommentaire>(); |
// Modèle de colonnes |
ColumnModel modeleDeColonnes = new ColumnModel(colonnes); |
GridSelectionModel<ModelData> modeleDeSelection = new GridSelectionModel<ModelData>(); |
|
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); |
HashMap<String, String> virtualFields = new HashMap<String, String>(); |
virtualFields.put("_titre_", "ccm_titre"); |
virtualFields.put("_texte_", "ccm_texte"); |
virtualFields.put("_ponderation_", "ccm_ponderation"); |
virtualFields.put("_type_", "ccac_truk_type"); |
virtualFields.put("_public_", "ccm_mark_public"); |
virtualFields.put("_etat_", ""); |
|
return grille; |
// Grille |
grillePaginable = new GrillePaginable<ModelData>(modelTypeCollectionACommentaire, virtualFields, proxyCollectionACommentaire, colonnes, modeleDeColonnes); |
grillePaginable.getGrille().setBorders(true); |
grillePaginable.getGrille().setSelectionModel(modeleDeSelection); |
grillePaginable.getGrille().addPlugin(pluginLigneNumero); |
grillePaginable.getGrille().getView().setForceFit(true); |
grillePaginable.getGrille().setAutoExpandColumn("_titre_"); |
grillePaginable.getGrille().setStripeRows(true); |
grillePaginable.getGrille().setTrackMouseOver(true); |
|
// Rajouter des écouteurs |
grillePaginable.getStore().addListener(Store.Update, new Listener<StoreEvent<ModelData>>() { |
public void handleEvent(StoreEvent<ModelData> ce) { |
if (ce.getRecord().isModified("_type_") && ce.getModel().get("_etat_") == null || !ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) { |
ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE); |
} |
} |
}); |
|
return grillePaginable; |
} |
|
private ColumnConfig creerColonneType() { |
448,8 → 475,8 |
} |
}; |
|
GridCellRenderer<CollectionACommentaire> typeRendu = new GridCellRenderer<CollectionACommentaire>() { |
public String render(CollectionACommentaire model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<CollectionACommentaire> store, Grid<CollectionACommentaire> grid) { |
GridCellRenderer<ModelData> typeRendu = new GridCellRenderer<ModelData>() { |
public String render(ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) { |
String type = model.get("_type_"); |
if (typeCombo.getStore() != null && type != null && (type.matches("[0-9]+") || type.contains(aDonnee.SEPARATEUR_VALEURS))) { |
type = typeCombo.formaterIdentifiantsEnTexte(type); |
465,9 → 492,10 |
} |
|
private ColumnConfig creerColonneAcces() { |
GridCellRenderer<CollectionACommentaire> accesRendu = new GridCellRenderer<CollectionACommentaire>() { |
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()); |
GridCellRenderer<ModelData> accesRendu = new GridCellRenderer<ModelData>() { |
public String render(ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) { |
CollectionACommentaire cac = new CollectionACommentaire(model, true); |
String acces = (cac.getCommentaire().etrePublic() ? i18nC.donneePublic() : i18nC.donneePrivee()); |
model.set("_public_", acces); |
return acces; |
} |
545,7 → 573,7 |
} 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()); |
ModelData commentaireDansGrille = grille.getStore().findModel("ccm_id_commentaire", commentaire.getId()); |
int index = grille.getStore().indexOf(commentaireDansGrille); |
grille.getStore().remove(commentaireDansGrille); |
String typeCommentaire = (String) commentaireDansGrille.get("_type_"); |
580,15 → 608,16 |
if (etreAccede()) { |
int nbreCommentaire = grille.getStore().getCount(); |
for (int i = 0; i < nbreCommentaire; i++) { |
CollectionACommentaire relationCollectionACommentaire = grille.getStore().getAt(i); |
ModelData relationCollectionACommentaire = grille.getStore().getAt(i); |
CollectionACommentaire cac = new CollectionACommentaire(relationCollectionACommentaire, false); |
if (relationCollectionACommentaire.get("_etat_") != null) { |
if (relationCollectionACommentaire.get("_etat_").equals(aDonnee.ETAT_MODIFIE)) { |
corrigerChampsGrille(relationCollectionACommentaire);// Nous modifions l'id_type |
commentairesModifies.put("id"+idGenere++, relationCollectionACommentaire); |
corrigerChampsGrille(cac);// Nous modifions l'id_type |
commentairesModifies.put("id"+idGenere++, cac); |
} |
if (relationCollectionACommentaire.get("_etat_").equals(aDonnee.ETAT_AJOUTE)) { |
corrigerChampsGrille(relationCollectionACommentaire);// Nous modifions l'id_type |
commentairesAjoutes.put("id"+idGenere++, relationCollectionACommentaire); |
corrigerChampsGrille(cac);// Nous modifions l'id_type |
commentairesAjoutes.put("id"+idGenere++, cac); |
} |
// Initialisation de la grille |
relationCollectionACommentaire.set("_etat_", ""); |
601,6 → 630,7 |
private void corrigerChampsGrille(CollectionACommentaire relationCollectionACommentaire) { |
String type = relationCollectionACommentaire.get("_type_"); |
relationCollectionACommentaire.setType(typeCombo.formaterTexteEnIdentifiants(type)); |
relationCollectionACommentaire.setIdCollection(collection.getId()); |
} |
|
public void soumettre() { |
609,7 → 639,7 |
InfoLogger.display("Modification des notes liées", "Rien n'a été enregistré car le formulaire n'a pas été modifié."); |
} else { |
mediateur.ajouterCollectionACommentaire(this, collection.getId(), commentairesAjoutes); |
mediateur.modifierCollectionACommentaire(this, commentairesModifies); |
mediateur.modifierCollectionACommentaire(this, commentairesModifies); |
mediateur.supprimerCollectionACommentaire(this, commentairesSupprimes); |
} |
} |