/trunk/src/org/tela_botanica/client/Mediateur.java |
---|
17,6 → 17,9 |
import org.tela_botanica.client.modeles.Utilisateur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.modeles.collection.Collection; |
import org.tela_botanica.client.modeles.collection.CollectionACommentaire; |
import org.tela_botanica.client.modeles.collection.CollectionACommentaireAsyncDao; |
import org.tela_botanica.client.modeles.collection.CollectionACommentaireListe; |
import org.tela_botanica.client.modeles.collection.CollectionAPersonne; |
import org.tela_botanica.client.modeles.collection.CollectionAPersonneListe; |
import org.tela_botanica.client.modeles.collection.CollectionAPublication; |
50,6 → 53,7 |
import org.tela_botanica.client.vues.collection.CollectionForm; |
import org.tela_botanica.client.vues.collection.CollectionListeVue; |
import org.tela_botanica.client.vues.collection.CollectionVue; |
import org.tela_botanica.client.vues.commentaire.CommentaireForm; |
import org.tela_botanica.client.vues.commentaire.CommentaireVue; |
import org.tela_botanica.client.vues.personne.PersonneForm; |
import org.tela_botanica.client.vues.personne.PersonneVue; |
257,11 → 261,15 |
fenetreIdentification.show(); |
} |
public void ouvrirApplis(String id) { |
public void ouvrirUrlExterne(String id) { |
if (id.equals(ComposantId.MENU_CEL)) { |
Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Carnet en ligne", ""); |
Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getUrl("cel"), "Carnet en ligne", ""); |
} else if (id.equals(ComposantId.MENU_BEL)) { |
Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Biblio en ligne", ""); |
Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getUrl("cel"), "Biblio en ligne", ""); |
} else if (id.equals(ComposantId.MENU_BOGUE)) { |
Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getUrl("bogue"), "Bogue", ""); |
} else if (id.equals(ComposantId.MENU_COMMENTAIRE)) { |
Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getUrl("commentaire"), "Commentaire", ""); |
} |
} |
809,6 → 817,38 |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION de la relation COLLECTION A COMMENTAIRE |
public void selectionnerCollectionACommentaire(Rafraichissable vueARafraichir, String commentaireId) { |
modele.selectionnerCollectionACommentaire(vueARafraichir, commentaireId); |
} |
public void ajouterCollectionACommentaire(Rafraichissable vueARafraichir, String commentaireId, CollectionACommentaireListe commentairesAjoutees) { |
if (commentairesAjoutees != null && commentairesAjoutees.size() > 0) { |
for (Iterator<String> it = commentairesAjoutees.keySet().iterator(); it.hasNext();) { |
modele.ajouterCollectionACommentaire(vueARafraichir, commentaireId, (CollectionACommentaire) commentairesAjoutees.get(it.next())); |
} |
} |
} |
public void modifierCollectionACommentaire(Rafraichissable vueARafraichir, CollectionACommentaireListe commentairesModifiees) { |
if (commentairesModifiees != null && commentairesModifiees.size() > 0) { |
for (Iterator<String> it = commentairesModifiees.keySet().iterator(); it.hasNext();) { |
modele.modifierCollectionACommentaire(vueARafraichir, (CollectionACommentaire) commentairesModifiees.get(it.next())); |
} |
} |
} |
public void supprimerCollectionACommentaire(Rafraichissable vueARafraichir, CollectionACommentaireListe commentairesSupprimees) { |
if (commentairesSupprimees != null && commentairesSupprimees.size() > 0) { |
String idCollectionACommentaireSeparesParVirgule = "" ; |
for (Iterator<String> it = commentairesSupprimees.keySet().iterator(); it.hasNext();) { |
idCollectionACommentaireSeparesParVirgule += commentairesSupprimees.get(it.next()).getId(); |
if (it.hasNext()) { |
idCollectionACommentaireSeparesParVirgule += ","; |
} |
} |
modele.supprimerCollectionACommentaire(vueARafraichir, idCollectionACommentaireSeparesParVirgule, CollectionACommentaireAsyncDao.SUPPRESSION_PAR_COLLECTION); |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PERSONNES |
//+----------------------------------------------------------------------------------------------------------------+ |
1077,7 → 1117,7 |
public void afficherFormCommentaire(String commentaireId) { |
panneauCentre.removeAll(); |
PublicationForm commentaireForm = new PublicationForm(this, commentaireId); |
CommentaireForm commentaireForm = new CommentaireForm(this, commentaireId); |
panneauCentre.add(commentaireForm); |
panneauCentre.layout(); |
1152,7 → 1192,7 |
} |
} |
modele.supprimerCommentaire(vueARafraichir, idCommentaireSeparesParVirgule); |
//modele.supprimerCollectionACommentaire(vueARafraichir, idCommentaireSeparesParVirgule); |
modele.supprimerCollectionACommentaire(vueARafraichir, idCommentaireSeparesParVirgule, CollectionACommentaireAsyncDao.SUPPRESSION_PAR_COMMENTAIRE); |
} |
} |
/trunk/src/org/tela_botanica/client/i18n/Constantes.java |
---|
55,6 → 55,9 |
String PORT1(); |
String PORT2(); |
// Navigation |
String titreNavigation(); |
// Menu |
String titreMenu(); |
String txtListeProjetDefaut(); |
438,7 → 441,10 |
String publicationTitreFormAjout(); |
String publicationTitreFormModif(); |
String publicationTitreSuppression(); |
String publicationAuteursTitre(); |
String publicationAuteurSingulier(); |
String publicationAuteurs(); |
String publicationAuteurBoutonAjouter(); |
String publicationTitre(); |
String publicationRevueCollection(); |
String publicationEditeur(); |
449,6 → 455,8 |
// +---------------------------------------------------------------------------------------------------------------+ |
// Commentaire |
String commentaireTitreFormAjout(); |
String commentaireTitreFormModif(); |
String commentaireSingulier(); |
String commentairePluriel(); |
String commentaireCollection(); |
458,4 → 466,5 |
String commentairePonderation(); |
String commentaireTexte(); |
String commentairePublic(); |
String commentaireMessageTitre(); |
} |
/trunk/src/org/tela_botanica/client/i18n/Constantes.properties |
---|
38,6 → 38,7 |
<li>à chaque réutilisation ou distribution, doit apparaître clairement les conditions contractuelles de mise à disposition de cette création.</li>\ |
<li>chacune de ces conditions peut être levée s'il y a autorisation du titulaire des droits.</li>\ |
</ul> |
# Boutons |
ajouter = Ajouter |
modifier = Modifier |
63,6 → 64,9 |
PORT2 = Tél. Portable |
PORT1 = Tél. Portable |
# Navigation |
titreNavigation = Navigation |
# Menus |
titreMenu = Menu |
txtListeProjetDefaut = Choisissez un projet... |
258,7 → 262,7 |
formeInventaireCollectionDetail = Forme de l'inventaire |
infoInventaireCollectionDetail = Informations disponibles |
digitalInventaireCollectionDetail = Logiciel utilisé |
pourcentDigitalInventaireCollectionDetail = % de la documentation en base de données |
pourcentDigitalInventaireCollectionDetail = % en base de données |
etatInventaireCollectionDetail = État inventaire |
typeDonneeInventaireCollectionDetail = Éléments inventoriés |
403,7 → 407,7 |
formeInventaireCollection = Si oui, quelle(s) forme(s) prend l'inventaire ? |
infoInventaireCollection = Quelles informations retrouve-t-on ? |
digitalInventaireCollection = Si l'inventaire est informatisé, quel logiciel utilisez vous ? |
pourcentDigitalInventaireCollection = % de la documentation en base de données |
pourcentDigitalInventaireCollection = % de l'inventaire en base de données |
etatInventaireCollection = Est-t-il complet ou partiel ? |
typeDonneeInventaireCollection = Quels sont les éléments qui ont déjà été inventoriés ? |
typeDonneeInventaireCollectionInfo = Exemples : Familles, localités... |
449,7 → 453,10 |
publicationTitreFormAjout = Ajout d'une publication |
publicationTitreFormModif = Modification d'une publication |
publicationTitreSuppression = Suppression de publication(s) |
publicationAuteurs = Auteur(s) |
publicationAuteursTitre = Auteur(s) |
publicationAuteurSingulier = Auteur |
publicationAuteurs = Auteurs |
publicationAuteurBoutonAjouter = Ajouter un auteur |
publicationTitre = Titre |
publicationRevueCollection = Nom de la revue / collection |
publicationEditeur = Éditeur |
460,6 → 467,8 |
# +---------------------------------------------------------------------------------------------------------------+ |
# Commentaire |
commentaireTitreFormAjout = Ajout d'un commentaire |
commentaireTitreFormModif = Modification d'un commentaire |
commentaireSingulier = note |
commentairePluriel = notes |
commentaireTitreSuppression = Suppression de commentaire(s) |
468,4 → 477,5 |
commentaireType = Type |
commentairePonderation = Poids |
commentaireTexte = Texte |
commentairePublic = Accès |
commentairePublic = Accès |
commentaireMessageTitre = Veuillez saisir un titre pour le commentaire ! |
/trunk/src/org/tela_botanica/client/ComposantId.java |
---|
20,4 → 20,7 |
public static final String PANNEAU_PUBLICATION_LISTE = "coel-id_panneau-liste-publication"; |
public static final String PANNEAU_PERSONNE_LISTES = "coel-id_panneau-liste-personne"; |
public static final String PANNEAU_PROJET_LISTE = "coel-id_panneau-liste-projet"; |
public static final String BTN_FEEDBACK = "coel-id-menu-feedback"; |
public static final String MENU_BOGUE = "coel-id-menu-bogue"; |
public static final String MENU_COMMENTAIRE = "coel-id-menu-commentaire"; |
} |
/trunk/src/org/tela_botanica/client/vues/publication/PublicationForm.java |
---|
114,9 → 114,9 |
} |
private String genererTitreFormulaire() { |
String titre = "Ajout d'une publication"; |
String titre = i18nC.publicationTitreFormAjout(); |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
titre = "Modification d'une publication - "+i18nC.id()+": "+publication.getId(); |
titre = i18nC.publicationTitreFormModif()+" - "+i18nC.id()+": "+publication.getId(); |
} |
return titre; |
} |
127,7 → 127,7 |
// Fieldset Auteur |
auteursFieldset = new FieldSet(); |
auteursFieldset.setHeading("Auteur(s)"); |
auteursFieldset.setHeading(i18nC.publicationAuteursTitre()); |
auteursFieldset.setCollapsible(true); |
auteursFieldset.setLayout(layout); |
143,7 → 143,7 |
conteneurChamps = new LayoutContainer(); |
Button ajouterAuteurBouton = new Button("Ajouter un auteur"); |
Button ajouterAuteurBouton = new Button(i18nC.publicationAuteurBoutonAjouter()); |
ajouterAuteurBouton.setIcon(Images.ICONES.ajouter()); |
ajouterAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
@Override |
167,13 → 167,11 |
final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis(); |
if (auteur != null) { |
GWT.log("Auteur peuplé : "+auteur.getId(), null); |
auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId())); |
auteursSaisisComboBox.validate(); |
} |
auteurComboboxListe.add(auteursSaisisComboBox); |
auteursSaisisComboBox.setFieldLabel("Auteur "+auteurComboboxListe.size()); |
GWT.log("Nbre de combobox auteur dans liste : "+auteurComboboxListe.size(), null); |
auteursSaisisComboBox.setFieldLabel(i18nC.publicationAuteurSingulier()+" "+auteurComboboxListe.size()); |
LayoutContainer panneauChampTxtEtBouton = new LayoutContainer(); |
panneauChampTxtEtBouton.setLayout(new FormLayout()); |
191,7 → 189,7 |
int numeroAuteurs = 1; |
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) { |
it.next().setFieldLabel("Auteur "+numeroAuteurs); |
it.next().setFieldLabel(i18nC.publicationAuteurSingulier()+" "+numeroAuteurs); |
numeroAuteurs++; |
} |
315,12 → 313,10 |
} |
private void miseAJourPublicationAPersonneListe() { |
GWT.log("Mise à jour liste publication à personne", null); |
Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator(); |
while (clesAjoutees.hasNext()) { |
String id = clesAjoutees.next(); |
publicationAPersonneListe.put(id, auteursAjoutes.get(id)); |
GWT.log("Auteurs ajouté :"+publicationAPersonneListe.get(id).getPersonne().getNomComplet(), null); |
} |
Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator(); |
327,9 → 323,7 |
while (clesSupprimees.hasNext()) { |
String id = clesSupprimees.next(); |
publicationAPersonneListe.remove(id); |
GWT.log("Personne surpprimé :"+id, null); |
} |
GWT.log("Nbre auteurs après maj :"+publicationAPersonneListe.size(), null); |
} |
private void rafraichirPublication(Publication publi) { |
394,7 → 388,6 |
private void afficherAuteurs() { |
Iterator<String> itap = publicationAPersonneListe.keySet().iterator(); |
GWT.log("Auteur"+publicationAPersonneListe.size(), null); |
while (itap.hasNext()) { |
creerChampAuteurEtBoutonSupprimer(publicationAPersonneListe.get(itap.next()).getPersonne()); |
} |
415,7 → 408,7 |
private Boolean etreValide() { |
Boolean valide = false; |
GWT.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null); |
//Debug.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null); |
if (formulaireValideOk && publicationValideOk && auteursValideOk) { |
valide = true; |
} |
450,7 → 443,6 |
public boolean soumettreFormulaire() { |
formulaireValideOk = verifierFormulaire(); |
GWT.log("Form?"+formulaireValideOk, null); |
if (formulaireValideOk) { |
soumettrePublication(); |
soumettreAuteurs(); |
461,7 → 453,6 |
private void soumettrePublication() { |
Publication publicationCollectee = collecterPublication(); |
if (publicationCollectee != null) { |
GWT.log("Info public collectée ? ok", null); |
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
mediateur.ajouterPublication(this, publicationCollectee); |
} else if (mode.equals(Formulaire.MODE_MODIFIER)) { |
476,17 → 467,14 |
PersonneListe personnesInitiales = new PersonneListe(); |
if (publicationAPersonneListe != null) { |
GWT.log("Nbre auteur initial :"+publicationAPersonneListe.size(), null); |
Iterator<String> itap = publicationAPersonneListe.keySet().iterator(); |
while (itap.hasNext()) { |
Personne personne = publicationAPersonneListe.get(itap.next()).getPersonne(); |
GWT.log("Auteur initial :"+personne.getNomComplet(), null); |
personnesInitiales.put(personne.getId(), personne); |
} |
} |
PersonneListe personnesActuelles = new PersonneListe(); |
GWT.log("Nbre auteur actuel :"+auteurComboboxListe.size(), null); |
for (int i = 0; i < auteurComboboxListe.size(); i++) { |
if (auteurComboboxListe.get(i).getValue() != null) { |
Personne personne = auteurComboboxListe.get(i).getValue(); |
500,7 → 488,6 |
String idActuel = clesActuelles.next(); |
if (personnesInitiales.size() == 0 || personnesInitiales.get(idActuel) == null) { |
Personne personne = personnesActuelles.get(idActuel); |
GWT.log("Auteur ajouté :"+personne.getNomComplet(), null); |
PublicationAPersonne publicationAAuteur = new PublicationAPersonne(); |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
publicationAAuteur.setIdPublication(publication.getId()); |
519,7 → 506,6 |
String idInitial = clesInitiales.next(); |
if (personnesActuelles.size() == 0 || personnesActuelles.get(idInitial) == null) { |
Personne personne = personnesInitiales.get(idInitial); |
GWT.log("Auteur supprimé :"+personne.getNomComplet(), null); |
PublicationAPersonne publicationAAuteur = new PublicationAPersonne(); |
publicationAAuteur.setIdPublication(publication.getId()); |
publicationAAuteur.setPersonne(personne); |
623,7 → 609,6 |
} |
} |
} |
GWT.log("Auteurs formaté :"+auteurIntituleFormate, null); |
publicationCollectee.setAuteur(auteurIntituleFormate); |
String titre = titreChp.getValue(); |
/trunk/src/org/tela_botanica/client/vues/EnteteVue.java |
---|
98,7 → 98,43 |
aideBouton.setId(ComposantId.BTN_AIDE); |
aideBouton.setIcon(Images.ICONES.aide()); |
barreBoutons.add(aideBouton); |
SplitButton feedbackBouton = new SplitButton("Retour d'experience"); |
feedbackBouton.setId(ComposantId.BTN_FEEDBACK); |
feedbackBouton.addSelectionListener(boutonEcouteur); |
Menu menuFeedback = new Menu(); |
MenuItem menuBogue = new MenuItem("Bogues et fonctionnalités"); |
menuBogue.addSelectionListener(new SelectionListener<MenuEvent>() { |
@Override |
public void componentSelected(MenuEvent mEvent) { |
Menu me = (Menu) mEvent.getComponent(); |
MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BOGUE); |
Info.display(Mediateur.i18nC.chargement(), "Ouverture du lien externe «{0}» en cours...", mi.getText()); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_BOGUE); |
} |
}); |
menuBogue.setId(ComposantId.MENU_BOGUE); |
menuBogue.setIcon(Images.ICONES.bogue()); |
menuFeedback.add(menuBogue); |
MenuItem menuCommentaire = new MenuItem("Commentaires"); |
menuCommentaire.addSelectionListener(new SelectionListener<MenuEvent>() { |
@Override |
public void componentSelected(MenuEvent mEvent) { |
Menu me = (Menu) mEvent.getComponent(); |
MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_COMMENTAIRE); |
Info.display(Mediateur.i18nC.chargement(), "Ouverture du lien externe «{0}» en cours...", mi.getText()); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_COMMENTAIRE); |
} |
}); |
menuCommentaire.setId(ComposantId.MENU_COMMENTAIRE); |
menuCommentaire.setIcon(Images.ICONES.commentaire()); |
menuFeedback.add(menuCommentaire); |
feedbackBouton.setMenu(menuFeedback); |
feedbackBouton.setIcon(Images.ICONES.flecheDedansDehors()); |
barreBoutons.add(feedbackBouton); |
SplitButton applisBouton = new SplitButton("Changez d'application..."); |
applisBouton.setId(ComposantId.BTN_APPLIS); |
applisBouton.addSelectionListener(boutonEcouteur); |
111,7 → 147,7 |
Menu me = (Menu) mEvent.getComponent(); |
MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_CEL); |
Info.display(Mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText()); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_CEL); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_CEL); |
} |
}); |
menuCel.setId(ComposantId.MENU_CEL); |
124,7 → 160,7 |
Menu me = (Menu) mEvent.getComponent(); |
MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BEL); |
Info.display(Mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText()); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_BEL); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_BEL); |
} |
}); |
menuBel.setId(ComposantId.MENU_BEL); |
135,8 → 171,8 |
applisBouton.setIcon(Images.ICONES.flecheBascule()); |
barreBoutons.add(applisBouton); |
add(titreConteneurHtml, new RowData(.3, 1)); |
add(barreBoutons, new RowData(.7, 1)); |
add(titreConteneurHtml, new RowData(.20, 1)); |
add(barreBoutons, new RowData(.8, 1)); |
} |
public void rafraichir(Object nouvellesDonnees) { |
/trunk/src/org/tela_botanica/client/vues/NavigationVue.java |
---|
4,12 → 4,12 |
import com.extjs.gxt.ui.client.util.Margins; |
import com.extjs.gxt.ui.client.util.Padding; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.layout.VBoxLayout; |
import com.extjs.gxt.ui.client.widget.layout.VBoxLayoutData; |
import com.extjs.gxt.ui.client.widget.layout.VBoxLayout.VBoxLayoutAlign; |
public class NavigationVue extends LayoutContainer{ |
public class NavigationVue extends ContentPanel { |
private Mediateur mediateur = null; |
private MenuVue menu = null; |
private FiltreVue filtre = null; |
19,6 → 19,7 |
VBoxLayout layout = new VBoxLayout(); |
layout.setPadding(new Padding(0)); |
layout.setVBoxLayoutAlign(VBoxLayoutAlign.STRETCH); |
setHeading(Mediateur.i18nC.titreNavigation()); |
setLayout(layout); |
menu = new MenuVue(mediateur); |
25,7 → 26,7 |
add(menu, new VBoxLayoutData(new Margins(0))); |
filtre = new FiltreVue(mediateur); |
add(filtre, new VBoxLayoutData(new Margins(5, 0, 0, 0))); |
add(filtre, new VBoxLayoutData(new Margins(0))); |
} |
public MenuVue getMenu() { |
/trunk/src/org/tela_botanica/client/vues/commentaire/CommentaireForm.java |
---|
1,312 → 1,106 |
package org.tela_botanica.client.vues.commentaire; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.images.Images; |
import org.tela_botanica.client.composants.ChampSliderPourcentage; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.MenuApplicationId; |
import org.tela_botanica.client.modeles.personne.Personne; |
import org.tela_botanica.client.modeles.personne.PersonneListe; |
import org.tela_botanica.client.modeles.publication.Publication; |
import org.tela_botanica.client.modeles.publication.PublicationAPersonne; |
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe; |
import org.tela_botanica.client.modeles.structure.Structure; |
import org.tela_botanica.client.modeles.structure.StructureListe; |
import org.tela_botanica.client.util.Pattern; |
import org.tela_botanica.client.modeles.commentaire.Commentaire; |
import org.tela_botanica.client.util.Debug; |
import org.tela_botanica.client.util.UtilArray; |
import org.tela_botanica.client.util.UtilString; |
import org.tela_botanica.client.vues.Formulaire; |
import com.extjs.gxt.ui.client.event.ButtonEvent; |
import com.extjs.gxt.ui.client.event.Events; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.widget.HorizontalPanel; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.form.ComboBox; |
import com.extjs.gxt.ui.client.widget.form.FieldSet; |
import com.extjs.gxt.ui.client.widget.form.CheckBox; |
import com.extjs.gxt.ui.client.widget.form.TextArea; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; |
import com.extjs.gxt.ui.client.widget.layout.FlowLayout; |
import com.extjs.gxt.ui.client.widget.layout.FormData; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.google.gwt.core.client.GWT; |
public class CommentaireForm extends Formulaire implements Rafraichissable { |
private Publication publication; |
private PublicationAPersonneListe publicationAPersonneListe = null; |
private static boolean publicationAPersonneListeChargementOk = false; |
private PublicationAPersonneListe auteursAjoutes = null; |
private PublicationAPersonneListe auteursSupprimes = null; |
private Commentaire commentaire; |
private TextField<String> titreChp; |
private TextArea texteChp; |
private ChampSliderPourcentage ponderationChp; |
private CheckBox publicChp; |
private FieldSet auteursFieldset = null; |
private ArrayList<ComboBox<Personne>> auteurComboboxListe = null; |
private LayoutContainer conteneurChamps; |
private ListStore<Personne> auteursStorePartage = null; |
private static boolean auteurStorePartageChargementOk = false; |
private FieldSet generalitesFieldset = null; |
private TextField<String> titreChp = null; |
private TextField<String> collectionChp = null; |
private TextField<String> uriChp = null; |
private FieldSet editionFieldset = null; |
private ComboBox<Structure> editeurCombobox = null; |
private TextField<String> datePublicationChp = null; |
private TextField<String> tomeChp = null; |
private TextField<String> fasciculeChp = null; |
private TextField<String> pagesChp = null; |
private String idStructureEdition = ""; |
private static boolean formulaireValideOk = false; |
private static boolean publicationValideOk = false; |
private static boolean auteursValideOk = false; |
private static boolean attenteAjoutAuteursOk = true; |
private static boolean attenteSuppressionAuteursOk = true; |
private static boolean commentaireValideOk = false; |
public CommentaireForm(Mediateur mediateurCourrant, String publicationId) { |
initialiserPublicationForm(mediateurCourrant, publicationId); |
public CommentaireForm(Mediateur mediateurCourrant, String commentaireId) { |
initialiserCommentaireForm(mediateurCourrant, commentaireId); |
} |
public CommentaireForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) { |
public CommentaireForm(Mediateur mediateurCourrant, String commentaireId, Rafraichissable vueARafraichirApresValidation) { |
vueExterneARafraichirApresValidation = vueARafraichirApresValidation; |
initialiserPublicationForm(mediateurCourrant, publicationId); |
initialiserCommentaireForm(mediateurCourrant, commentaireId); |
} |
private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) { |
publicationAPersonneListe = new PublicationAPersonneListe(); |
private void initialiserCommentaireForm(Mediateur mediateurCourrant, String commentaireId) { |
initialiserValidation(); |
initialiserAffichageAuteurs(); |
publication = new Publication(); |
publication.setId(publicationId); |
commentaire = new Commentaire(); |
commentaire.setId(commentaireId); |
String modeDeCreation = (UtilString.isEmpty(publication.getId()) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER); |
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION); |
String modeDeCreation = (UtilString.isEmpty(commentaire.getId()) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER); |
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.COMMENTAIRE); |
panneauFormulaire.setLayout(new FlowLayout()); |
panneauFormulaire.setLayout(new FormLayout()); |
String titre = genererTitreFormulaire(); |
panneauFormulaire.setHeading(titre); |
creerZoneAuteurs(); |
panneauFormulaire.add(auteursFieldset); |
creerZoneGeneralites(); |
panneauFormulaire.add(generalitesFieldset); |
creerZoneEdition(); |
panneauFormulaire.add(editionFieldset); |
creerChamps(); |
if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) { |
mediateurCourrant.selectionnerPublication(this, publicationId); |
mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR); |
mediateur.selectionnerCommentaire(this, commentaireId); |
} |
} |
private String genererTitreFormulaire() { |
String titre = "Ajout d'une publication"; |
String titre = i18nC.commentaireTitreFormAjout(); |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
titre = "Modification d'une publication - "+i18nC.id()+": "+publication.getId(); |
titre = i18nC.commentaireTitreFormModif()+" - "+i18nC.id()+": "+commentaire.getId(); |
} |
return titre; |
} |
private void creerZoneAuteurs() { |
FormLayout layout = new FormLayout(); |
layout.setLabelWidth(200); |
// Fieldset Auteur |
auteursFieldset = new FieldSet(); |
auteursFieldset.setHeading("Auteur(s)"); |
auteursFieldset.setCollapsible(true); |
auteursFieldset.setLayout(layout); |
auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0); |
auteursStorePartage = new ListStore<Personne>(); |
mediateur.clicObtenirListeAuteurs(this); |
creerChampsAuteur(); |
} |
private void creerChampsAuteur() { |
auteursFieldset.removeAll(); |
conteneurChamps = new LayoutContainer(); |
Button ajouterAuteurBouton = new Button("Ajouter un auteur"); |
ajouterAuteurBouton.setIcon(Images.ICONES.ajouter()); |
ajouterAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
@Override |
public void componentSelected(ButtonEvent be) { |
creerChampAuteurEtBoutonSupprimer(null); |
} |
}); |
auteursFieldset.add(conteneurChamps); |
auteursFieldset.add(ajouterAuteurBouton); |
auteursFieldset.layout(true); |
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
creerChampAuteurEtBoutonSupprimer(null); |
} |
} |
public void creerChampAuteurEtBoutonSupprimer(Personne auteur) { |
final HorizontalPanel panneauHorizontal = new HorizontalPanel(); |
panneauHorizontal.setLayout(new FormLayout()); |
final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis(); |
if (auteur != null) { |
GWT.log("Auteur peuplé : "+auteur.getId(), null); |
auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId())); |
auteursSaisisComboBox.validate(); |
} |
auteurComboboxListe.add(auteursSaisisComboBox); |
auteursSaisisComboBox.setFieldLabel("Auteur "+auteurComboboxListe.size()); |
GWT.log("Nbre de combobox auteur dans liste : "+auteurComboboxListe.size(), null); |
LayoutContainer panneauChampTxtEtBouton = new LayoutContainer(); |
panneauChampTxtEtBouton.setLayout(new FormLayout()); |
panneauChampTxtEtBouton.add(auteursSaisisComboBox, new FormData(300, 0)); |
panneauHorizontal.add(panneauChampTxtEtBouton); |
Button supprimerAuteurBouton = new Button(); |
supprimerAuteurBouton.setIcon(Images.ICONES.supprimer()); |
supprimerAuteurBouton.setToolTip(i18nC.supprimer()); |
supprimerAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
@Override |
public void componentSelected(ButtonEvent be) { |
auteurComboboxListe.remove(auteursSaisisComboBox); |
conteneurChamps.remove(panneauHorizontal); |
int numeroAuteurs = 1; |
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) { |
it.next().setFieldLabel("Auteur "+numeroAuteurs); |
numeroAuteurs++; |
} |
auteursFieldset.layout(true); |
} |
}); |
panneauHorizontal.add(supprimerAuteurBouton); |
conteneurChamps.add(panneauHorizontal); |
auteursFieldset.layout(true); |
} |
private ComboBox<Personne> creerComboBoxAuteursSaisis() { |
ComboBox<Personne> comboBox = new ComboBox<Personne>(); |
comboBox.setEmptyText(i18nC.chercherPersonneSaisi()); |
comboBox.setEditable(true); |
comboBox.setForceSelection(true); |
comboBox.setDisplayField("fmt_nom_complet"); |
comboBox.setTriggerAction(TriggerAction.ALL); |
comboBox.setStore(auteursStorePartage); |
comboBox.addStyleName(ComposantClass.OBLIGATOIRE); |
comboBox.addListener(Events.Valid, creerEcouteurChampObligatoire()); |
return comboBox; |
} |
private void creerZoneGeneralites() { |
FormLayout layout = new FormLayout(); |
layout.setLabelWidth(200); |
// Fieldset Infos Générales |
generalitesFieldset = new FieldSet(); |
generalitesFieldset.setHeading("Informations générales"); |
generalitesFieldset.setCollapsible(true); |
generalitesFieldset.setLayout(layout); |
private void creerChamps() { |
titreChp = new TextField<String>(); |
titreChp.setName("cpu"); |
titreChp.setFieldLabel("Titre de l'article ou de l'ouvrage"); |
titreChp.setFieldLabel(i18nC.commentaireTitre()); |
titreChp.addStyleName(ComposantClass.OBLIGATOIRE); |
titreChp.addListener(Events.Valid, creerEcouteurChampObligatoire()); |
generalitesFieldset.add(titreChp, new FormData(450, 0)); |
panneauFormulaire.add(titreChp, new FormData(450, 0)); |
collectionChp = new TextField<String>(); |
collectionChp.setFieldLabel("Intitulé de la revue ou de la collection"); |
generalitesFieldset.add(collectionChp, new FormData(450, 0)); |
texteChp = new TextArea(); |
texteChp.setFieldLabel(i18nC.commentaireTexte()); |
panneauFormulaire.add(texteChp, new FormData(450, 250)); |
uriChp = new TextField<String>(); |
uriChp.setFieldLabel("URL de la publication"); |
generalitesFieldset.add(uriChp, new FormData(450, 0)); |
ponderationChp = new ChampSliderPourcentage(i18nC.commentairePonderation()); |
panneauFormulaire.add(ponderationChp, new FormData(450, 0)); |
publicChp = new CheckBox(); |
publicChp.setFieldLabel(i18nC.donneePublic()); |
panneauFormulaire.add(publicChp, new FormData(50, 0)); |
} |
private void creerZoneEdition() { |
FormLayout layout = new FormLayout(); |
layout.setLabelWidth(200); |
// Fieldset Edition |
editionFieldset = new FieldSet(); |
editionFieldset.setHeading("Édition"); |
editionFieldset.setCollapsible(true); |
editionFieldset.setLayout(layout); |
ListStore<Structure> editeurStore = new ListStore<Structure>(); |
editeurCombobox = new ComboBox<Structure>(); |
editeurCombobox.setEmptyText("Sélectionner un éditeur..."); |
editeurCombobox.setFieldLabel("Éditeur de la publication"); |
editeurCombobox.setDisplayField("nom"); |
editeurCombobox.setStore(editeurStore); |
editeurCombobox.setEditable(true); |
editeurCombobox.setTriggerAction(TriggerAction.ALL); |
editionFieldset.add(editeurCombobox, new FormData(450, 0)); |
mediateur.clicObtenirListeEditeurs(this); |
datePublicationChp = new TextField<String>(); |
datePublicationChp.setMaxLength(4); |
datePublicationChp.setMinLength(4); |
datePublicationChp.setFieldLabel("Année de publication"); |
datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE); |
datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire()); |
editionFieldset.add(datePublicationChp, new FormData(40, 0)); |
tomeChp = new TextField<String>(); |
tomeChp.setFieldLabel("Série de la revue ou tome"); |
editionFieldset.add(tomeChp, new FormData(75, 0)); |
fasciculeChp = new TextField<String>(); |
fasciculeChp.setFieldLabel("Fascicule de la revue"); |
editionFieldset.add(fasciculeChp, new FormData(75, 0)); |
pagesChp = new TextField<String>(); |
pagesChp.setFieldLabel("Pages"); |
pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)"); |
editionFieldset.add(pagesChp, new FormData(100, 0)); |
} |
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof Publication) { |
if (nouvellesDonnees instanceof Commentaire) { |
// Si on a reçu les details d'une publication |
rafraichirPublication((Publication) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof StructureListe) { |
// Si on a reçu une liste des editeurs |
rafraichirListeEditeurs((StructureListe) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof PublicationAPersonneListe) { |
rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees); |
rafraichirCommentaire((Commentaire) nouvellesDonnees); |
} else if (nouvellesDonnees instanceof Information) { |
rafraichirInformation((Information) nouvellesDonnees); |
} else { |
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null); |
Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass())); |
} |
if (etrePretAAfficherAuteurs()) { |
initialiserAffichageAuteurs(); |
afficherAuteurs(); |
} |
if (etreValide()) { |
initialiserValidation(); |
repandreRafraichissement(); |
314,109 → 108,23 |
} |
} |
private void miseAJourPublicationAPersonneListe() { |
GWT.log("Mise à jour liste publication à personne", null); |
Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator(); |
while (clesAjoutees.hasNext()) { |
String id = clesAjoutees.next(); |
publicationAPersonneListe.put(id, auteursAjoutes.get(id)); |
GWT.log("Auteurs ajouté :"+publicationAPersonneListe.get(id).getPersonne().getNomComplet(), null); |
} |
Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator(); |
while (clesSupprimees.hasNext()) { |
String id = clesSupprimees.next(); |
publicationAPersonneListe.remove(id); |
GWT.log("Personne surpprimé :"+id, null); |
} |
GWT.log("Nbre auteurs après maj :"+publicationAPersonneListe.size(), null); |
} |
private void rafraichirPublication(Publication publi) { |
publication = publi; |
private void rafraichirCommentaire(Commentaire commentaireRecu) { |
commentaire = commentaireRecu; |
peuplerFormulaire(); |
} |
private void rafraichirListeEditeurs(StructureListe editeurs) { |
editeurCombobox.getStore().removeAll(); |
editeurCombobox.getStore().add((List<Structure>) editeurs.toList()); |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
editeurCombobox.setValue((Structure) editeurs.get(idStructureEdition)); |
} |
editeurCombobox.expand(); |
} |
private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) { |
publicationAPersonneListe = auteurs; |
publicationAPersonneListeChargementOk = true; |
} |
private void rafraichirInformation(Information info) { |
if (info.getType().equals("liste_personne")) { |
PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0); |
List<Personne> liste = listePersonneAuteur.toList(); |
auteursStorePartage.removeAll(); |
auteursStorePartage.add(liste); |
auteurStorePartageChargementOk = true; |
} else if (info.getType().equals("publication_valide")) { |
publicationValideOk = true; |
publication.setId((String) info.getDonnee(0)); |
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
attenteAjoutAuteursOk = true; |
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR); |
} |
} else if (info.getType().equals("ajout_publication_a_personne")) { |
attenteAjoutAuteursOk = false; |
GWT.log("attenteAjoutAuteursOk", null); |
} else if (info.getType().equals("suppression_publication_a_personne")) { |
attenteSuppressionAuteursOk = false; |
GWT.log("attenteSuppressionAuteursOk", null); |
String type = info.getType(); |
if (type.equals("ajout_commentaire") || type.equals("modif_commentaire")) { |
commentaireValideOk = true; |
commentaire.setId((String) info.getDonnee(0)); |
} |
if (avoirAuteursMiseAJourCorrectement()) { |
auteursValideOk = true; |
miseAJourPublicationAPersonneListe(); |
initialiserAuteurs(); |
} |
} |
private boolean avoirAuteursMiseAJourCorrectement() { |
boolean ok = false; |
if (attenteAjoutAuteursOk == false && attenteSuppressionAuteursOk == false) { |
ok = true; |
} |
return ok; |
} |
private void afficherAuteurs() { |
Iterator<String> itap = publicationAPersonneListe.keySet().iterator(); |
GWT.log("Auteur"+publicationAPersonneListe.size(), null); |
while (itap.hasNext()) { |
creerChampAuteurEtBoutonSupprimer(publicationAPersonneListe.get(itap.next()).getPersonne()); |
} |
} |
private void initialiserAffichageAuteurs() { |
auteurStorePartageChargementOk = false; |
publicationAPersonneListeChargementOk = false; |
} |
private boolean etrePretAAfficherAuteurs() { |
boolean ok = false; |
if (auteurStorePartageChargementOk && publicationAPersonneListeChargementOk) { |
ok = true; |
} |
return ok; |
} |
private Boolean etreValide() { |
Boolean valide = false; |
GWT.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null); |
if (formulaireValideOk && publicationValideOk && auteursValideOk) { |
Debug.log("formulaire"+formulaireValideOk+" - Commentaire :"+commentaireValideOk); |
if (formulaireValideOk && commentaireValideOk) { |
valide = true; |
} |
return valide; |
424,26 → 132,17 |
private void initialiserValidation() { |
formulaireValideOk = false; |
publicationValideOk = false; |
initialiserAuteurs(); |
auteursValideOk = false; |
commentaireValideOk = false; |
} |
private void initialiserAuteurs() { |
attenteAjoutAuteursOk = true; |
auteursAjoutes = new PublicationAPersonneListe(); |
attenteSuppressionAuteursOk = true; |
auteursSupprimes = new PublicationAPersonneListe(); |
} |
private void repandreRafraichissement() { |
if (vueExterneARafraichirApresValidation != null) { |
String type = "publication_modifiee"; |
String type = "commentaire_modifiee"; |
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
type = "publication_ajoutee"; |
type = "commentaire_ajoutee"; |
} |
Information info = new Information(type); |
info.setDonnee(0, publication); |
info.setDonnee(0, commentaire); |
vueExterneARafraichirApresValidation.rafraichir(info); |
} |
} |
450,142 → 149,38 |
public boolean soumettreFormulaire() { |
formulaireValideOk = verifierFormulaire(); |
GWT.log("Form?"+formulaireValideOk, null); |
Debug.log("Form?"+formulaireValideOk); |
if (formulaireValideOk) { |
soumettrePublication(); |
soumettreAuteurs(); |
soumettreCommentaire(); |
} |
return formulaireValideOk; |
} |
private void soumettrePublication() { |
Publication publicationCollectee = collecterPublication(); |
if (publicationCollectee != null) { |
GWT.log("Info public collectée ? ok", null); |
private void soumettreCommentaire() { |
Commentaire commentaireCollectee = collecterCommentaire(); |
if (commentaireCollectee != null) { |
Debug.log("Info public collectée ? ok"); |
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
mediateur.ajouterPublication(this, publicationCollectee); |
mediateur.ajouterCommentaire(this, commentaireCollectee); |
} else if (mode.equals(Formulaire.MODE_MODIFIER)) { |
mediateur.modifierPublication(this, publicationCollectee); |
mediateur.modifierCommentaire(this, commentaireCollectee); |
} |
} |
} |
private void soumettreAuteurs() { |
attenteAjoutAuteursOk = false; |
attenteSuppressionAuteursOk = false; |
PersonneListe personnesInitiales = new PersonneListe(); |
if (publicationAPersonneListe != null) { |
GWT.log("Nbre auteur initial :"+publicationAPersonneListe.size(), null); |
Iterator<String> itap = publicationAPersonneListe.keySet().iterator(); |
while (itap.hasNext()) { |
Personne personne = publicationAPersonneListe.get(itap.next()).getPersonne(); |
GWT.log("Auteur initial :"+personne.getNomComplet(), null); |
personnesInitiales.put(personne.getId(), personne); |
} |
} |
PersonneListe personnesActuelles = new PersonneListe(); |
GWT.log("Nbre auteur actuel :"+auteurComboboxListe.size(), null); |
for (int i = 0; i < auteurComboboxListe.size(); i++) { |
if (auteurComboboxListe.get(i).getValue() != null) { |
Personne personne = auteurComboboxListe.get(i).getValue(); |
personnesActuelles.put(personne.getId(), personne); |
} |
} |
// Auteurs ajoutés |
Iterator<String> clesActuelles = personnesActuelles.keySet().iterator(); |
while (clesActuelles.hasNext()) { |
String idActuel = clesActuelles.next(); |
if (personnesInitiales.size() == 0 || personnesInitiales.get(idActuel) == null) { |
Personne personne = personnesActuelles.get(idActuel); |
GWT.log("Auteur ajouté :"+personne.getNomComplet(), null); |
PublicationAPersonne publicationAAuteur = new PublicationAPersonne(); |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
publicationAAuteur.setIdPublication(publication.getId()); |
} |
publicationAAuteur.setPersonne(personne); |
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR); |
auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur); |
attenteAjoutAuteursOk = true; |
} |
} |
// Auteurs supprimés |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
Iterator<String> clesInitiales = personnesInitiales.keySet().iterator(); |
while (clesInitiales.hasNext()) { |
String idInitial = clesInitiales.next(); |
if (personnesActuelles.size() == 0 || personnesActuelles.get(idInitial) == null) { |
Personne personne = personnesInitiales.get(idInitial); |
GWT.log("Auteur supprimé :"+personne.getNomComplet(), null); |
PublicationAPersonne publicationAAuteur = new PublicationAPersonne(); |
publicationAAuteur.setIdPublication(publication.getId()); |
publicationAAuteur.setPersonne(personne); |
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR); |
auteursSupprimes.put(publicationAAuteur.getId(), publicationAAuteur); |
attenteSuppressionAuteursOk = true; |
} |
} |
} |
// Execution de les mise à jour pour le mode MODIFICATION |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
if (auteursAjoutes != null && auteursAjoutes.size() != 0) { |
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR); |
} |
if (auteursSupprimes != null && auteursSupprimes.size() != 0) { |
mediateur.supprimerPublicationAPersonne(this, auteursSupprimes); |
} |
} |
} |
public boolean verifierFormulaire() { |
boolean valide = true; |
ArrayList<String> messages = new ArrayList<String>(); |
boolean auteurErreur = true; |
for (int i = 0; i < auteurComboboxListe.size(); i++) { |
if (auteurComboboxListe.get(i).getValue() != null) { |
auteurErreur = false; |
break; |
} |
} |
if (auteurErreur) { |
messages.add("Veuillez saisir au moins un auteur !"); |
} |
String titre = titreChp.getValue(); |
if (titre == null || titre.equals("")) { |
messages.add("Veuillez saisir le titre de la publication !"); |
messages.add(i18nC.commentaireMessageTitre()); |
} |
String uri = uriChp.getValue(); |
if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) { |
messages.add("L'URL saisie n'est pas valide !"); |
} |
String datePublication = datePublicationChp.getRawValue(); |
if (datePublication == null || datePublication.equals("")) { |
messages.add("Veuillez saisir une année de parution !"); |
} else { |
if (!etreDateValide(datePublication)) { |
messages.add("Le format de l'année saisie est incorrect !"); |
} |
} |
String pages = pagesChp.getValue(); |
String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)"; |
if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) { |
messages.add("Le format des pages est incorrect !"); |
} |
if (messages.size() != 0) { |
String[] tableauDeMessages = {}; |
tableauDeMessages = messages.toArray(tableauDeMessages); |
MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null); |
MessageBox.alert(i18nC.erreurSaisieTitre(), UtilArray.implode(tableauDeMessages, "<br />"), null); |
valide = false; |
} |
return valide; |
592,102 → 187,40 |
} |
private void peuplerFormulaire() { |
creerChampsAuteur(); |
titreChp.setValue(publication.getTitre()); |
collectionChp.setValue(publication.getCollection()); |
uriChp.setValue(publication.getURI()); |
datePublicationChp.setRawValue(reduireDateParAnnee(publication.getDateParution())); |
tomeChp.setValue(publication.getIndicationNvt()); |
fasciculeChp.setValue(publication.getFascicule()); |
pagesChp.setValue(publication.getPages()); |
if (publication.getEditeur().matches("^[0-9]+$")) { |
editeurCombobox.setValue(editeurCombobox.getStore().findModel("id_structure", publication.getEditeur())); |
idStructureEdition = publication.getEditeur(); |
} else { |
editeurCombobox.setRawValue(publication.getEditeur()); |
} |
titreChp.setValue(commentaire.getTitre()); |
texteChp.setValue(commentaire.getTexte()); |
ponderationChp.peupler(commentaire.getPonderation()); |
boolean acces = (commentaire.etrePublic() ? true : false); |
publicChp.setValue(acces); |
} |
private Publication collecterPublication() { |
Publication publicationCollectee = (Publication) publication.cloner(new Publication()); |
private Commentaire collecterCommentaire() { |
Commentaire commentaireCollectee = (Commentaire) commentaire.cloner(new Commentaire()); |
String auteurIntituleFormate = ""; |
int auteursNombre = auteurComboboxListe.size(); |
for (int i = 0; i < auteursNombre; i++) { |
if (auteurComboboxListe.get(i).getValue() != null) { |
Personne auteur = auteurComboboxListe.get(i).getValue(); |
auteurIntituleFormate += auteur.getNom()+ " "+auteur.getPrenom(); |
if (i != (auteursNombre - 1)) { |
auteurIntituleFormate += ", "; |
} |
} |
} |
GWT.log("Auteurs formaté :"+auteurIntituleFormate, null); |
publicationCollectee.setAuteur(auteurIntituleFormate); |
String titre = titreChp.getValue(); |
publicationCollectee.setTitre(titre); |
commentaireCollectee.setTitre(titre); |
String collection = collectionChp.getValue(); |
publicationCollectee.setCollection(collection); |
String texte = texteChp.getValue(); |
commentaireCollectee.setTexte(texte); |
String nomComplet = titreChp.getValue()+" "+collectionChp.getValue(); |
publicationCollectee.setNomComplet(nomComplet); |
String ponderation = ponderationChp.getValeur(); |
commentaireCollectee.setPonderation(ponderation); |
String uri = uriChp.getValue(); |
publicationCollectee.setUri(uri); |
String acces = (publicChp.getValue() ? "1" : "0"); |
commentaireCollectee.setPublic(acces); |
String editeur = ""; |
if (editeurCombobox.getValue() != null) { |
editeur = editeurCombobox.getValue().getId(); |
publicationCollectee.setStructureEditeur(editeurCombobox.getValue()); |
} else if (editeurCombobox.getRawValue() != "") { |
editeur = editeurCombobox.getRawValue(); |
Commentaire commentaireARetourner = null; |
if (!commentaireCollectee.comparer(commentaire)) { |
commentaireARetourner = commentaire = commentaireCollectee; |
} |
publicationCollectee.setEditeur(editeur); |
String anneePublication = datePublicationChp.getRawValue(); |
String datePublication = anneePublication+"-00-00"; |
publicationCollectee.setDateParution(datePublication); |
String tome = tomeChp.getValue(); |
publicationCollectee.setIndicationNvt(tome); |
String fascicule = fasciculeChp.getValue(); |
publicationCollectee.setFascicule(fascicule); |
String pages = pagesChp.getValue(); |
publicationCollectee.setPages(pages); |
Publication publicationARetourner = null; |
if (!publicationCollectee.comparer(publication)) { |
publicationARetourner = publication = publicationCollectee; |
} |
return publicationARetourner; |
return commentaireARetourner; |
} |
public void reinitialiserFormulaire() { |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
mediateur.afficherFormPublication(publication.getId()); |
mediateur.afficherFormPublication(commentaire.getId()); |
} else { |
mediateur.afficherFormPublication(null); |
} |
} |
private boolean etreDateValide(String anneePublication) { |
boolean valide = true; |
if (!anneePublication.matches("^[0-2][0-9]{3}$")) { |
valide = false; |
} |
return valide; |
} |
private String reduireDateParAnnee(String datePar) { |
if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) { |
return datePar.split("-")[0]; |
} else { |
return ""; |
} |
} |
} |
/trunk/src/org/tela_botanica/client/Modele.java |
---|
9,6 → 9,8 |
import org.tela_botanica.client.modeles.UtilisateurAsyncDao; |
import org.tela_botanica.client.modeles.ValeurListeAsyncDao; |
import org.tela_botanica.client.modeles.collection.Collection; |
import org.tela_botanica.client.modeles.collection.CollectionACommentaire; |
import org.tela_botanica.client.modeles.collection.CollectionACommentaireAsyncDao; |
import org.tela_botanica.client.modeles.collection.CollectionAPersonne; |
import org.tela_botanica.client.modeles.collection.CollectionAPersonneAsyncDao; |
import org.tela_botanica.client.modeles.collection.CollectionAPublication; |
263,7 → 265,30 |
CollectionAPublicationAsyncDao collectionAPublicationDao = new CollectionAPublicationAsyncDao(vueARafraichir); |
collectionAPublicationDao.supprimer(collectionAPublicationId); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION de la relation COLLECTION A COMMENTAIRE |
public void selectionnerCollectionACommentaire(Rafraichissable vueARafraichir, String commentaireId) { |
CollectionACommentaireAsyncDao cacDao = new CollectionACommentaireAsyncDao(vueARafraichir); |
cacDao.selectionner(commentaireId); |
} |
public void modifierCollectionACommentaire(Rafraichissable vueARafraichir, CollectionACommentaire collectionACommentaire) { |
CollectionACommentaireAsyncDao cacDao = new CollectionACommentaireAsyncDao(vueARafraichir); |
cacDao.modifier(collectionACommentaire); |
} |
public void ajouterCollectionACommentaire(Rafraichissable vueARafraichir, String commentaireId, CollectionACommentaire collectionACommentaire) { |
CollectionACommentaireAsyncDao cacDao = new CollectionACommentaireAsyncDao(vueARafraichir); |
cacDao.ajouter(commentaireId, collectionACommentaire); |
} |
public void supprimerCollectionACommentaire(Rafraichissable vueARafraichir, String collectionACommentaireId, String mode) { |
CollectionACommentaireAsyncDao cacDao = new CollectionACommentaireAsyncDao(vueARafraichir); |
cacDao.supprimer(collectionACommentaireId, mode); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PERSONNES |
//+----------------------------------------------------------------------------------------------------------------+ |
/trunk/src/org/tela_botanica/client/images/icones/Icones.java |
---|
29,6 → 29,12 |
@Resource("appliquer.png") |
AbstractImagePrototype appliquer(); |
@Resource("bogue.png") |
AbstractImagePrototype bogue(); |
@Resource("commentaire.png") |
AbstractImagePrototype commentaire(); |
@Resource("connexion.png") |
AbstractImagePrototype connexion(); |
47,6 → 53,9 |
@Resource("fleche_bascule.png") |
AbstractImagePrototype flecheBascule(); |
@Resource("fleche_dedans_dehors.png") |
AbstractImagePrototype flecheDedansDehors(); |
@Resource("formulaire_ajouter.png") |
AbstractImagePrototype formAjouter(); |
/trunk/src/org/tela_botanica/client/images/icones/fleche_dedans_dehors.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
/trunk/src/org/tela_botanica/client/images/icones/fleche_dedans_dehors.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+image/png |
\ No newline at end of property |
/trunk/src/org/tela_botanica/client/configuration/Configuration.java |
---|
14,19 → 14,14 |
public class Configuration { |
/** |
* L'url de base du serveur jrest |
* Tableau associatif contenant les identifiants des listes |
*/ |
private String serviceBaseUrl; |
private LinkedHashMap<String, Integer> listesId = new LinkedHashMap<String, Integer>(); |
/** |
* L'url de base du Carnet en Ligne |
* Tableau associatif contenant les identifiants des urls externes |
*/ |
private String celUrl; |
/** |
* Tableau associatif contenant les identifiants des listes |
*/ |
private LinkedHashMap<String, Integer> listesId = new LinkedHashMap<String, Integer>(); |
private LinkedHashMap<String, String> urls = new LinkedHashMap<String, String>(); |
/** |
* Constructeur sans argument |
34,8 → 29,6 |
public Configuration() { |
// on utilise le dictionnaire d'internationalisation pour lire les variables du fichier javascript |
Dictionary configuration = Dictionary.getDictionary("configuration"); |
serviceBaseUrl = configuration.get("serviceBaseUrl"); |
celUrl = configuration.get("celUrl"); |
listesId.put("stpr", Integer.valueOf(configuration.get("listeStpr"))); |
listesId.put("stpu", Integer.valueOf(configuration.get("listeStpu"))); |
listesId.put("statut", Integer.valueOf(configuration.get("listeStatut"))); |
86,41 → 79,23 |
listesId.put("realisationBut", Integer.valueOf(configuration.get("listeRealisationBut"))); |
listesId.put("ion", Integer.valueOf(configuration.get("listeION"))); |
listesId.put("typeCommentaireCollection", Integer.valueOf(configuration.get("listeTypeCommentaireCollection"))); |
listesId.put("prefixe", Integer.valueOf(configuration.get("listePrefixes"))); |
listesId.put("suffixes", Integer.valueOf(configuration.get("listeSuffixes"))); |
listesId.put("sexe", Integer.valueOf(configuration.get("listeSexe"))); |
listesId.put("tel", Integer.valueOf(configuration.get("listeTel"))); |
listesId.put("region", Integer.valueOf(configuration.get("listeRegions"))); |
listesId.put("dureesIndexation", Integer.valueOf(configuration.get("listeDureesIndexation"))); |
listesId.put("frequencesIndexation", Integer.valueOf(configuration.get("listeFrequencesIndexation"))); |
listesId.put("langues", Integer.valueOf(configuration.get("listeLangues"))); |
listesId.put("nbElementsPage", Integer.valueOf(configuration.get("nbElementsPage"))); |
urls.put("base", configuration.get("serviceBaseUrl")); |
urls.put("cel", configuration.get("celUrl")); |
urls.put("bogue", configuration.get("bogueUrl")); |
urls.put("commentaire", configuration.get("commentaireUrl")); |
} |
/** |
* Accesseur pour l'url de base du serveur jrest |
* |
* @return une url de la forme http://emplacement_serveur/jrest |
*/ |
public String getServiceBaseUrl() { |
return serviceBaseUrl; |
} |
/** |
* Accesseur pour l'url de base du Carnet en Ligne |
* |
* @return une url de la forme http://emplacement_serveur/ |
*/ |
public String getCelUrl() { |
return celUrl; |
} |
/** |
* Accesseur pour l'id d'une liste |
* |
* @return l'identifiant de la liste ou null s'il n'est pas trouvé |
131,5 → 106,21 |
} |
return null; |
} |
/** |
* Accesseur pour l'url de base du serveur jrest |
* |
* @return une url de la forme http://emplacement_serveur/jrest |
*/ |
public String getServiceBaseUrl() { |
return getUrl("base"); |
} |
public String getUrl(String code) { |
if (urls.containsKey(code)) { |
return urls.get(code); |
} |
return null; |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/collection/CollectionACommentaireAsyncDao.java |
---|
New file |
0,0 → 1,126 |
package org.tela_botanica.client.modeles.collection; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.http.JsonRestRequestBuilder; |
import org.tela_botanica.client.http.JsonRestRequestCallback; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.util.Debug; |
import org.tela_botanica.client.util.UtilDAO; |
import com.extjs.gxt.ui.client.Registry; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.http.client.URL; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONValue; |
public class CollectionACommentaireAsyncDao { |
private static final String SERVICE_NOM = "CoelCollectionACommentaire"; |
public static final String SUPPRESSION_PAR_COLLECTION = "SuppressionParCollection"; |
public static final String SUPPRESSION_PAR_COMMENTAIRE = "SuppressionParCommentaire"; |
private String utilisateurId = null; |
private Rafraichissable vueARafraichir = null; |
public CollectionACommentaireAsyncDao(Rafraichissable vueARafraichirCourrante) { |
vueARafraichir = vueARafraichirCourrante; |
utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId(); |
} |
public void selectionner(final String collectionId) { |
String[] parametres = {collectionId}; |
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres); |
Debug.log(rb.getUrl()); |
rb.envoyerRequete(null, new JsonRestRequestCallback() { |
@Override |
public void surReponse(JSONValue responseValue) { |
Information info = new Information("liste_collection_a_commentaire"); |
if (responseValue != null) { |
// Si la requête est un succès, reception d'un tableau |
if (responseValue.isArray() != null) { |
final JSONArray reponse = responseValue.isArray(); |
// Transformation du tableau JSON réponse en ListCommentaier |
CollectionACommentaireListe commentaires = new CollectionACommentaireListe(reponse); |
info.setDonnee(0, commentaires); |
// et on met à jour le demandeur des données |
vueARafraichir.rafraichir(info); |
} else { |
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un talbeau JSON et vaut : "+responseValue.toString(), null); |
} |
} else { |
if (collectionId == null) { |
// Dans le cas, où nous demandons toutes les relations Collection à Commentaires et qu'il n'y en a pas, nous retournons un message d'information |
info.setMessage("Aucune relations entre la collection et les commentaires"); |
vueARafraichir.rafraichir(info); |
} |
} |
} |
}); |
} |
public void ajouter(String collectionId, CollectionACommentaire commentaires) { |
String postDonneesEncodees = construirePost(collectionId, commentaires); |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM); |
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() { |
@Override |
public void surReponse(JSONValue responseValue) { |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
Information info = new Information("ajout_collection_a_commentaire"); |
info.setMessage(responseValue.isString().stringValue()); |
vueARafraichir.rafraichir(info); |
} else { |
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} |
}); |
} |
public void modifier(CollectionACommentaire commentaires) { |
String[] parametres = {commentaires.getIdCollection(), commentaires.getIdCommentaire()}; |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres); |
String postDonneesEncodees = construirePost(commentaires.getIdCollection(), commentaires); |
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() { |
@Override |
public void surReponse(JSONValue responseValue) { |
Information info = new Information("modif_collection_a_commentaire"); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
info.setMessage(responseValue.isString().stringValue()); |
vueARafraichir.rafraichir(info); |
} else { |
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} |
}); |
} |
public void supprimer(String idCollectionACommentaire, String mode) { |
String[] parametres = {utilisateurId, idCollectionACommentaire, mode}; |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres); |
rb.envoyerRequeteSuppression(new JsonRestRequestCallback() { |
@Override |
public void surReponse(JSONValue responseValue) { |
if (responseValue.isString() != null) { |
Information info = new Information("suppression_collection_a_commentaire"); |
info.setMessage(responseValue.isString().stringValue()); |
vueARafraichir.rafraichir(info); |
} else { |
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} |
}); |
} |
private String construirePost(String collectionId, CollectionACommentaire commentaire) { |
String postDonnees = "cmhl_ce_modifier_par=" + URL.encodeComponent(utilisateurId) + |
"&ccac_id_collection=" + URL.encodeComponent(collectionId) + |
"&ccac_id_commentaire=" + URL.encodeComponent(commentaire.getIdCommentaire()) + |
"&ccac_truk_type=" + URL.encodeComponent(commentaire.getType()); |
return postDonnees; |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/commentaire/Commentaire.java |
---|
124,10 → 124,10 |
return (getPublic().equals("1") ? true : false); |
} |
public String getPublic() { |
return renvoyerValeurCorrecte("public"); |
return renvoyerValeurCorrecte("mark_public"); |
} |
public void setPublic(String publique) { |
this.set("public", publique); |
this.set("mark_public", publique); |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/UtilisateurAsyncDao.java |
---|
4,6 → 4,7 |
import org.tela_botanica.client.http.JsonRestRequestBuilder; |
import org.tela_botanica.client.http.JsonRestRequestCallback; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.util.Debug; |
import org.tela_botanica.client.util.UtilDAO; |
import com.extjs.gxt.ui.client.Registry; |
143,6 → 144,7 |
// Paramètres |
if (reponse.get(7).isString() != null) { |
Debug.log(((JSONString) reponse.get(7)).stringValue()); |
utilisateur.setParametre(((JSONString) reponse.get(7)).stringValue()); |
} |