Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 774 → Rev 775

/trunk/src/org/tela_botanica/client/Mediateur.java
425,6 → 425,10
modele.selectionnerStructure(vueARafraichir, getProjetId(), structureId);
}
public void selectionnerStructureParProjet(Rafraichissable vueARafraichir, String projetId) {
modele.selectionnerStructure(vueARafraichir, projetId, null);
}
public void ajouterStructure(Rafraichissable vueARafraichir, Structure structure, StructureConservation conservation, StructureValorisation valorisation) {
modele.ajouterStructure(vueARafraichir, structure, conservation, valorisation);
}
504,8 → 508,7
}
public void clicAjouterCollection() {
// TODO Auto-generated method stub
afficherFormCollection(null);
}
 
public void clicModifierCollection(List<Collection> selection) {
521,8 → 524,7
}
 
public void clicSupprimerCollection(CollectionListeVue collectionListeVue, List<Collection> collectionsASupprimer) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
}
 
public void selectionnerCollection(Rafraichissable vueARafraichir, String collectionId) {
529,6 → 531,10
modele.selectionnerCollection(vueARafraichir, getProjetId(), collectionId);
}
public void selectionnerCollectionParProjet(Rafraichissable vueARafraichir, String projetId) {
modele.selectionnerCollection(vueARafraichir, projetId, null);
}
public void ajouterCollection(Rafraichissable vueARafraichir, Collection collection) {
modele.ajouterCollection(vueARafraichir, getUtilisateurId(), collection);
}
569,7 → 575,7
}
public void clicModifierPersonne(Personne personne) {
if (personne!=null) {
if (personne != null) {
panneauCentre.removeAll();
PersonneForm formulairePersonneVue = new PersonneForm(PersonneForm.MODE_MODIFIER);
panneauCentre.add(formulairePersonneVue);
579,20 → 585,7
panneauCentre.layout();
}
}
 
public void selectionnerPersonne(Rafraichissable vue, Personne personne, String projetId) {
int nbElements = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
selectionnerPersonne(vue, personne, projetId, 0, nbElements);
}
public void selectionnerPersonne(Rafraichissable vue, Personne personne, String projetId, int start, int nbElements) {
String personneId = null;
if (personne!=null) {
personneId = personne.getId();
}
modele.selectionnerPersonne(vue, personneId, projetId, null, start, nbElements);
}
public void clicSupprimerPersonne(final Rafraichissable vue,final List<Personne> personneSelection) {
//Empecher suppression utilisateur
636,10 → 629,27
}
}
 
public void selectionnerPersonne(Rafraichissable vue, Personne personne, String projetId) {
int nbElements = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
selectionnerPersonne(vue, personne, projetId, 0, nbElements);
}
public void selectionnerPersonne(Rafraichissable vue, Personne personne, String projetId, int start, int nbElements) {
String personneId = null;
if (personne != null) {
personneId = personne.getId();
}
modele.selectionnerPersonne(vue, personneId, projetId, null, start, nbElements);
}
public void selectionnerPersonneParNomComplet(Rafraichissable vueARafraichir, String projetId, String nomComplet) {
modele.selectionnerPersonne(vueARafraichir, null, projetId, nomComplet, 0, -1);
}
public void selectionnerPersonneParProjet(Rafraichissable vueARafraichir, String projetId) {
modele.selectionnerPersonne(vueARafraichir, null, projetId, null, 0, -1);
}
public void enregistrerPersonne(Rafraichissable vue, Personne personne){
if (personne.getId() != null && !personne.getId().trim().equals("")) {
modele.modifierPersonne(vue, personne);
653,7 → 663,6
//+----------------------------------------------------------------------------------------------------------------+
 
public void afficherListePublication(PublicationListe nouvelleDonnees) {
if (!(panneauCentre.getContenu() instanceof PublicationVue)) {
panneauCentre.removeAll();
PublicationVue publicationVue = new PublicationVue(this) ;
667,42 → 676,43
panneauCentre.getContenu().rafraichir(nouvelleDonnees);
}
public void rechargerListePublication() {
if (!(panneauCentre.getContenu() instanceof PublicationVue)) {
panneauCentre.removeAll();
PublicationVue publicationVue = new PublicationVue(this) ;
panneauCentre.setId(ComposantId.PANNEAU_PUBLICATION_LISTE);
panneauCentre.add(publicationVue);
panneauCentre.layout(true);
}
masquerPopinChargement();
modele.selectionnerPublication(panneauCentre.getContenu(),null,null,null);
public void afficherFormPublication(String publicationId) {
String mode = Formulaire.MODE_AJOUTER;
if (publicationId != null) {
mode = Formulaire.MODE_MODIFIER;
}
panneauCentre.removeAll();
PublicationForm publicationForm = new PublicationForm(this, mode);
panneauCentre.add(publicationForm);
if (mode.equals(Formulaire.MODE_MODIFIER)) {
selectionnerPublication(publicationForm, publicationId);
selectionnerAuteurAPublication(publicationForm, publicationId);
}
panneauCentre.layout();
}
 
public void clicListePublication(Publication publication) {
if(publication != null) {
if (publication != null) {
panneauCentre.getContenu().rafraichir(publication);
}
}
 
public void clicAjouterPublication() {
panneauCentre.removeAll();
PublicationForm publicationForm = new PublicationForm();
panneauCentre.add(publicationForm);
panneauCentre.layout();
afficherFormPublication(null);
}
public void clicModifierPublication(List<Publication> publicationListe) {
if(publicationListe.size() <= 0) {
MessageBox.alert("Attention", "Vous devez sélectionner une publication", null);
public void clicModifierPublication(List<Publication> selection) {
if (selection.size() == 0) {
Info.display("Information", "Veuillez sélectionner une publication.");
} else if (selection.size() > 1) {
Info.display("Information", "Veuillez sélectionner une seule publication à la fois.");
} else if (selection.size() == 1) {
afficherFormPublication(selection.get(0).getId());
} else {
Publication pubAModifier = publicationListe.get(publicationListe.size() -1);
panneauCentre.removeAll();
PublicationForm publicationForm = new PublicationForm();
panneauCentre.add(publicationForm);
panneauCentre.setId(ComposantId.PANNEAU_FORM_PUBLICATION);
panneauCentre.layout();
publicationForm.rafraichir(pubAModifier);
Info.display("Erreur", "Une erreur est survenue dans la méthode clicModifierPublication() du Médiateur.");
}
}
711,7 → 721,7
MessageBox.alert("Attention", "Vous devez sélectionner une publication", null);
} else {
String message = "Voulez-vous vraiment supprimer ces publications ?";
if(publicationListe.size() == 1) {
if (publicationListe.size() == 1) {
message = "Voulez-vous vraiment supprimer cette publication ?";
}
747,12 → 757,11
}
 
public void clicObtenirListeEditeurs(Rafraichissable vueARafraichir) {
modele.selectionnerStructure(vueARafraichir, null, null);
selectionnerStructureParProjet(vueARafraichir, null);
}
 
public void clicObtenirListeAuteurs(Rafraichissable vueARafraichir) {
//modele.selectionnerPersonne(vueARafraichir, null, null, null);
selectionnerPersonne(vueARafraichir, null, null);
selectionnerPersonneParProjet(vueARafraichir, null);
}
//+----------------------------------------------------------------------------------------------------------------+
779,19 → 788,16
((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).hide();
}
 
public void ajouterAuteurPublication(Rafraichissable vueArafraichir,
String idAuteurs, String role, String idPublication) {
public void ajouterAuteurPublication(Rafraichissable vueArafraichir, String idAuteurs, String role, String idPublication) {
modele.ajouterAuteurPublication(vueArafraichir, idAuteurs, role, idPublication);
}
 
public void modifierAuteurPublication(Rafraichissable vueArafraichir,
String idAuteurs, String idPublication) {
public void modifierAuteurPublication(Rafraichissable vueArafraichir, String idAuteurs, String idPublication) {
modele.modifierAuteurPublication(vueArafraichir, idAuteurs, idPublication);
}
public void selectionnerAuteurAPublication(Rafraichissable vueARafraichir,
String idPublication) {
public void selectionnerAuteurAPublication(Rafraichissable vueARafraichir, String idPublication) {
modele.selectionPublicationAPersonne(vueARafraichir, null, idPublication, "2360");
}
 
/trunk/src/org/tela_botanica/client/Coel.java
15,7 → 15,7
mediateur = getMediateur();
// J'appelle directement la page où je travaille
mediateur.clicMenu(MenuApplicationId.STRUCTURE);
mediateur.clicMenu(MenuApplicationId.COLLECTION);
}
protected Mediateur getMediateur() {
/trunk/src/org/tela_botanica/client/vues/CollectionFormPublication.java
13,8 → 13,10
import org.tela_botanica.client.modeles.PublicationListe;
import org.tela_botanica.client.modeles.ValeurListe;
 
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
25,7 → 27,9
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.InfoConfig;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
51,6 → 55,7
private ComboBox<Publication> publicationsSaisiesComboBox = null;
private Button publicationsBoutonSupprimer = null;
private Button publicationsBoutonModifier = null;
private Button ajouterPublicationSaisieBouton = null;
private static final String ETAT_AJOUTE = "A";
private static final String ETAT_SUPPRIME = "S";
117,7 → 122,7
publicationsSaisiesComboBox = creerComboBoxPublicationsSaisis();
barreOutils.add(publicationsSaisiesComboBox);
Button ajouterPublicationSaisieBouton = creerBoutonAjouterPublicationSaisi();
ajouterPublicationSaisieBouton = creerBoutonAjouterPublicationSaisi();
barreOutils.add(ajouterPublicationSaisieBouton);
return barreOutils;
129,14 → 134,7
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
PublicationForm formulairePublication = new PublicationForm();
//formulairePersonne.setHeaderVisible(false);
//formulairePersonne.setTopComponent(null);
// TODO : gérer la barre d'outil avec des évènements spécifique au contexte de fenêtre modale
//formulairePersonne.setBottomComponent(null);
final FenetreForm fenetre = new FenetreForm(i18nC.publicationTitreFormAjout());
fenetre.add(formulairePublication);
final FenetreForm fenetre = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
fenetre.show();
}
});
154,15 → 152,7
if (publicationSaisieSelectionnee == null) {
Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
} else {
PublicationForm formulairePublication = new PublicationForm();
//formulairePublication.setHeaderVisible(false);
//formulairePublication.setTopComponent(null);
// TODO : gérer la barre d'outil avec des évènements spécifique au contexte de fenêtre modale
//formulairePersonne.setBottomComponent(null);
formulairePublication.rafraichir(publicationSaisieSelectionnee);
final FenetreForm fenetre = new FenetreForm(i18nC.publicationTitreFormModif());
fenetre.add(formulairePublication);
final FenetreForm fenetre = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
fenetre.show();
}
}
169,7 → 159,55
});
return bouton;
}
private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
final FenetreForm fenetre = new FenetreForm("");
final PublicationForm formulaire = creerFormulairePublication(fenetre, mode);
fenetre.add(formulaire);
return fenetre;
}
private PublicationForm creerFormulairePublication(final FenetreForm fenetre, final String mode) {
PublicationForm formulairePublication = new PublicationForm(mediateur, mode);
FormPanel panneauFormulaire = formulairePublication.getFormulaire();
fenetre.setHeading(panneauFormulaire.getHeading());
panneauFormulaire.setHeaderVisible(false);
panneauFormulaire.setTopComponent(null);
 
// TODO : gérer la barre d'outil avec des évènements spécifique au contexte de fenêtre modale
SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePublication(fenetre, formulairePublication);
final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
panneauFormulaire.setBottomComponent(barreValidation);
if (mode.equals(Formulaire.MODE_MODIFIER)) {
Publication publicationSaisiSelectionne = grille.getSelectionModel().getSelectedItem();
formulairePublication.rafraichir(publicationSaisiSelectionne);
}
return formulairePublication;
}
private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePublication(final FenetreForm fenetre, final PublicationForm formulaire) {
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
String code = ((Button) ce.getComponent()).getData("code");
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
formulaire.soumettreFormulaire();
fenetre.hide();
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
formulaire.soumettreFormulaire();
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
fenetre.hide();
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
formulaire.reinitialiserFormulaire();
}
}
};
return ecouteur;
}
 
private Button creerBoutonSupprimer() {
Button bouton = new Button(i18nC.supprimer());
bouton.setIcon(Images.ICONES.vcardSupprimer());
211,12 → 249,21
comboBox.setStore(publicationsSaisiesStore);
comboBox.addKeyListener(new KeyListener() {
public void componentKeyUp(ComponentEvent ce) {
ComboBox<Publication> comboBox = (ComboBox<Publication>) ce.getComponent();
if (!ce.isNavKeyPress() && comboBox.getRawValue() != null && comboBox.getRawValue().length() > 0) {
obtenirPublicationsSaisies(comboBox.getRawValue());
if (publicationsSaisiesComboBox.getRawValue() != null && publicationsSaisiesComboBox.getRawValue().length() > 0) {
if (!ce.isNavKeyPress()) {
obtenirPublicationsSaisies(publicationsSaisiesComboBox.getRawValue());
}
}
}
});
comboBox.addListener(Events.Select, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
if (publicationsSaisiesComboBox.getValue() instanceof Publication) {
ajouterPublicationSaisieBouton.fireEvent(Events.Select);
}
}
});
return comboBox;
}
227,6 → 274,7
public void componentSelected(ButtonEvent ce) {
Publication publicationSaisieSelectionne = publicationsSaisiesComboBox.getValue();
ajouterDansGrille(publicationSaisieSelectionne);
publicationsSaisiesComboBox.setValue(null);
}
});
return bouton;
/trunk/src/org/tela_botanica/client/vues/CollectionFormGeneral.java
123,7 → 123,7
structuresCombo.setTriggerAction(TriggerAction.ALL);
structuresCombo.setStore(structuresStore);
liaisonFieldSet.add(structuresCombo, new FormData(450, 0));
mediateur.selectionnerStructure(this, null);
mediateur.selectionnerStructureParProjet(this, null);
collectionsStore = new ListStore<Collection>();
collectionsCombo = new ComboBox<Collection>();
150,7 → 150,7
collectionsCombo.setTriggerAction(TriggerAction.ALL);
collectionsCombo.setStore(collectionsStore);
liaisonFieldSet.add(collectionsCombo, new FormData(450, 0));
mediateur.selectionnerCollection(this, null);
mediateur.selectionnerCollectionParProjet(this, null);
this.add(liaisonFieldSet);
}
/trunk/src/org/tela_botanica/client/vues/CollectionForm.java
74,6 → 74,7
private HashMap<String,ComboBox<Valeur>> champsCbv = new HashMap<String,ComboBox<Valeur>>();
private HashMap<String,ListStore<Valeur>> champsLsv = new HashMap<String,ListStore<Valeur>>();
private TabPanel onglets = null;
private TabItem generalOnglet = null;
private TabItem auteurOnglet = null;
private TabItem publicationOnglet = null;
84,39 → 85,42
public CollectionForm(Mediateur mediateurCourrant, String modeDeCreation) {
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.COLLECTION);
// Création des onglets
onglets = creerOnglets();
// Ajout des onglets au formulaire général
panneauFormulaire.add(onglets);
}
protected void creerOnglets() {
onglets = new TabPanel();
protected TabPanel creerOnglets() {
TabPanel ongletsCollection = new TabPanel();
// NOTE : pour faire apparaître les scrollBar il faut définir la hauteur du panneau d'onglets à 100% (autoHeight ne semble pas fonctionner)
onglets.setHeight("100%");
ongletsCollection.setHeight("100%");
// Onlget formulaire GENERAL
onglets.add(creerOngletGeneral());
ongletsCollection.add(creerOngletGeneral());
// Onlget formulaire AUTEUR
onglets.add(creerOngletAuteur());
ongletsCollection.add(creerOngletAuteur());
// Onlget formulaire PUBLICATION
onglets.add(creerOngletPublication());
ongletsCollection.add(creerOngletPublication());
// Onlget formulaire DESCRIPTION
onglets.add(creerOngletDescription());
ongletsCollection.add(creerOngletDescription());
// Onlget formulaire CONTENU
onglets.add(creerOngletContenu());
ongletsCollection.add(creerOngletContenu());
// Onlget formulaire DOCUMENT
onglets.add(creerOngletDocument());
ongletsCollection.add(creerOngletDocument());
// Onlget formulaire INVENTAIRE
onglets.add(creerOngletInventaire());
ongletsCollection.add(creerOngletInventaire());
// Sélection de l'onglet par défaut
onglets.setSelection(auteurOnglet);
ongletsCollection.setSelection(auteurOnglet);
// Ajout des onglets au formulaire général
panneauFormulaire.add(onglets);
return ongletsCollection;
}
private TabItem creerOngletGeneral() {
225,23 → 229,20
}
 
@Override
protected SelectionListener<ButtonEvent> creerEcouteurBoutonFormulaire(final String code) {
protected SelectionListener<ButtonEvent> creerEcouteurValidation() {
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
if (code.equals(Formulaire.CODE_BOUTON_VALIDER)) {
String code = ((Button) ce.getComponent()).getData("code");
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
soumettreFormulaire();
clicBoutonvalidation = true;
} else if (code.equals(Formulaire.CODE_BOUTON_APPLIQUER)) {
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
soumettreFormulaire();
} else if (code.equals(Formulaire.CODE_BOUTON_ANNULER)) {
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
mediateur.clicMenu(menuIdCourant);
} else if (code.equals(Formulaire.CODE_BOUTON_REINITIALISER)) {
if (mode.equals(StructureForm.MODE_MODIFIER)) {
mediateur.afficherFormCollection(collection.getId());
} else {
mediateur.afficherFormCollection(null);
}
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
reinitialiserFormulaire();
}
}
};
267,6 → 268,14
}
}
protected void reinitialiserFormulaire() {
if (mode.equals(StructureForm.MODE_MODIFIER)) {
mediateur.afficherFormCollection(collection.getId());
} else {
mediateur.afficherFormCollection(null);
}
}
private Collection collecterCollection() {
collectionCollectee = (Collection) collection.cloner(new Collection());
288,10 → 297,4
private Boolean verifierFormulaire() {
return true;
}
 
@Override
protected void afficherChampSupplementaire(Radio radioBtn) {
// TODO Auto-generated method stub
}
}
/trunk/src/org/tela_botanica/client/vues/StructureForm.java
87,6 → 87,7
private static int decompteRafraichissementPersonnel = 0;
private TabPanel onglets = null;
private TabItem identificationOnglet = null;
private TabItem personnelOnglet = null;
private TabItem conservationOnglet = null;
206,44 → 207,50
 
public StructureForm(Mediateur mediateurCourrant, String modeDeCreation) {
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.STRUCTURE);
// Ajout du titre
panneauFormulaire.setHeading(i18nC.titreAjoutFormStructurePanneau());
// Création des onglets
onglets = creerOnglets();
// Ajout des onglets au formulaire général
panneauFormulaire.add(onglets);
}
protected void creerOnglets() {
onglets = new TabPanel();
protected TabPanel creerOnglets() {
TabPanel ongletsStructure = new TabPanel();
// NOTE : pour faire apparaître les scrollBar il faut définir la hauteur du panneau d'onglets à 100% (autoHeight ne semble pas fonctionner)
onglets.setHeight("100%");
ongletsStructure.setHeight("100%");
// Onlget formulaire IDENTIFICATION
onglets.add(creerOngletIdentification());
ongletsStructure.add(creerOngletIdentification());
// Onlget formulaire PERSONNEL
onglets.add(creerOngletPersonnel());
ongletsStructure.add(creerOngletPersonnel());
// Onlget formulaire CONSERVATION
onglets.add(creerOngletConservation());
ongletsStructure.add(creerOngletConservation());
// Onlget formulaire VALORISATION
onglets.add(creerOngletValorisation());
ongletsStructure.add(creerOngletValorisation());
// Sélection de l'onglet par défaut
//onglets.setSelection(personnelOnglet);
//ongletsStructure(personnelOnglet);
// Ajout des onglets au formulaire général
panneauFormulaire.add(onglets);
return ongletsStructure;
}
protected SelectionListener<ButtonEvent> creerEcouteurBoutonFormulaire(final String code) {
protected SelectionListener<ButtonEvent> creerEcouteurValidation() {
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
if (code.equals(Formulaire.CODE_BOUTON_VALIDER)) {
String code = ((Button) ce.getComponent()).getData("code");
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
soumettreFormulaire();
clicBoutonvalidation = true;
} else if (code.equals(Formulaire.CODE_BOUTON_APPLIQUER)) {
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
soumettreFormulaire();
} else if (code.equals(Formulaire.CODE_BOUTON_ANNULER)) {
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
mediateur.clicMenu(menuIdCourant);
} else if (code.equals(Formulaire.CODE_BOUTON_REINITIALISER)) {
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
if (mode.equals(StructureForm.MODE_MODIFIER)) {
mediateur.afficherFormStructure(identification.getId());
} else {
255,7 → 262,7
return ecouteur;
}
 
protected void soumettreFormulaire() {
// Vérification de la validité des champs du formulaire
if (verifierFormulaire()) {
/trunk/src/org/tela_botanica/client/vues/FormulaireBarreValidation.java
New file
0,0 → 1,75
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.images.Images;
 
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
 
public class FormulaireBarreValidation extends ButtonBar {
private SelectionListener<ButtonEvent> ecouteur = null;
public static final String CODE_BOUTON_VALIDER = "VA";
public static final String CODE_BOUTON_APPLIQUER = "AP";
public static final String CODE_BOUTON_ANNULER = "AN";
public static final String CODE_BOUTON_REINITIALISER = "RE";
public FormulaireBarreValidation(SelectionListener<ButtonEvent> ecouteurCourrant) {
ecouteur = ecouteurCourrant;
creerBarreOutilsValidation();
}
private void creerBarreOutilsValidation() {
this.setAlignment(HorizontalAlignment.LEFT);
this.add(creerBouton(CODE_BOUTON_REINITIALISER));
this.add(new FillToolItem());
this.add(creerBouton(CODE_BOUTON_APPLIQUER));
this.add(creerBouton(CODE_BOUTON_ANNULER));
this.add(creerBouton(CODE_BOUTON_VALIDER));
}
private Button creerBouton(final String code) {
String nom = getNom(code);
Button bouton = new Button(nom);
bouton.setData("code", code);
bouton.setIcon(getIcone(code));
bouton.addSelectionListener(ecouteur);
return bouton;
}
private AbstractImagePrototype getIcone(final String code) {
AbstractImagePrototype icone = null;
if (code.equals(CODE_BOUTON_VALIDER)) {
icone = Images.ICONES.valider();
} else if (code.equals(CODE_BOUTON_APPLIQUER)) {
icone = Images.ICONES.appliquer();
} else if (code.equals(CODE_BOUTON_ANNULER)) {
icone = Images.ICONES.annuler();
} else if (code.equals(CODE_BOUTON_REINITIALISER)) {
icone = Images.ICONES.reinitialiser();
}
return icone;
}
private String getNom(final String code) {
String nom = null;
if (code.equals(CODE_BOUTON_VALIDER)) {
nom = Mediateur.i18nC.valider();
} else if (code.equals(CODE_BOUTON_APPLIQUER)) {
nom = Mediateur.i18nC.appliquer();
} else if (code.equals(CODE_BOUTON_ANNULER)) {
nom = Mediateur.i18nC.annuler();
} else if (code.equals(CODE_BOUTON_REINITIALISER)) {
nom = Mediateur.i18nC.reinitialiser();
}
return nom;
}
}
/trunk/src/org/tela_botanica/client/vues/PublicationForm.java
9,6 → 9,7
import org.tela_botanica.client.RegistreId;
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;
import org.tela_botanica.client.modeles.PersonneListe;
import org.tela_botanica.client.modeles.Publication;
22,7 → 23,9
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
34,6 → 37,7
import com.extjs.gxt.ui.client.widget.form.DateField;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.Radio;
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.FitLayout;
45,26 → 49,24
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
 
public class PublicationForm extends LayoutContainer implements Rafraichissable {
 
private Mediateur mediateur = null;
public class PublicationForm extends Formulaire implements Rafraichissable {
FormPanel panel = null;
private Publication publi;
private PublicationAPersonneListe pubAPersonneListeAuteur = null;
private String idStructureEdition = "";
private String idPublication = "";
private String idProjet = "";
private PersonneListe listePersonneAuteur = null;
private PublicationAPersonneListe pubAPersonneListeAuteur = null;
private ListStore<Personne> storeAuteurs = null;
private ArrayList<ComboBox<Personne>> listeAuteurs = null;
private String idAuteurs = "";
private FieldSet auteursFieldset = null;
private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
private PersonneListe listePersonneAuteur = null;
private LayoutContainer conteneurChamps;
private ListStore<Personne> auteursStorePartage = null;
private FieldSet generalitesFieldset = null;
private TextField<String> nomArticle = null;
private TextField<String> intituleCollPub = null;
private TextField<String> uriPub = null;
private FieldSet editionFieldset = null;
private ComboBox<Structure> comboListeEditeurs = null;
private ListStore<Structure> storeEditeurs = null;
private TextField<String> datePub = null;
71,76 → 73,150
private TextField<String> tomPub = null;
private TextField<String> fasciculePub = null;
private TextField<String> pagesPub = null;
private String mode = "AJOUT";
private String idStructureEdition = "";
private String idPublication = "";
private String idProjet = "";
private String idAuteurs = "";
private boolean formValide = false;
private boolean validationPublication = false;
private boolean validationAuteurs = false;
FieldSet fieldSetAuteurs = null;
 
private Publication publi;
 
protected boolean listeAuteurInitialisee = false;
protected boolean listeAuteurPublicationInitialisee = false;
 
private LayoutContainer conteneurChamps;
public PublicationForm(Mediateur mediateurCourrant, String modeDeCreation) {
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
panneauFormulaire.setLayout(new FlowLayout());
String titre = (modeDeCreation.equals(Formulaire.MODE_AJOUTER) ? "Ajout d'une publication" : "Modification d'une publication");
panneauFormulaire.setHeading(titre);
 
private Button annulerBtn;
 
private Button validerBtn;
 
public PublicationForm() {
 
setId("x-form-pub");
setLayout(new FitLayout());
mediateur = Registry.get(RegistreId.MEDIATEUR);
creerZoneAuteurs();
panneauFormulaire.add(auteursFieldset);
storeAuteurs = new ListStore<Personne>();
listePersonneAuteur = new PersonneListe();
creerZoneGeneralites();
panneauFormulaire.add(generalitesFieldset);
// Création de la disposition : FIELDSET
FormLayout layoutFieldset = new FormLayout();
layoutFieldset.setLabelWidth(200);
//layoutFieldset.setPadding(4);
creerZoneEdition();
panneauFormulaire.add(editionFieldset);
mediateur.clicObtenirListeEditeurs(this);
mediateur.clicObtenirListeAuteurs(this);
}
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>();
genererChampsAuteur(false);
}
private void genererChampsAuteur(boolean vider) {
auteursFieldset.removeAll();
conteneurChamps = new LayoutContainer();
Button ajoutAuteurBtn = new Button("Ajouter un auteur");
ajoutAuteurBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
 
//+-----------------------------------------------------------------------------------------------------------+
// Création du panneau Formulaire
panel = new FormPanel();
panel.setFrame(true);
panel.setIconStyle("icone-form-ajouter");
panel.setCollapsible(false);
panel.setHeading("Ajout d'une publication");
panel.setButtonAlign(HorizontalAlignment.CENTER);
panel.setLayout(new FlowLayout());
@Override
public void componentSelected(ButtonEvent be) {
creerTextFieldEtBouton(null);
int nbAuteurs = 0;
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
if (auteurComboboxListe.size() > 1) {
it.next().setFieldLabel("Auteur "+nbAuteurs);
nbAuteurs++;
}
}
auteursFieldset.layout(true);
}
});
add(panel);
auteursFieldset.add(conteneurChamps);
auteursFieldset.add(ajoutAuteurBtn);
auteursFieldset.layout(true);
// Fieldset Auteur
fieldSetAuteurs = new FieldSet();
fieldSetAuteurs.setHeading("Auteur(s)");
fieldSetAuteurs.setCollapsible(true);
fieldSetAuteurs.setLayout(layoutFieldset);
if (!vider) {
creerTextFieldEtBouton(null);
}
}
public void creerTextFieldEtBouton(Personne auteur) {
final HorizontalPanel panneauHorizontal = new HorizontalPanel();
panneauHorizontal.setLayout(new FormLayout());
listeAuteurs = new ArrayList<ComboBox<Personne>>(0);
final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis();
if (auteur != null) {
GWT.log(auteur.getId(), null);
auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId()));
}
auteurComboboxListe.add(auteursSaisisComboBox);
panel.add(fieldSetAuteurs);
LayoutContainer lc = new LayoutContainer();
lc.setLayout(new FormLayout());
lc.add(auteursSaisisComboBox);
genererChampsAuteur(false);
Button supp = new Button("-");
supp.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
int nbAuteurs = 0;
if (auteurComboboxListe.size() != 1) {
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
it.next().setFieldLabel("Auteur "+nbAuteurs);
nbAuteurs++;
}
}
auteurComboboxListe.remove(auteursSaisisComboBox);
conteneurChamps.remove(panneauHorizontal);
auteursFieldset.layout(true);
}
});
panneauHorizontal.add(lc);
panneauHorizontal.add(supp);
conteneurChamps.add(panneauHorizontal);
auteursFieldset.layout(true);
}
private ComboBox<Personne> creerComboBoxAuteursSaisis() {
ComboBox<Personne> comboBox = new ComboBox<Personne>();
comboBox.setSize(200, 20);
comboBox.setEmptyText(i18nC.chercherAuteurSaisi());
comboBox.setEditable(true);
comboBox.setForceSelection(true);
comboBox.setDisplayField("fmt_nom_complet");
comboBox.setTriggerAction(TriggerAction.ALL);
comboBox.setStore(auteursStorePartage);
 
return comboBox;
}
private void creerZoneGeneralites() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(200);
// Création de la disposition : FIELDSET
FormLayout layoutFieldset2 = new FormLayout();
layoutFieldset.setLabelWidth(200);
//layoutFieldset.setPadding(4);
// Fieldset Infos Générales
FieldSet fieldSetInfosGen = new FieldSet();
fieldSetInfosGen.setHeading("Informations générales");
fieldSetInfosGen.setCollapsible(true);
fieldSetInfosGen.setLayout(layoutFieldset2);
generalitesFieldset = new FieldSet();
generalitesFieldset.setHeading("Informations générales");
generalitesFieldset.setCollapsible(true);
generalitesFieldset.setLayout(layout);
panel.add(fieldSetInfosGen);
nomArticle = new TextField<String>();
nomArticle.setName("cpu");
nomArticle.setFieldLabel("Titre de l'article ou de l'ouvrage");
151,22 → 227,21
uriPub = new TextField<String>();
uriPub.setFieldLabel("URI de la publication");
fieldSetInfosGen.add(nomArticle);
fieldSetInfosGen.add(intituleCollPub);
fieldSetInfosGen.add(uriPub);
// Création de la disposition : FIELDSET
FormLayout layoutFieldset3 = new FormLayout();
//layoutFieldset.setPadding(4);
generalitesFieldset.add(nomArticle);
generalitesFieldset.add(intituleCollPub);
generalitesFieldset.add(uriPub);
}
private void creerZoneEdition() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(200);
 
// Fieldset Edition
FieldSet fieldSetEdition = new FieldSet();
fieldSetEdition.setHeading("Edition");
fieldSetEdition.setCollapsible(true);
fieldSetEdition.setLayout(layoutFieldset3);
editionFieldset = new FieldSet();
editionFieldset.setHeading("Edition");
editionFieldset.setCollapsible(true);
editionFieldset.setLayout(layout);
panel.add(fieldSetEdition);
storeEditeurs = new ListStore<Structure>();
comboListeEditeurs = new ComboBox<Structure>();
comboListeEditeurs.setEmptyText("Sélectionner un editeur...");
176,62 → 251,33
comboListeEditeurs.setEditable(true);
comboListeEditeurs.setTypeAhead(true);
comboListeEditeurs.setTriggerAction(TriggerAction.QUERY);
editionFieldset.add(comboListeEditeurs, new FormData(500, 20));
datePub = new TextField<String>();
datePub.setMaxLength(4);
datePub.setMinLength(4);
datePub.setFieldLabel("Année de publication");
editionFieldset.add(datePub, new FormData(40, 20));
tomPub = new TextField<String>();
tomPub.setFieldLabel("Tome");
editionFieldset.add(tomPub, new FormData(75, 20));
fasciculePub = new TextField<String>();
fasciculePub.setFieldLabel("Fascicule");
editionFieldset.add(fasciculePub, new FormData(75, 20));
pagesPub = new TextField<String>();
pagesPub.setFieldLabel("Pages");
fieldSetEdition.add(comboListeEditeurs, new FormData(500, 20));
fieldSetEdition.add(datePub, new FormData(40, 20));
fieldSetEdition.add(tomPub, new FormData(75, 20));
fieldSetEdition.add(fasciculePub, new FormData(75, 20));
fieldSetEdition.add(pagesPub, new FormData(100, 20));
// Ajout des boutons au panneau formulaire
annulerBtn = new Button("Annuler");
annulerBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
mediateur.clicMenu("Publications");
}
});
panel.addButton(annulerBtn);
validerBtn = new Button("Valider");
validerBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
soumettreFormulaire();
}
});
panel.addButton(validerBtn);
mediateur.clicObtenirListeEditeurs(this);
mediateur.clicObtenirListeAuteurs(this);
editionFieldset.add(pagesPub, new FormData(100, 20));
}
 
public void rafraichir(Object nouvellesDonnees) {
// Si on a reçu les details d'une publication
if (nouvellesDonnees instanceof Publication) {
mode = "MODIF" ;
publi = (Publication) nouvellesDonnees;
genererChampsAuteur(true);
publi = (Publication) nouvellesDonnees;
mediateur.selectionnerAuteurAPublication(this,publi.getId());
mediateur.clicObtenirListeAuteurs(this);
nomArticle.setValue(publi.getTitre());
intituleCollPub.setValue(publi.getCollection());
uriPub.setValue(publi.getURI());
239,38 → 285,35
tomPub.setValue(publi.getIndicationNvt());
fasciculePub.setValue(publi.getFascicule());
pagesPub.setValue(publi.getPages());
idPublication = publi.getId();
idStructureEdition = publi.getEditeur();
idProjet = publi.getProjet() ;
panel.setHeading("Modification d'une publication");
}
// Si on a reçu une liste des editeurs
if(nouvellesDonnees instanceof StructureListe) {
if (nouvellesDonnees instanceof StructureListe) {
storeEditeurs.removeAll();
StructureListe listeStructure = (StructureListe) nouvellesDonnees;
storeEditeurs.add((List<Structure>) listeStructure.toList());
if (mode.equals("MODIF")) {
if (mode.equals(Formulaire.MODE_MODIFIER)) {
comboListeEditeurs.setValue((Structure) listeStructure.get(idStructureEdition));
}
comboListeEditeurs.expand();
}
if(nouvellesDonnees instanceof PublicationAPersonneListe) {
pubAPersonneListeAuteur = (PublicationAPersonneListe)nouvellesDonnees;
if (nouvellesDonnees instanceof PublicationAPersonneListe) {
pubAPersonneListeAuteur = (PublicationAPersonneListe) nouvellesDonnees;
if(listeAuteurInitialisee) {
if (listeAuteurInitialisee) {
Iterator<String> itap = pubAPersonneListeAuteur.keySet().iterator();
for(;itap.hasNext();){
creerTextFieldEtBouton(pubAPersonneListeAuteur.get(itap.next()).getIdAuteur());
while (itap.hasNext()) {
creerTextFieldEtBouton(pubAPersonneListeAuteur.get(itap.next()).getPersonne());
}
int nbAuteurs = 0;
for(Iterator<ComboBox<Personne>> it = listeAuteurs.iterator(); it.hasNext();) {
if(listeAuteurs.size() > 1) {
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
if (auteurComboboxListe.size() > 1) {
it.next().setFieldLabel("Auteur "+nbAuteurs);
nbAuteurs++;
}
282,14 → 325,12
if (nouvellesDonnees instanceof Information) {
Information nouvellesInfos = (Information)nouvellesDonnees;
if(nouvellesInfos.getType().equals("liste_personne")) {
listePersonneAuteur = (PersonneListe)nouvellesInfos.getDonnee(0);
storeAuteurs.removeAll();
for (Iterator<String> it = listePersonneAuteur.keySet().iterator(); it.hasNext();) {
Personne p = listePersonneAuteur.get(it.next());
storeAuteurs.add(p);
}
if (nouvellesInfos.getType().equals("liste_personne")) {
listePersonneAuteur = (PersonneListe) nouvellesInfos.getDonnee(0);
List<Personne> liste = listePersonneAuteur.toList();
auteursStorePartage.removeAll();
auteursStorePartage.add(liste);
GWT.log("ok", null);
listeAuteurInitialisee = true;
}
297,33 → 338,33
validationPublication = true;
idPublication = ""+nouvellesInfos.getDonnee(0);
if(mode.equals("AJOUT")) {
mediateur.ajouterAuteurPublication(this,idAuteurs,"2360",idPublication);
if (mode.equals(Formulaire.MODE_AJOUTER)) {
mediateur.ajouterAuteurPublication(this, idAuteurs, "2360", idPublication);
} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
mediateur.modifierAuteurPublication(this, idAuteurs, idPublication);
}
if(mode.equals("MODIF")) {
mediateur.modifierAuteurPublication(this,idAuteurs,idPublication);
}
}
if (nouvellesInfos.getType().equals("auteur_valide")) {
validationAuteurs = true;
}
if(formValide && validationPublication && validationAuteurs) {
mediateur.rechargerListePublication();
if (formValide && validationPublication && validationAuteurs && clicBoutonvalidation) {
clicBoutonvalidation = false;
panneauFormulaire.setEnabled(false);
mediateur.clicMenu(MenuApplicationId.PUBLICATION);
}
}
}
private void soumettreFormulaire() {
public void soumettreFormulaire() {
String auteur = "";
String idAuteur = "";
for (int i = 0; i < listeAuteurs.size(); i++) {
if(listeAuteurs.get(i).getValue() != null) {
idAuteur += listeAuteurs.get(i).getValue().getId();
auteur += listeAuteurs.get(i).getValue().getNom()+ " "+listeAuteurs.get(i).getValue().getPrenom();
if (i != listeAuteurs.size() -1) {
for (int i = 0; i < auteurComboboxListe.size(); i++) {
if (auteurComboboxListe.get(i).getValue() != null) {
idAuteur += auteurComboboxListe.get(i).getValue().getId();
auteur += auteurComboboxListe.get(i).getValue().getNom()+ " "+auteurComboboxListe.get(i).getValue().getPrenom();
if (i != auteurComboboxListe.size() -1) {
auteur += "|";
idAuteur += ",";
}
332,7 → 373,7
String erreurs = "";
if(idAuteur == null || idAuteur.equals("")) {
if (idAuteur == null || idAuteur.equals("")) {
erreurs += "Veuillez entrer au moins un auteur ! ";
} else {
idAuteurs = idAuteur;
339,7 → 380,7
}
String nomArt = nomArticle.getValue();
if(nomArt == null || nomArt.equals("")) {
if (nomArt == null || nomArt.equals("")) {
erreurs += "Veuillez entrer le nom de l'article ! ";
}
351,7 → 392,7
String editeur = "";
if(comboListeEditeurs.getValue() == null) {
if (comboListeEditeurs.getValue() == null) {
//erreurs += "Veuillez sélectionner un éditeur ! ";
} else {
editeur = comboListeEditeurs.getValue().getId();
361,11 → 402,11
}
String datePar = datePub.getRawValue();
if(datePar == null || datePar.equals("")) {
if (datePar == null || datePar.equals("")) {
erreurs += "Veuillez entrer une date ! ";
} else {
String resDate = analyserDate(datePar);
if(resDate.equals("")) {
if (resDate.equals("")) {
datePar = datePar+"-00-00";
} else {
erreurs += resDate;
377,27 → 418,31
String pages = pagesPub.getValue();
if(erreurs.length() > 0) {
if (erreurs.length() > 0) {
MessageBox.alert("Erreur dans la saisie des champs", erreurs, null);
return;
} else {
formValide = true;
if (mode.equals(Formulaire.MODE_AJOUTER)) {
Publication publi = new Publication(pub, uri, auteur, collPub, nomArt, editeur, datePar, tome, fascicule, pages);
mediateur.ajouterPublication(this, publi);
} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
Publication publi = new Publication(idPublication, idProjet, pub, uri, auteur, collPub, nomArt, editeur, datePar, tome, fascicule, pages);
mediateur.modifierPublication(this, publi);
}
}
formValide = true;
this.setEnabled(false);
mediateur.afficherPopinChargement();
if (mode.equals("AJOUT")) {
Publication publi = new Publication(pub,uri,auteur, collPub,nomArt,editeur,datePar,tome,fascicule,pages);
mediateur.ajouterPublication(this, publi);
} else if (mode.equals("MODIF")) {
Publication publi = new Publication(idPublication,idProjet,pub,uri,auteur, collPub,nomArt,editeur,datePar,tome,fascicule,pages);
mediateur.modifierPublication(this, publi);
}
protected void reinitialiserFormulaire() {
if (mode.equals(StructureForm.MODE_MODIFIER)) {
mediateur.afficherFormPublication(publi.getId());
} else {
mediateur.afficherFormPublication(null);
}
}
private String analyserDate(String datePar) {
if(datePar.matches("^[0-2][0-9]{3}$")) {
if (datePar.matches("^[0-2][0-9]{3}$")) {
return "";
} else {
return "Format de date incorrect ";
405,99 → 450,32
}
private String reduireDateParAnnee(String datePar) {
if(datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
return datePar.split("-")[0];
} else {
return "";
}
}
 
private void genererChampsAuteur(boolean vider) {
fieldSetAuteurs.removeAll();
conteneurChamps = new LayoutContainer();
Button ajoutAuteurBtn = new Button("Ajouter un auteur");
ajoutAuteurBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
 
@Override
public void componentSelected(ButtonEvent be) {
creerTextFieldEtBouton("");
int nbAuteurs = 0;
for(Iterator<ComboBox<Personne>> it = listeAuteurs.iterator(); it.hasNext();) {
if(listeAuteurs.size() > 1) {
it.next().setFieldLabel("Auteur "+nbAuteurs);
nbAuteurs++;
}
}
fieldSetAuteurs.layout(true);
}
});
fieldSetAuteurs.add(conteneurChamps);
fieldSetAuteurs.add(ajoutAuteurBtn);
fieldSetAuteurs.layout(true);
if(!vider) {
creerTextFieldEtBouton("");
}
 
}
public HorizontalPanel creerTextFieldEtBouton(String valeurDefaut) {
final HorizontalPanel p = new HorizontalPanel();
// Création de la disposition : FIELDSET
FormLayout layoutPanelTF = new FormLayout();
p.setLayout(layoutPanelTF);
final ComboBox<Personne> tf = new ComboBox<Personne>();
tf.setDisplayField("fmt_nom_complet");
tf.setStore(storeAuteurs);
tf.setEmptyText("Selectionnez un auteur...");
String label = "Auteur ";
tf.setFieldLabel(label);
if(valeurDefaut != null && !valeurDefaut.equals("") ) {
Personne auteur = listePersonneAuteur.get(valeurDefaut);
tf.setValue(auteur);
}
listeAuteurs.add(tf);
tf.setSize(200, 20);
LayoutContainer lc = new LayoutContainer();
lc.setLayout(new FormLayout());
lc.add(tf);
Button supp = new Button("-");
supp.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
protected SelectionListener<ButtonEvent> creerEcouteurValidation() {
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
int nbAuteurs = 0;
if(listeAuteurs.size() != 1) {
for(Iterator<ComboBox<Personne>> it = listeAuteurs.iterator(); it.hasNext();) {
it.next().setFieldLabel("Auteur "+nbAuteurs);
nbAuteurs++;
}
public void componentSelected(ButtonEvent ce) {
String code = ((Button) ce.getComponent()).getData("code");
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
soumettreFormulaire();
clicBoutonvalidation = true;
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
soumettreFormulaire();
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
mediateur.clicMenu(menuIdCourant);
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
reinitialiserFormulaire();
}
listeAuteurs.remove(tf);
conteneurChamps.remove(p);
fieldSetAuteurs.layout(true);
}
});
p.add(lc);
p.add(supp);
conteneurChamps.add(p);
fieldSetAuteurs.layout(true);
};
return p;
return ecouteur;
}
public void obtenirListeAuteurs() {
mediateur.clicObtenirListeAuteurs(this);
}
}
/trunk/src/org/tela_botanica/client/vues/CollectionFormAuteur.java
11,10 → 11,11
import org.tela_botanica.client.modeles.PersonneListe;
import org.tela_botanica.client.modeles.ValeurListe;
 
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.EventType;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.GridEvent;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
23,8 → 24,8
import com.extjs.gxt.ui.client.store.StoreEvent;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
37,6 → 38,7
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.KeyCodes;
 
public class CollectionFormAuteur extends FormulaireOnglet implements Rafraichissable {
50,6 → 52,7
private ComboBox<Personne> auteursSaisisComboBox = null;
private Button auteursBoutonSupprimer = null;
private Button auteursBoutonModifier = null;
private Button ajouterAuteurSaisiBouton = null;
private static final String ETAT_AJOUTE = "A";
private static final String ETAT_SUPPRIME = "S";
116,7 → 119,7
auteursSaisisComboBox = creerComboBoxAuteursSaisis();
barreOutils.add(auteursSaisisComboBox);
Button ajouterAuteurSaisiBouton = creerBoutonAjouterAuteurSaisi();
ajouterAuteurSaisiBouton = creerBoutonAjouterAuteurSaisi();
barreOutils.add(ajouterAuteurSaisiBouton);
return barreOutils;
128,14 → 131,7
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
PersonneForm formulairePersonne = new PersonneForm(Formulaire.MODE_AJOUTER);
formulairePersonne.setHeaderVisible(false);
formulairePersonne.setTopComponent(null);
// TODO : gérer la barre d'outil avec des évènements spécifique au contexte de fenêtre modale
//formulairePersonne.setBottomComponent(null);
final FenetreForm fenetre = new FenetreForm(i18nC.personneModeAjout());
fenetre.add(formulairePersonne);
FenetreForm fenetre = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
fenetre.show();
}
});
149,24 → 145,10
@Override
public void componentSelected(ButtonEvent ce) {
Personne auteurSaisiSelectionne = grille.getSelectionModel().getSelectedItem();
if (auteurSaisiSelectionne == null) {
Info.display("Info", "Veuillez selectionner un auteur");
} else {
PersonneForm formulairePersonne = new PersonneForm(Formulaire.MODE_MODIFIER);
formulairePersonne.setHeaderVisible(false);
formulairePersonne.setTopComponent(null);
// TODO : gérer la barre d'outil avec des évènements spécifique au contexte de fenêtre modale
//formulairePersonne.setBottomComponent(null);
// TODO : simplifier la gestion de l'ajout des données d'une Personne au form pour la modification... (pas besoin de passer par une liste).
Information info = new Information("liste_personne");
PersonneListe personnes = new PersonneListe();
personnes.put(auteurSaisiSelectionne.getId(), auteurSaisiSelectionne);
info.setDonnee(0, personnes);
formulairePersonne.rafraichir(info);
final FenetreForm fenetre = new FenetreForm(i18nC.personneModeModifier());
fenetre.add(formulairePersonne);
FenetreForm fenetre = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
fenetre.show();
}
}
173,7 → 155,65
});
return bouton;
}
private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
final FenetreForm fenetre = new FenetreForm("");
final PersonneForm formulaire = creerFormulairePersonne(fenetre);
fenetre.add(formulaire);
return fenetre;
}
private PersonneForm creerFormulairePersonne(final FenetreForm fenetre) {
PersonneForm formulaire = new PersonneForm(mode);
fenetre.setHeading(formulaire.getHeading());
formulaire.setHeaderVisible(false);
formulaire.setTopComponent(null);
 
// TODO : gérer la barre d'outil avec des évènements spécifique au contexte de fenêtre modale
SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePersonne(fenetre, formulaire);
final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
formulaire.setBottomComponent(barreValidation);
if (mode.equals(Formulaire.MODE_MODIFIER)) {
// TODO : simplifier la gestion de l'ajout des données d'une Personne au form pour la modification... (pas besoin de passer par une liste).
Information info = new Information("liste_personne");
PersonneListe personnes = new PersonneListe();
Personne auteurSaisiSelectionne = grille.getSelectionModel().getSelectedItem();
personnes.put(auteurSaisiSelectionne.getId(), auteurSaisiSelectionne);
info.setDonnee(0, personnes);
formulaire.rafraichir(info);
}
return formulaire;
}
private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePersonne(final FenetreForm fenetre, final PersonneForm formulaire) {
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
String code = ((Button) ce.getComponent()).getData("code");
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
Boolean ok = formulaire.enregistrer();
if (ok == true) {
// Fermer fenêtre et ajouter/modifier l'élément dans la liste
}
fenetre.hide();
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
Boolean ok = formulaire.enregistrer();
if (ok == true) {
// Fermer fenêtre et ajouter/modifier l'élément dans la liste
}
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
fenetre.hide();
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
formulaire.reinitialiser();
}
}
};
return ecouteur;
}
private Button creerBoutonSupprimer() {
Button bouton = new Button(i18nC.supprimer());
bouton.setIcon(Images.ICONES.vcardSupprimer());
216,12 → 256,21
comboBox.setStore(personnesSaisiesStore);
comboBox.addKeyListener(new KeyListener() {
public void componentKeyUp(ComponentEvent ce) {
ComboBox<Personne> comboBox = (ComboBox<Personne>) ce.getComponent();
if (!ce.isNavKeyPress() && comboBox.getRawValue() != null && comboBox.getRawValue().length() > 0) {
obtenirAuteursSaisis(comboBox.getRawValue());
if (auteursSaisisComboBox.getRawValue() != null && auteursSaisisComboBox.getRawValue().length() > 0) {
if (!ce.isNavKeyPress()) {
obtenirAuteursSaisis(auteursSaisisComboBox.getRawValue());
}
}
}
});
comboBox.addListener(Events.Select, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
if (auteursSaisisComboBox.getValue() instanceof Personne) {
ajouterAuteurSaisiBouton.fireEvent(Events.Select);
}
}
});
return comboBox;
}
232,6 → 281,7
public void componentSelected(ButtonEvent ce) {
Personne auteurSaisiSelectionne = auteursSaisisComboBox.getValue();
ajouterDansGrille(auteurSaisiSelectionne);
auteursSaisisComboBox.setValue(null);
}
});
return bouton;
/trunk/src/org/tela_botanica/client/vues/Formulaire.java
26,7 → 26,6
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
40,9 → 39,7
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
 
public abstract class Formulaire extends LayoutContainer implements Rafraichissable {
 
49,11 → 46,6
public static final String MODE_AJOUTER = "AJOUT";
public static final String MODE_MODIFIER = "MODIF";
public static final String CODE_BOUTON_VALIDER = "VA";
public static final String CODE_BOUTON_APPLIQUER = "AP";
public static final String CODE_BOUTON_ANNULER = "AN";
public static final String CODE_BOUTON_REINITIALISER = "RE";
protected Constantes i18nC = null;
protected Mediateur mediateur = null;
protected Configuration config = null;
63,10 → 55,13
protected FormPanel panneauFormulaire = null;
protected ButtonBar barreOutilsValidation = null;
protected TabPanel onglets = null;
protected String menuIdCourant = null;
protected static Boolean clicBoutonvalidation = false;
 
public FormPanel getFormulaire() {
return panneauFormulaire;
}
public void initialiserFormulaire(Mediateur mediateurCourrant, String modeDeCreation, String idMenuCourrant) {
// Initialisation de variables
84,20 → 79,26
panneauFormulaire = new FormPanel();
panneauFormulaire.setBodyBorder(false);
panneauFormulaire.setFrame(true);
panneauFormulaire.setIcon(Images.ICONES.formAjouter());
panneauFormulaire.setCollapsible(false);
panneauFormulaire.setHeading(i18nC.titreAjoutFormStructurePanneau());
panneauFormulaire.setCollapsible(false);
panneauFormulaire.setButtonAlign(HorizontalAlignment.CENTER);
panneauFormulaire.setLayout(new FitLayout());
 
if (modeDeCreation.equals(MODE_AJOUTER)) {
panneauFormulaire.setIcon(Images.ICONES.formAjouter());
} else if (modeDeCreation.equals(MODE_AJOUTER)) {
panneauFormulaire.setIcon(Images.ICONES.formModifier());
}
creerOnglets();
creerBarreOutilsValidation();
barreOutilsValidation = new FormulaireBarreValidation(creerEcouteurValidation());
panneauFormulaire.setBottomComponent(barreOutilsValidation);
add(panneauFormulaire);
}
protected abstract void creerOnglets();
protected abstract SelectionListener<ButtonEvent> creerEcouteurValidation();
protected abstract void soumettreFormulaire();
protected TabItem creerOnglet(String nom, String id) {
TabItem onglet = new TabItem();
onglet.setId(id);
105,42 → 106,6
FormulaireOnglet.parametrer(onglet);
return onglet;
}
protected void creerBarreOutilsValidation() {
barreOutilsValidation = new ButtonBar();
barreOutilsValidation.setAlignment(HorizontalAlignment.LEFT);
barreOutilsValidation.add(creerBoutonFormulaire(i18nC.reinitialiser(), Images.ICONES.reinitialiser(), CODE_BOUTON_REINITIALISER));
barreOutilsValidation.add(new FillToolItem());
barreOutilsValidation.add(creerBoutonFormulaire(i18nC.appliquer(), Images.ICONES.appliquer(), CODE_BOUTON_APPLIQUER));
barreOutilsValidation.add(creerBoutonFormulaire(i18nC.annuler(), Images.ICONES.annuler(), CODE_BOUTON_ANNULER));
barreOutilsValidation.add(creerBoutonFormulaire(i18nC.valider(), Images.ICONES.valider(), CODE_BOUTON_VALIDER));
panneauFormulaire.setBottomComponent(barreOutilsValidation);
}
protected Button creerBoutonFormulaire(String nom, AbstractImagePrototype icone, final String code) {
SelectionListener<ButtonEvent> ecouteur = creerEcouteurBoutonFormulaire(code);
Button bouton = creerBouton(nom, icone, ecouteur);
return bouton;
}
protected abstract SelectionListener<ButtonEvent> creerEcouteurBoutonFormulaire(final String code);
protected Button creerBouton(String nom, AbstractImagePrototype icone, SelectionListener<ButtonEvent> ecouteur) {
Button bouton = new Button(nom);
bouton.setIcon(icone);
bouton.addSelectionListener(ecouteur);
return bouton;
}
protected abstract void soumettreFormulaire();
 
protected void verifierApresRafraichissement() {
// Si le bouton Valider a été cliqué, nous affichons la liste des structures
214,9 → 179,10
}
}
protected abstract void afficherChampSupplementaire(Radio radioBtn);
protected void afficherChampSupplementaire(Radio radioBtn) {
GWT.log("Vous devez redéfinir la méthode afficherChampSupplementaire(Radio radioBtn) dans votre classe formulaire.", null);
};
/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
* Apelle un service retournant la liste des valeurs représentant les cases à cocher.
* Ajoute ou pas un champ "Autre".
/trunk/src/org/tela_botanica/client/modeles/aDonnee.java
15,6 → 15,7
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONObject;
 
/**
* @author jpm
29,6 → 30,27
protected abstract String getPrefixe();
protected void initialiserModele(JSONObject jsonObjet) {
// l'objet JSON est une table de hachage
Set<String> im = jsonObjet.keySet();
 
// Parcourt pour chaque clé
for (Iterator<String> it = im.iterator(); it.hasNext();) {
// Si elle est associée à une valeur, nous l'ajoutons
String cle = it.next();
if (cle.startsWith(getPrefixe()+"_")) {
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet
String cleObjet = cle.replaceFirst("^"+getPrefixe()+"_", "");
// Sinon, nous ajoutons la clé avec une valeur vide
String valeur = "";
if (jsonObjet.get(cle).isString() != null) {
valeur = jsonObjet.get(cle).isString().stringValue();
}
this.set(cleObjet, valeur);
}
}
}
/**
* Pour éviter que l'on traite des valeurs nulles à l'affichage on passe par
* cette fonction qui retire les charactères nuls qui font planter
/trunk/src/org/tela_botanica/client/modeles/PublicationAPersonne.java
11,8 → 11,11
public static final String PREFIXE = "cpuap";
public static final String ROLE_AUTEUR = "2360";
 
private Personne personneLiee = null;
public PublicationAPersonne(JSONObject pubAPersListe) {
personneLiee = new Personne(pubAPersListe);
// l'objet JSON est une table de hachage
Set<String> im = pubAPersListe.keySet();
 
38,23 → 41,11
return PREFIXE;
}
 
public String getIdAuteur() {
return renvoyerValeurCorrecte("id_personne");
public Personne getPersonne() {
return personneLiee;
}
public String getNomCompletAuteur() {
return renvoyerValeurCorrecte("cp_fmt_nom_complet");
public void setPersonne(Personne personne) {
personneLiee = personne;
}
public String getNomAuteur() {
return renvoyerValeurCorrecte("cp_nom");
}
public String getPrenomAuteur() {
return renvoyerValeurCorrecte("cp_prenom");
}
public String getPublication() {
return renvoyerValeurCorrecte("id_publication");
}
}
}
/trunk/src/org/tela_botanica/client/modeles/Personne.java
22,30 → 22,8
public Personne() {
}
public Personne(JSONObject liste) {
// l'objet JSON est une table de hachage
Set<String> im = liste.keySet();
 
// Parcourt pour chaque clé
for (Iterator<String> it = im.iterator(); it.hasNext();) {
// Si elle est associée à une valeur, nous l'ajoutons
String cle = it.next();
if (cle.startsWith(PREFIXE+"_")) {
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet
String cleObjet = cle.replaceFirst("^" + PREFIXE + "_", "");
if (liste.get(cle).isString() != null) {
String valeur = liste.get(cle).isString().stringValue();
this.set(cleObjet, valeur);
} else {
// Sinon, nous ajoutons la clé avec une valeur vide
String valeur = " ";
this.set(cleObjet, valeur);
}
}
}
public Personne(JSONObject personne) {
initialiserModele(personne);
//Ajout du champ courriel principal
this.set("courriel_princ", this.getInfoDenormaliseParPosition(this.renvoyerValeurCorrecte("truk_courriel"), 1));
}
/trunk/src/org/tela_botanica/client/modeles/Collection.java
1,8 → 1,5
package org.tela_botanica.client.modeles;
 
import java.util.Iterator;
import java.util.Set;
 
import com.google.gwt.json.client.JSONObject;
 
public class Collection extends aDonnee {
16,24 → 13,7
}
public Collection(JSONObject collection) {
// l'objet JSON est une table de hachage
Set<String> im = collection.keySet();
 
// Parcourt pour chaque clé
for (Iterator<String> it = im.iterator(); it.hasNext();) {
// Si elle est associée à une valeur, nous l'ajoutons
String cle = it.next();
if (cle.startsWith(PREFIXE+"_")) {
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet
String cleObjet = cle.replaceFirst("^"+PREFIXE+"_", "");
// Sinon, nous ajoutons la clé avec une valeur vide
String valeur = "";
if (collection.get(cle).isString() != null) {
valeur = collection.get(cle).isString().stringValue();
}
this.set(cleObjet, valeur);
}
}
initialiserModele(collection);
}
 
@Override
/trunk/src/org/tela_botanica/client/modeles/PersonneAsyncDao.java
84,7 → 84,7
public void modifier(Personne personne) {
String postDonneesEncodees = personne.obtenirChainePOST();
postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId;
GWT.log(postDonneesEncodees, null);
String[] parametres = {personne.getId()};
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
/trunk/src/org/tela_botanica/client/modeles/PublicationAPersonneListe.java
24,7 → 24,7
if (publicationAPersonneCourante != null) {
PublicationAPersonne publicationAPersonne = new PublicationAPersonne(publicationAPersonneCourante);
this.put(publicationAPersonne.getIdAuteur(), publicationAPersonne);
this.put(publicationAPersonne.getPersonne().getId(), publicationAPersonne);
}
}
}