Subversion Repositories eFlore/Applications.coel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 987 → Rev 989

/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());
}
/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";
}