Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1321 → Rev 1322

/trunk/src/org/tela_botanica/client/vues/DetailVue.java
15,6 → 15,7
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.projet.Projet;
import org.tela_botanica.client.modeles.projet.ProjetListe;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilString;
 
63,7 → 64,7
}
private void chargerProjets() {
mediateur.selectionnerProjet(this, null);
mediateur.selectionnerProjet(this, null, null);
}
protected String construireTxtProjet(String idProjet) {
191,15 → 192,19
}
protected void lancerChargementListesValeurs(String[] listesCodes) {
lancerChargementListesValeurs(listesCodes, null);
}
protected void lancerChargementListesValeurs(String[] listesCodes, Sequenceur sequenceur) {
Configuration configuration = (Configuration) Registry.get(RegistreId.CONFIG);
for (int i = 0; i < listesCodes.length ; i++) {
String code = listesCodes[i];
ontologiesEnAttenteDeReception.put(configuration.getListeId(code), code);
mediateur.obtenirListeValeurEtRafraichir(this, code);
mediateur.obtenirListeValeurEtRafraichir(this, code, sequenceur);
}
}
protected void receptionerListeValeurs(ValeurListe listeValeursReceptionnee) {
mettreAJourOntologieEnAttenteDeReception(listeValeursReceptionnee);
ajouterListeValeursAOntologie(listeValeursReceptionnee);
}
206,9 → 211,6
protected void mettreAJourOntologieEnAttenteDeReception(ValeurListe listeValeursReceptionnee) {
ontologiesEnAttenteDeReception.remove(listeValeursReceptionnee.getId());
if (ontologiesEnAttenteDeReception.size() == 0) {
ontologieChargementOk = true;
}
}
protected void ajouterListeValeursAOntologie(ValeurListe listeValeursReceptionnee) {
236,7 → 238,6
if (nbreValeurs > 0) {
for (int i = 0; i < nbreValeurs; i++) {
String valeur = valeurs[i];
// VALEUR SANS TYPE
// La valeur sans type est une entrée de l'ontologie
if (valeurEstOntologie && valeur.matches("^[0-9]+$")) {
243,11 → 244,13
if (valeur.equals("0")) {
valeur = "";
} else if (ontologie != null) {
Valeur valeurOntologie = ontologie.get(valeur);
if (valeurOntologie != null) {
valeur = valeurOntologie.getNom();
}
}
}
// VALEUR AVEC TYPE
/trunk/src/org/tela_botanica/client/vues/projet/ProjetVue.java
6,6 → 6,7
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.projet.Projet;
import org.tela_botanica.client.modeles.projet.ProjetListe;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.Style.LayoutRegion;
20,6 → 21,7
private ProjetListeVue panneauProjetListe;
private ProjetDetailVue panneauProjetDetail;
private Mediateur mediateur = null;
private Sequenceur sequenceur = new Sequenceur();
 
public ProjetVue(Mediateur mediateurCourant) {
super();
32,7 → 34,7
panneauProjetListe = new ProjetListeVue(mediateur);
this.add(panneauProjetListe, new BorderLayoutData(LayoutRegion.CENTER));
 
panneauProjetDetail = new ProjetDetailVue(mediateur);
panneauProjetDetail = new ProjetDetailVue(mediateur, sequenceur);
BorderLayoutData southData = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000);
southData.setSplit(true);
southData.setMargins(new Margins(5, 0, 0, 0));
41,10 → 43,10
 
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Projet) {
panneauProjetDetail.rafraichir((Projet) nouvellesDonnees);
//panneauProjetDetail.rafraichir((Projet) nouvellesDonnees);
sequenceur.empilerRafraichissement(panneauProjetDetail, (Projet) nouvellesDonnees);
} else if (nouvellesDonnees instanceof ProjetListe) {
panneauProjetListe.rafraichir((ProjetListe) nouvellesDonnees);
mediateur.desactiverChargement();
} else if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
// Affichage des éventuels messages de déboguage ou d'alerte
/trunk/src/org/tela_botanica/client/vues/projet/ProjetDetailVue.java
7,9 → 7,11
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.projet.Projet;
import org.tela_botanica.client.modeles.projet.ProjetListe;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.DetailVue;
 
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.util.Format;
import com.extjs.gxt.ui.client.util.Params;
import com.extjs.gxt.ui.client.widget.ContentPanel;
43,8 → 45,11
private ValeurListe valeurListeLangue = null;
private boolean listeLangueChargee = false;
 
public ProjetDetailVue(Mediateur mediateurCourant) {
private Sequenceur sequenceur;
public ProjetDetailVue(Mediateur mediateurCourant, Sequenceur sequenceur) {
super(mediateurCourant);
this.sequenceur = sequenceur;
initialiserTousLesTpl();
52,6 → 57,7
panneauPrincipal.setLayout(new FitLayout());
panneauPrincipal.setHeaderVisible(false);
panneauPrincipal.setBodyBorder(false);
panneauPrincipal.setScrollMode(Scroll.AUTO);
entete = new Html();
entete.setId(ComposantId.ZONE_DETAIL_ENTETE);
62,9 → 68,9
add(panneauPrincipal);
mediateurCourant.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId);
mediateurCourant.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId);
mediateurCourant.obtenirListeValeurEtRafraichir(this, listeLanguesId);
mediateurCourant.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId, sequenceur);
mediateurCourant.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId, sequenceur);
mediateurCourant.obtenirListeValeurEtRafraichir(this, listeLanguesId, sequenceur);
}
 
private void initialiserTousLesTpl() {
/trunk/src/org/tela_botanica/client/vues/projet/ProjetForm.java
16,6 → 16,7
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.Formulaire;
 
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
79,6 → 80,7
initialiserFormulaire(mediateurCourant, modeDeCreation, MenuApplicationId.PROJET);
panneauFormulaire.setLayout(new FlowLayout());
panneauFormulaire.setScrollMode(Scroll.AUTO);
genererTitreFormulaire();
creerZoneGeneralites();
93,7 → 95,7
creerTabIndex();
if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
mediateur.selectionnerProjet(this, projetId);
mediateur.selectionnerProjet(this, projetId, null);
}
}
/trunk/src/org/tela_botanica/client/vues/commentaire/CommentaireForm.java
108,7 → 108,7
projetsCombo.addStyleName(ComposantClass.OBLIGATOIRE);
projetsCombo.addListener(Events.Valid, creerEcouteurChampObligatoire());
panneauFormulaire.add(projetsCombo, new FormData(450, 0));
mediateur.selectionnerProjet(this, null);
mediateur.selectionnerProjet(this, null, null);
titreChp = new TextField<String>();
titreChp.setFieldLabel(i18nC.commentaireTitre());
/trunk/src/org/tela_botanica/client/vues/commentaire/CommentaireListeVue.java
81,7 → 81,7
// Gestion de l'ontologie
ontologie = new HashMap<String, Valeur>();
mediateur.obtenirListeValeurEtRafraichir(this, "typeCommentaireCollection");
mediateur.obtenirListeValeurEtRafraichir(this, "typeCommentaireCollection", null);
// Gestion de la barre d'outil
ToolBar toolBar = new ToolBar();
/trunk/src/org/tela_botanica/client/vues/publication/PublicationForm.java
11,7 → 11,6
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.Valeur;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.modeles.personne.PersonneListe;
22,7 → 21,7
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.Debug;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilArray;
import org.tela_botanica.client.util.UtilString;
33,7 → 32,6
 
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.Style.SortDir;
import com.extjs.gxt.ui.client.core.XTemplate;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
44,7 → 42,6
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.Store;
import com.extjs.gxt.ui.client.store.StoreEvent;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
58,16 → 55,10
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.Validator;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
77,22 → 68,23
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.user.client.Window;
 
 
public class PublicationForm extends Formulaire implements Rafraichissable {
//Variables de classe:
// Relatives à la publication
private Publication publication;
// Relatives aux auteurs
private LayoutContainer auteursFieldset = null;
private PersonneListe auteursInitialListe = null;
private static boolean publicationAPersonneListeChargementOk = false;
private PersonneListe auteursAjoutes = null;
private PersonneListe auteursSupprimes = null;
private LayoutContainer auteursFieldset = null;
private ComboBox<Projet> projetsCombo = null;
private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
private ListStore<Personne> auteursStorePartage = null;
private static boolean auteurStorePartageChargementOk = false;
private FieldSet generalitesFieldset = null;
private TextField<String> titreChp = null;
101,35 → 93,22
private FieldSet editionFieldset = null;
private ComboBox<Structure> editeurCombobox = null;
private static boolean editeursOk = false;
private TextField<String> datePublicationChp = null;
private TextField<String> tomeChp = null;
private TextField<String> fasciculeChp = null;
private TextField<String> pagesChp = null;
boolean auteursAffiches = false;
private static boolean formulaireValideOk = false;
private static boolean publicationValideOk = false;
private static boolean auteursValideOk = false;
private static boolean publicationOk = false;
private static boolean attenteAjoutAuteursOk = true;
private static boolean attenteSuppressionAuteursOk = true;
private LayoutContainer zoneHaut, zoneBas;
private static int idGenere = 1;
private ToolBar barreOutils = null;
private EditorGrid<Personne> grille;
private PersonneListe personnesAjoutees = null;
private PersonneListe personnesSupprimees = null;
private ComboBox<Personne> personnesSaisiesComboBox = null;
private Button personnesBoutonSupprimer = null;
private Button personnesBoutonModifier = null;
private ComboBox<Valeur> typeRelationCombo = null;
private List<Valeur> roles = null;
private PersonneListe listePersonne = new PersonneListe();
private FenetreForm fenetreFormulaire = null;
private Sequenceur sequenceur;
public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
initialiserPublicationForm(mediateurCourrant, publicationId);
141,21 → 120,19
}
private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
auteursInitialListe = new PersonneListe();
initialiserValidation();
initialiserAffichageAuteurs();
sequenceur = new Sequenceur();
publication = new Publication();
publication.setId(publicationId);
auteursInitialListe = new PersonneListe();
initialiserAuteurs(); // Crée les listes d'auteurs ajoutés et supprimés
String modeDeCreation = (UtilString.isEmpty(publication.getId()) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
String modeDeCreation = (UtilString.isEmpty(publicationId) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
panneauFormulaire.setLayout(new RowLayout());
panneauFormulaire.setStyleAttribute("padding", "0");
zoneHaut = new LayoutContainer(new FitLayout());
zoneBas = new LayoutContainer(new FlowLayout());
panneauFormulaire.add(zoneHaut, new RowData(1, 0.3));
panneauFormulaire.add(zoneBas, new RowData(1, 0.5));
panneauFormulaire.setScrollMode(Scroll.AUTO);
171,8 → 148,9
zoneBas.add(editionFieldset);
if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
mediateurCourrant.selectionnerPublication(this, publicationId);
mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR);
mediateurCourrant.selectionnerPublication(this, publicationId, sequenceur);
mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR, sequenceur);
sequenceur.empilerRafraichissement(this, new Information("chargement_modifier_ok"));
}
}
482,7 → 460,7
if (mode.equals(Formulaire.MODE_MODIFIER)) {
titre = i18nC.publicationTitreFormModif();
if (publication != null) {
titre += " - "+i18nC.id()+": "+publication.getId()+" - "+publication.getObjetDeLaPublication();
titre += " - "+i18nC.id()+": "+publication.getId()+" - "+publication.getTitre();
}
}
panneauFormulaire.setHeading(titre);
507,46 → 485,6
auteursFieldset.layout();
}
public void creerChampAuteurEtBoutonSupprimer(Personne auteur) {
/*final HorizontalPanel panneauHorizontal = new HorizontalPanel();
 
LayoutContainer panneauChampTxt = new LayoutContainer();
panneauChampTxt.setLayout(new FormLayout());
 
final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis();
if (auteur != null) {
auteursSaisisComboBox.setValue(auteur);
auteursSaisisComboBox.validate();
}
auteurComboboxListe.add(auteursSaisisComboBox);
auteursSaisisComboBox.setFieldLabel(i18nC.publicationAuteurSingulier()+" "+auteurComboboxListe.size());
panneauChampTxt.add(auteursSaisisComboBox, new FormData(300, 0));
panneauHorizontal.add(panneauChampTxt);
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(i18nC.publicationAuteurSingulier()+" "+numeroAuteurs);
numeroAuteurs++;
}
 
auteursFieldset.layout();
}
});
panneauHorizontal.add(supprimerAuteurBouton);
 
conteneurChamps.add(panneauHorizontal);
auteursFieldset.layout();*/
}
private ComboBox<Personne> creerComboBoxAuteursSaisis() {
ListStore<Personne> auteursStore = new ListStore<Personne>();
auteursStore.add(auteursStorePartage.getModels());
600,7 → 538,7
projetsCombo.addStyleName(ComposantClass.OBLIGATOIRE);
projetsCombo.addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire());
generalitesFieldset.add(projetsCombo, new FormData(450, 0));
mediateur.selectionnerProjet(this, null);
mediateur.selectionnerProjet(this, null, null);
titreChp = new TextField<String>();
titreChp.setName("cpu");
664,7 → 602,8
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Publication) {
// Si on a reçu les details d'une publication
rafraichirPublication((Publication) nouvellesDonnees);
publication = (Publication) nouvellesDonnees;
//rafraichirPublication((Publication) nouvellesDonnees);
} else if (nouvellesDonnees instanceof StructureListe) {
// Si on a reçu une liste des editeurs
rafraichirListeEditeurs((StructureListe) nouvellesDonnees);
679,39 → 618,10
} else {
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
synchronisation();
}
private void synchronisation() {
// Respecter l'ordre et faire attention à la réinitialisation des jetons
// 1. gestion des auteurs (Modif ou Ajout)
// 2. peupler le formulaire (Modif)
// 3. initialisation de la gestion des auteurs ajoutés/supprimés (Modif)
// 4. valider le formulaire (Modif ou Ajout)
if (etrePretAAfficherAuteurs()) {
afficherAuteurs();
initialiserAffichageAuteurs();
}
if (etrePretAPeupler()) {
peuplerFormulaire();
genererTitreFormulaire();
initialiserPeupler();
}
if (avoirAuteursMiseAJourCorrectement()) {
miseAJourAuteursInitialListe();
initialiserAuteurs();
auteursValideOk = true;
}
if (etreValide()) {
initialiserValidation();
repandreRafraichissement();
controlerFermeture();
}
}
private void miseAJourAuteursInitialListe() {
728,13 → 638,7
}
}
private void rafraichirPublication(Publication publi) {
publicationOk = true;
publication = publi;
}
private void rafraichirListeEditeurs(StructureListe editeurs) {
editeursOk = true;
editeurCombobox.getStore().removeAll();
editeurCombobox.getStore().add((List<Structure>) editeurs.toList());
}
748,45 → 652,31
grille.getStore().removeAll();
grille.getStore().add(auteursInitialListe.toList());
publicationAPersonneListeChargementOk = true;
layout();
}
private void rafraichirInformation(Information info) {
private void rafraichirInformation(Information info) {
String type = info.getType();
if (type.equals("ajout_publication") || type.equals("modif_publication")) {
// On vient de soumettre le formulaire, on doit passer à l'étape suivante:
// Validation des auteurs ou fermeture du formulaire
publicationValideOk = true;
if (mode.equals(Formulaire.MODE_AJOUTER)) {
if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
String publicationId = (String) info.getDonnee(0);
if (publicationId.matches("[0-9]+")) {
publication.setId(publicationId);
}
}
attenteAjoutAuteursOk = true;
}
if (type.equals("publication_enregistree")) {
// la publication vien d'etre enregistrée, on soumet les auteurs
soumettreAuteurs();
//System.out.println("pub enregistrée");
} else if (type.equals("auteurs_enregistres")) {
miseAJourAuteursInitialListe();
initialiserAuteurs();
repandreRafraichissement();
controlerFermeture();
} else if (type.equals("chargement_modifier_ok")) {
peuplerFormulaire();
genererTitreFormulaire();
}
if (info.getType().equals("liste_personne")) {
PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
/*List<Personne> liste = listePersonneAuteur.toList();
auteursStorePartage.removeAll();
auteursStorePartage.add(liste);
auteurStorePartageChargementOk = true;*/
ListStore store = personnesSaisiesComboBox.getStore();
store.removeAll();
store.add(listePersonneAuteur.toList());
} else if (info.getType().equals("ajout_publication_a_personne")) {
attenteAjoutAuteursOk = false;
} else if (info.getType().equals("suppression_publication_a_personne")) {
attenteSuppressionAuteursOk = false;
} else if (info.getType().equals("modif_publication")) {
InfoLogger.display("Modification d'une publication", info.toString());
} else if (info.getType().equals("ajout_publication")) {
799,75 → 689,9
}
}
private boolean avoirAuteursMiseAJourCorrectement() {
boolean ok = false;
if (attenteAjoutAuteursOk == false && attenteSuppressionAuteursOk == false) {
ok = true;
}
return ok;
}
private void afficherAuteurs() {
if (mode.equals(Formulaire.MODE_AJOUTER)) {
creerChampAuteurEtBoutonSupprimer(null);
} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
Iterator<String> itap = auteursInitialListe.keySet().iterator();
while (itap.hasNext()) {
creerChampAuteurEtBoutonSupprimer(auteursInitialListe.get(itap.next()));
}
}
auteursAffiches = true;
}
 
private void initialiserAffichageAuteurs() {
auteurStorePartageChargementOk = false;
publicationAPersonneListeChargementOk = false;
}
private void initialiserPeupler() {
publicationOk = false;
editeursOk = false;
auteursAffiches = false;
}
 
private boolean etrePretAAfficherAuteurs() {
boolean ok = false;
if (auteurStorePartageChargementOk
&& ((mode.equals(Formulaire.MODE_MODIFIER) && publicationOk && publicationAPersonneListeChargementOk)
|| (mode.equals(Formulaire.MODE_AJOUTER)))) {
ok = true;
}
return ok;
}
private boolean etrePretAPeupler() {
boolean ok = false;
if (mode.equals(Formulaire.MODE_MODIFIER) && publicationOk && editeursOk) {
ok = true;
}
return ok;
}
private Boolean etreValide() {
Boolean valide = false;
if (formulaireValideOk && auteursValideOk) {
valide = true;
}
return valide;
}
private void initialiserValidation() {
formulaireValideOk = false;
publicationValideOk = false;
initialiserAuteurs();
auteursValideOk = false;
}
private void initialiserAuteurs() {
attenteAjoutAuteursOk = true;
auteursAjoutes = new PersonneListe();
attenteSuppressionAuteursOk = true;
auteursSupprimes = new PersonneListe();
}
884,29 → 708,37
}
public boolean soumettreFormulaire() {
formulaireValideOk = verifierFormulaire();
boolean formulaireValideOk = verifierFormulaire();
if (formulaireValideOk) {
soumettrePublication();
//Les auteurs seront mis à jour lors du rafraichissement
}
return formulaireValideOk;
}
 
private void soumettrePublication() {
Publication publicationCollectee = collecterPublication();
if (publicationCollectee != null) {
// Pour l'enregistrement des collections, on utilise le séquenceur
// Il doit attendre le retour de l'enregistrement pour poursuivre
sequenceur = new Sequenceur();
int seqId = sequenceur.lancerRequeteSynchrone(this);
if (mode.equals(Formulaire.MODE_AJOUTER)) {
mediateur.ajouterPublication(this, publicationCollectee);
mediateur.ajouterPublication(sequenceur, publicationCollectee, seqId);
} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
mediateur.modifierPublication(this, publicationCollectee);
mediateur.modifierPublication(sequenceur, publicationCollectee, seqId);
}
sequenceur.empilerRafraichissement(this, new Information("publication_enregistree"));
}
}
private void soumettreAuteurs() {
attenteAjoutAuteursOk = false;
attenteSuppressionAuteursOk = false;
//attenteAjoutAuteursOk = false;
//attenteSuppressionAuteursOk = false;
//1) Auteurs ajoutés :
// - Créer une PublicationAAuteurListe
PublicationAPersonneListe listeDesAuteurs = new PublicationAPersonneListe();
921,8 → 753,9
// - envoyer au mediateur SSI personnes à ajouter
if (listeDesAuteurs.size() > 0) {
mediateur.ajouterPublicationAPersonne(this, publication.getId(), listeDesAuteurs, PublicationAPersonne.ROLE_AUTEUR);
attenteAjoutAuteursOk = true;
int seqId = sequenceur.lancerRequeteSynchrone(this);
mediateur.ajouterPublicationAPersonne(sequenceur, publication.getId(), listeDesAuteurs, PublicationAPersonne.ROLE_AUTEUR, seqId);
//attenteAjoutAuteursOk = true;
}
//2) Auteurs supprimés :
939,74 → 772,12
// - Envoyer au médiateur SSI personnes à supprimer
if (listeDesAuteurs.size() > 0) {
// Pour une suppression des auteurs, on a pas besoin d'attendre le retour
mediateur.supprimerPublicationAPersonne(this, listeDesAuteurs);
attenteSuppressionAuteursOk = true;
//attenteSuppressionAuteursOk = true;
}
/*
attenteAjoutAuteursOk = false;
attenteSuppressionAuteursOk = false;
PersonneListe personnesInitiales = auteursInitialListe;
PersonneListe personnesActuelles = new PersonneListe();
if (auteurComboboxListe != null) {
Iterator<ComboBox<Personne>> itcp = auteurComboboxListe.iterator();
while (itcp.hasNext()) {
ComboBox<Personne> combobox = itcp.next();
Personne personne = combobox.getValue();
if (personne != null) {
personnesActuelles.put(personne.getId(), personne);
} else {
Debug.log("Etre valide :"+combobox.isValid()+" - "+combobox.getRawValue());
}
}
}
// 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);
PublicationAPersonne publicationAAuteur = new PublicationAPersonne();
if (mode.equals(Formulaire.MODE_MODIFIER)) {
publicationAAuteur.setIdPublication(publication.getId());
}
publicationAAuteur.setPersonne(personne);
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
//FIXME : 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);
PublicationAPersonne publicationAAuteur = new PublicationAPersonne();
publicationAAuteur.setIdPublication(publication.getId());
publicationAAuteur.setPersonne(personne);
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
//FIXME : 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) {
//FIXME : mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
}
if (auteursSupprimes != null && auteursSupprimes.size() != 0) {
//FIXME : mediateur.supprimerPublicationAPersonne(this, auteursSupprimes);
}
}*/
sequenceur.empilerRafraichissement(this, new Information("auteurs_enregistres"));
}
public boolean verifierFormulaire() {
1140,18 → 911,6
intituleAuteur+=", ";
}
}
/*
* TO DELETE:int auteursNombre = auteurComboboxListe.size();
*
for (int i = 0; i < auteursNombre; i++) {
if (auteurComboboxListe.get(i).getValue() != null) {
Personne auteur = auteurComboboxListe.get(i).getValue();
inituleAuteur += auteur.getNom().toUpperCase()+ " "+auteur.getPrenom();
if (i != (auteursNombre - 1)) {
inituleAuteur += ", ";
}
}
}*/
return intituleAuteur;
}
/trunk/src/org/tela_botanica/client/vues/ContenuVue.java
69,6 → 69,5
}
}
}
mediateur.desactiverChargement();
}
}
/trunk/src/org/tela_botanica/client/vues/FiltreVue.java
43,7 → 43,7
}
private void chargerProjets() {
mediateur.selectionnerProjet(this, null);
mediateur.selectionnerProjet(this, null, null);
}
private void initialiserListeProjets() {
/trunk/src/org/tela_botanica/client/vues/personne/PersonneFormPublication.java
283,7 → 283,7
private void actualiserGrille() {
if (mode.equals(Formulaire.MODE_MODIFIER)) {
mediateur.selectionnerPublicationAPersonne(this, null, personneSelectionnee.getId(), "%");
mediateur.selectionnerPublicationAPersonne(this, null, personneSelectionnee.getId(), "%", null);
} else {
grille.getStore().removeAll();
layout();
669,7 → 669,7
// Ajout des relations PublicationAPersonne
if (publicationsAjoutees.size() != 0) {
//TODO : utiliser le role d'une liste déroulante
mediateur.ajouterPublicationAPersonne(this, publicationsAjoutees, personneSelectionnee.getId(), null);
mediateur.ajouterPublicationAPersonne(this, publicationsAjoutees, personneSelectionnee.getId(), null, null);
}
// Suppression des relations PublicationAPersonne
if (publicationsSupprimees.size() != 0) {
/trunk/src/org/tela_botanica/client/vues/personne/PersonneVue.java
5,9 → 5,12
import org.tela_botanica.client.composants.InfoLogger;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.modeles.personne.PersonneListe;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilString;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
24,6 → 27,9
private PersonneDetailVue panneauPersonneDetail;
private Mediateur mediateur = null;
 
//Sequenceur pour la gestion du synchrone
private Sequenceur sequenceur = new Sequenceur();
public PersonneVue(Mediateur mediateur) {
this.mediateur = mediateur;
32,6 → 38,12
setLayout(layout);
 
panneauPersonneListe = new PersonneListeVue();
//Charger les ontologies nécessaires à l'affichage des personnes
mediateur.obtenirListeValeurEtRafraichir(this, "pays", sequenceur);
mediateur.obtenirListeValeurEtRafraichir(this, "tel", sequenceur);
mediateur.obtenirListeValeurEtRafraichir(this, "relationPersonnePublication", sequenceur);
this.add(panneauPersonneListe, new BorderLayoutData(LayoutRegion.CENTER));
 
panneauPersonneDetail = new PersonneDetailVue(mediateur);
43,15 → 55,18
 
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Personne) {
panneauPersonneDetail.rafraichir((Personne) nouvellesDonnees);
sequenceur.empilerRafraichissement(panneauPersonneDetail, (Personne) nouvellesDonnees);
//panneauPersonneDetail.rafraichir((Personne) nouvellesDonnees);
} else if (nouvellesDonnees instanceof PersonneListe) {
panneauPersonneListe.rafraichir((PersonneListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
// Affichage des éventuels messages de déboguage ou d'alerte
if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
if (!UtilString.isEmpty(info.getMessages())) {
GWT.log(info.getMessages().toString(), null);
}
// Traitement en fonction des types d'information
if (info.getType().equals("liste_personne")) {
panneauPersonneListe.rafraichir((PersonneListe) info.getDonnee(0));
59,6 → 74,8
} else {
panneauPersonneListe.rafraichir(info);
}
} else if (nouvellesDonnees instanceof ValeurListe) {
panneauPersonneListe.rafraichir((ValeurListe) nouvellesDonnees);
} else {
GWT.log(mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
/trunk/src/org/tela_botanica/client/vues/personne/PersonneListeVue.java
174,7 → 174,6
store.removeAll();
store.add(liste);
mediateur.desactiverChargement();
mediateur.actualiserPanneauCentral();
grille.fireEvent(Events.ViewReady);
}
/trunk/src/org/tela_botanica/client/vues/personne/PersonneDetailVue.java
11,12 → 11,12
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.configuration.Configuration;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.personne.Personne;
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.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.vues.DetailVue;
 
49,24 → 49,19
private HashMap hmLabelFieldRegion = new HashMap();
private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
private boolean ontologieRecue = false;
//private boolean ontologieRecue = false;
private Personne personneAAfficher = null;
 
private boolean personneAffichee = false;
//private boolean personneAffichee = false;
private String tableauPublicationsLieesTpl = "";
private String lignePublicationLieeTpl = "";
private void chargerOntologie() {
mediateur.obtenirListeValeurEtRafraichir(this, "pays");
mediateur.obtenirListeValeurEtRafraichir(this, "tel");
mediateur.obtenirListeValeurEtRafraichir(this, "relationPersonnePublication");
}
private Sequenceur sequenceur = new Sequenceur();
public PersonneDetailVue(Mediateur mediateur) {
super(mediateur);
chargerOntologie();
 
//chargerOntologie(); -> Les ontologies sont chargées plus tôt, dans la vue PersonneVue
setLayout(new FitLayout());
 
entete = new Html();
89,7 → 84,6
tabInfosNat = new TabItem(i18nC.personneInfoNat());
tabInfosNat.setScrollMode(Scroll.AUTO);
 
//Greg : ajout d'un résumé des publications
tabPublications = new TabItem(i18nC.tabPublications());
tabPublications.setScrollMode(Scroll.AUTO);
tabPublications.setLayout(new FlowLayout());
322,7 → 316,7
 
while (itComposants.hasNext()) {
String region = itComposants.next();
mediateur.obtenirValeurEtRafraichir(this, "region", region);
mediateur.obtenirValeurEtRafraichir(this, "region", region, sequenceur);
}
}
 
432,50 → 426,14
}
public void rafraichir(Object nouvellesDonnees) {
// FIXME : Ci-dessous, on utilise le booléen personneAffichee pour éviter un affichage répété de personnes.
// Se règlerait avec une gestion Synchrone/Asynchrone
// Si on a reçu une personne on en affiche les détails
if (nouvellesDonnees instanceof Personne) {
personneAAfficher = (Personne) nouvellesDonnees;
personneAffichee = false;
} else if (nouvellesDonnees instanceof ValeurListe) {
ValeurListe ontologieReceptionnee = (ValeurListe) nouvellesDonnees;
ajouterListeValeursAOntologie(ontologieReceptionnee);
ontologieRecue = true;
// Remplacer ci-dessous par Ontologie
ValeurListe listeValeur = (ValeurListe) nouvellesDonnees;
if (listeValeur.getId().equals(config.getListeId("region"))) {
Collection colCleListeValeur = listeValeur.keySet();
Iterator<String> itLv = colCleListeValeur.iterator();
while (itLv.hasNext()) {
String idRegion = itLv.next();
Valeur region = listeValeur.get(idRegion);
 
if (region != null) {
 
String strRegionId = region.getAbreviation();
 
LinkedList<LabelField> listComposantsRegion = (LinkedList) hmLabelFieldRegion.get(strRegionId);
for (int i = 0; i < listComposantsRegion.size(); i++) {
LabelField lfRegion = listComposantsRegion.get(i);
lfRegion.setFieldLabel(region.getNom());
}
 
}
}
}
if (nouvellesDonnees instanceof ValeurListe) {
ajouterListeValeursAOntologie((ValeurListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof Personne) {
afficherDetailPersonne((Personne) nouvellesDonnees);
} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
afficherPublications((PublicationAPersonneListe) nouvellesDonnees);
}
if (ontologieRecue && personneAAfficher != null && personneAffichee == false) {
afficherDetailPersonne(personneAAfficher);
personneAffichee = true;
}
}
 
}
/trunk/src/org/tela_botanica/client/vues/personne/PersonneForm.java
33,6 → 33,7
import org.tela_botanica.client.modeles.publication.Publication;
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
import org.tela_botanica.client.modeles.publication.PublicationListe;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.Formulaire;
119,6 → 120,9
private String personneId = null;
private FormBinding binding = null;
//Gestion du mode synchrone
private Sequenceur sequenceur;
//Publi
private ComboBox<Publication> cbPubli;
private ListStore<Publication> storePubli;
135,6 → 139,8
private void initialiserPersonneForm(Mediateur mediateurCourrant, String personneIdCourrant) {
//Initialisation du séquenceur
sequenceur = new Sequenceur();
personne = new Personne();
personne.setId(personneIdCourrant);
personneId = personneIdCourrant;
145,9 → 151,9
initialiserComposants();
genererTitreFormulaire();
mediateur.obtenirListeValeurEtRafraichir(this, "relationPersonnePublication");
mediateur.obtenirListeValeurEtRafraichir(this, "relationPersonnePublication", sequenceur);
if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
mediateur.selectionnerPersonne(this, personne, null);
mediateur.selectionnerPersonne(this, personne, null, sequenceur);
}
}
252,7 → 258,7
hmIdentite.put("cbProjets", cbProjets);
mediateur.selectionnerProjet(this, null);
mediateur.selectionnerProjet(this, null, sequenceur);
left.add(fsProjet);
281,7 → 287,7
fsNoms.add(cbPrefixe);
hmIdentite.put("cbPrefixe", cbPrefixe);
mediateur.obtenirListeValeurEtRafraichir(this, "prefixe");
mediateur.obtenirListeValeurEtRafraichir(this, "prefixe", sequenceur);
 
//Prénom
TextField<String> tfPrenom = new TextField<String>();
313,7 → 319,7
fsNoms.add(cbSuffixe);
hmIdentite.put("cbSuffixe", cbSuffixe);
mediateur.obtenirListeValeurEtRafraichir(this, "suffixes");
mediateur.obtenirListeValeurEtRafraichir(this, "suffixes", sequenceur);
 
TextField<String> tfAbreviation = new TextField<String>();
tfAbreviation.setFieldLabel("Abréviation");
484,7 → 490,7
lcAutreInformations1.add(cbSexe, fd);
hmIdentite.put("cbSexe", cbSexe);
mediateur.obtenirListeValeurEtRafraichir(this, "sexe");
mediateur.obtenirListeValeurEtRafraichir(this, "sexe", sequenceur);
//Description
TextArea taDescription = new TextArea();
627,7 → 633,7
hmAdresse.put("tfVille", tfVille);
// MAJ ComboBox
mediateur.obtenirListeValeurEtRafraichir(this, "pays");
mediateur.obtenirListeValeurEtRafraichir(this, "pays", sequenceur);
FieldSet fsAdresse = new FieldSet();
fsAdresse.setHeading("Adresse personnelle");
970,7 → 976,7
private void mettreAJourRegion() {
//Met à jour la combo box en sélectionnant la valeur enregistrée pour la personne
ComboBox<Valeur> cbRegion = hmAdresse.getComboBoxValeur("cbRegion");
if (personneSelectionnee.get("ce_truk_region").toString().startsWith("AUTRE##")) {
if (personneSelectionnee.get("ce_truk_region")!=null && personneSelectionnee.get("ce_truk_region").toString().startsWith("AUTRE##")) {
cbRegion.setRawValue(personneSelectionnee.get("ce_truk_region").toString().replaceFirst("^AUTRE##", ""));
} else if (personneSelectionnee.get("ce_truk_region") != null && cbRegion.getStore().getCount() > 0) {
Valeur valeurRegion = cbRegion.getStore().findModel("id_valeur", personneSelectionnee.get("ce_truk_region"));
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormCommentaire.java
17,6 → 17,7
import org.tela_botanica.client.modeles.collection.CollectionACommentaireListe;
import org.tela_botanica.client.modeles.commentaire.Commentaire;
import org.tela_botanica.client.modeles.commentaire.CommentaireListe;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.vues.FenetreForm;
import org.tela_botanica.client.vues.Formulaire;
79,6 → 80,7
private static boolean chargementCommentairesOk = false;
private FenetreForm fenetreFormulaire = null;
private Sequenceur sequenceur;
public CollectionFormCommentaire(Formulaire formulaireCourrant) {
initialiserOnglet(formulaireCourrant);
92,7 → 94,7
grille = creerGrille();
panneauPrincipal.add(grille);
mediateur.obtenirListeValeurEtRafraichir(this, "typeCommentaireCollection");
mediateur.obtenirListeValeurEtRafraichir(this, "typeCommentaireCollection", null);
add(panneauPrincipal);
initialiser();
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormDescription.java
183,7 → 183,7
ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteRangementTitre());
uniteRangementGrille = creerGrilleUniteRangement();
mediateur.obtenirListeValeurEtRafraichir(this, "typeUniteRangement");
mediateur.obtenirListeValeurEtRafraichir(this, "typeUniteRangement", null);
panneauGrille.add(uniteRangementGrille);
ToolBar barreOutils = creerBarreOutilsGrilleUniteRangement();
434,7 → 434,7
ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteBaseTitre());
uniteBaseGrille = creerGrilleUniteBase();
mediateur.obtenirListeValeurEtRafraichir(this, "typeUniteBase");
mediateur.obtenirListeValeurEtRafraichir(this, "typeUniteBase", null);
panneauGrille.add(uniteBaseGrille);
ToolBar barreOutils = creerBarreOutilsGrilleUniteBase();
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormPersonne.java
106,8 → 106,8
panneauPrincipal.setTopComponent(barreOutils);
grille = creerGrille();
panneauPrincipal.add(grille);
mediateur.obtenirListeValeurEtRafraichir(this, "ion");
mediateur.obtenirListeValeurEtRafraichir(this, "relationPersonneCollection");
mediateur.obtenirListeValeurEtRafraichir(this, "ion", null);
mediateur.obtenirListeValeurEtRafraichir(this, "relationPersonneCollection", null);
add(panneauPrincipal);
initialiser();
/trunk/src/org/tela_botanica/client/vues/collection/CollectionVue.java
5,6 → 5,7
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.collection.Collection;
import org.tela_botanica.client.modeles.collection.CollectionListe;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.Style.LayoutRegion;
19,6 → 20,8
private CollectionListeVue listeCollectionPanneau = null;
private CollectionDetailVue detailCollectionPanneau = null;
 
private Sequenceur sequenceur = new Sequenceur();
public CollectionVue(Mediateur mediateurCourant) {
mediateur = mediateurCourant;
29,7 → 32,7
listeCollectionPanneau = new CollectionListeVue(mediateur);
add(listeCollectionPanneau, new BorderLayoutData(LayoutRegion.CENTER));
 
detailCollectionPanneau = new CollectionDetailVue(mediateur);
detailCollectionPanneau = new CollectionDetailVue(mediateur, sequenceur);
BorderLayoutData dispositionSud = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000);
dispositionSud.setSplit(true);
dispositionSud.setMargins(new Margins(5, 0, 0, 0));
42,7 → 45,6
detailCollectionPanneau.rafraichir(nouvellesDonnees);
} else if (nouvellesDonnees instanceof CollectionListe) {
listeCollectionPanneau.rafraichir(nouvellesDonnees);
mediateur.desactiverChargement();
} else if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
if (info.getType().equals("liste_collection_a_personne")
/trunk/src/org/tela_botanica/client/vues/collection/CollectionListeVue.java
158,6 → 158,7
}
 
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof CollectionListe) {
CollectionListe collections = (CollectionListe) nouvellesDonnees;
 
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormGeneral.java
127,7 → 127,7
projetsCombo.addStyleName(ComposantClass.OBLIGATOIRE);
projetsCombo.addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire());
liaisonFieldSet.add(projetsCombo, new FormData(450, 0));
mediateur.selectionnerProjet(this, null);
mediateur.selectionnerProjet(this, null, null);
structuresCombo = new ComboBox<Structure>();
structuresCombo.setTabIndex(tabIndex++);
/trunk/src/org/tela_botanica/client/vues/collection/CollectionDetailVue.java
24,6 → 24,7
import org.tela_botanica.client.modeles.projet.ProjetListe;
import org.tela_botanica.client.modeles.publication.Publication;
import org.tela_botanica.client.modeles.structure.Structure;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilNombre;
import org.tela_botanica.client.util.UtilString;
78,9 → 79,11
private String tableauUniteBaseTpl;
private String ligneUniteBaseTpl;
 
private Sequenceur sequenceur;
public CollectionDetailVue(Mediateur mediateurCourant) {
public CollectionDetailVue(Mediateur mediateurCourant, Sequenceur sequenceur) {
super(mediateurCourant);
this.sequenceur = sequenceur;
initialiserTousLesTpl();
chargerOntologie();
504,7 → 507,8
"niveauImportance", "supportDegradation", "niveauDetermination", "natureVegetale", "siecleNaturaliste",
"dateDebut", "dateFin", "etat", "onep", "onp", "inventaireForme", "inventaireLogiciel", "inventaireEtat",
"etatClassement", "typeCommentaireCollection"};
lancerChargementListesValeurs(listesCodes);
lancerChargementListesValeurs(listesCodes, sequenceur);
sequenceur.empilerRafraichissement(this, new Information("ontologie_chargee"));
}
public void rafraichir(Object nouvellesDonnees) {
525,6 → 529,8
lierCollectionAPublication((CollectionAPublicationListe) info.getDonnee(0));
} else if (info.getType().equals("liste_collection_a_commentaire")) {
lierCollectionACommentaire((CollectionACommentaireListe) info.getDonnee(0));
} else if (info.getType().equals("ontologie_chargee")) {
ontologieChargementOk = true;
}
} else {
Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
/trunk/src/org/tela_botanica/client/vues/FormulaireOnglet.java
6,6 → 6,7
import org.tela_botanica.client.i18n.Constantes;
import org.tela_botanica.client.i18n.ErrorMessages;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.synchronisation.Sequenceur;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Scroll;
51,6 → 52,7
}
 
protected void initialiserOnglet(Formulaire formulaireCourrant) {
formulaire = formulaireCourrant;
mediateur = formulaire.mediateur;
i18nC = Mediateur.i18nC;
/trunk/src/org/tela_botanica/client/vues/structure/StructureVue.java
5,6 → 5,7
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.structure.Structure;
import org.tela_botanica.client.modeles.structure.StructureListe;
import org.tela_botanica.client.synchronisation.Sequenceur;
 
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.util.Margins;
19,6 → 20,8
private StructureListeVue panneauInstitutionListe = null;
private StructureDetailVue panneauInstitutionDetail = null;
 
private Sequenceur sequenceur = new Sequenceur();
public StructureVue(Mediateur mediateurCourant) {
mediateur = mediateurCourant;
29,7 → 32,7
panneauInstitutionListe = new StructureListeVue(mediateur);
add(panneauInstitutionListe, new BorderLayoutData(LayoutRegion.CENTER));
 
panneauInstitutionDetail = new StructureDetailVue(mediateur);
panneauInstitutionDetail = new StructureDetailVue(mediateur, sequenceur);
BorderLayoutData dispositionSud = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000);
dispositionSud.setSplit(true);
dispositionSud.setMargins(new Margins(5, 0, 0, 0));
42,7 → 45,6
panneauInstitutionDetail.rafraichir(nouvellesDonnees);
} else if (nouvellesDonnees instanceof StructureListe) {
panneauInstitutionListe.rafraichir(nouvellesDonnees);
mediateur.desactiverChargement();
} else if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
if (info.getType().equals("liste_structure_a_personne")) {
/trunk/src/org/tela_botanica/client/vues/structure/StructureDetailVue.java
8,7 → 8,6
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.projet.Projet;
import org.tela_botanica.client.modeles.projet.ProjetListe;
import org.tela_botanica.client.modeles.structure.Structure;
import org.tela_botanica.client.modeles.structure.StructureAPersonne;
15,6 → 14,7
import org.tela_botanica.client.modeles.structure.StructureAPersonneListe;
import org.tela_botanica.client.modeles.structure.StructureConservation;
import org.tela_botanica.client.modeles.structure.StructureValorisation;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.vues.DetailVue;
 
import com.extjs.gxt.ui.client.Style.Scroll;
27,6 → 27,7
import com.extjs.gxt.ui.client.widget.layout.AnchorLayout;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
 
public class StructureDetailVue extends DetailVue implements Rafraichissable {
 
56,8 → 57,11
private TabItem conservationOnglet = null;
private TabItem valorisationOnglet = null;
public StructureDetailVue(Mediateur mediateurCourant) {
private Sequenceur sequenceur;
public StructureDetailVue(Mediateur mediateurCourant, Sequenceur sequenceur) {
super(mediateurCourant);
this.sequenceur = sequenceur;
initialiserTousLesTpl();
chargerOntologie();
100,10 → 104,12
}
 
private void chargerOntologie() {
String[] listesCodes = {"stpr", "stpu", "statut", "fonction", "pays", "localStockage", "meubleStockage",
String[] listesCodes = {"stpr", "stpu", "pays", "statut", "fonction", "localStockage", "meubleStockage",
"parametreStockage", "autreCollection", "onep", "opRestau", "autreMateriel", "poisonTraitement",
"insecteTraitement", "actionValorisation", "continentEtFr", "typeRecherche"};
lancerChargementListesValeurs(listesCodes);
lancerChargementListesValeurs(listesCodes, this.sequenceur);
sequenceur.empilerRafraichissement(this, new Information("ontologie_chargee"));
}
 
private void afficherDetailInstitution() {
176,7 → 182,7
String acronyme = construireTxtTruck(structure.getIdAlternatif());
String typePrive = construireTxtListeOntologie(structure.getTypePrive());
String typePublic = construireTxtListeOntologie(structure.getTypePublic());
String pays = construireTxtListeOntologie(structure.getPays());
String pays = construireTxtListeOntologie(structure.getPays());
String web = construireTxtTruck(structure.getUrl());
String latitude = structure.getLatitude();
String longitude = structure.getLongitude();
195,7 → 201,7
identificationParams.set("adresse_complement", structure.getAdresseComplement());
identificationParams.set("cp", structure.getCodePostal());
identificationParams.set("ville", structure.getVille());
identificationParams.set("region", structure.getRegion());
identificationParams.set("region", construireTxtListeOntologie(structure.getRegion()));
identificationParams.set("pays", pays);
identificationParams.set("latitude_longitude", latitudeLongitude);
615,6 → 621,7
}
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Structure) {
structure = (Structure) nouvellesDonnees;
structureChargementOk = true;
629,9 → 636,11
if (info.getType().equals("liste_structure_a_personne")) {
allouerPersonnelAStructure((StructureAPersonneListe) info.getDonnee(0));
personnelChargementOk = true;
} else if (info.getType().equals("ontologie_chargee")) {
ontologieChargementOk = true;
}
} else {
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
if (avoirDonneesChargees()) {
afficherDetailInstitution();
/trunk/src/org/tela_botanica/client/vues/structure/StructureForm.java
28,6 → 28,7
import org.tela_botanica.client.modeles.structure.StructureAPersonneListe;
import org.tela_botanica.client.modeles.structure.StructureConservation;
import org.tela_botanica.client.modeles.structure.StructureValorisation;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilArray;
221,13 → 222,18
private ComboBox<Projet> projetsCombo = null;
private CellEditor fonctionEditor = null;
private List<Valeur> fonctionsListe = null;
 
public StructureForm(Mediateur mediateurCourrant, String modeDeCreation) {
private Sequenceur sequenceur;
public StructureForm(Mediateur mediateurCourrant, String modeDeCreation, Sequenceur sequenceur) {
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.STRUCTURE);
this.sequenceur = sequenceur;
// Ajout du titre
panneauFormulaire.setHeading(i18nC.titreAjoutFormStructurePanneau());
// Création des onglets
onglets = creerOnglets();
// Ajout des onglets au formulaire général
panneauFormulaire.add(onglets);
}
725,9 → 731,6
}
}
System.out.println(structureARetourner);
return structureARetourner;
}
839,7 → 842,8
actionTrukCacGrpChp = new CheckBoxGroup();
actionTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
valorisationOnglet.add(actionTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "actionValorisation");
mediateur.obtenirListeValeurEtRafraichir(this, "actionValorisation", sequenceur);
mediateur.obtenirListeValeurEtRafraichir(this, "statut", sequenceur);
publicationChp = new TextArea();
publicationChp.setFieldLabel("Quelques titres des ouvrages, articles scientifiques, ...");
849,7 → 853,7
autreCollectionTrukCacGrpChp = new CheckBoxGroup();
autreCollectionTrukCacGrpChp.setFieldLabel("L'organisme dispose-t-il d'autres collections (permettant une valorisation pluridisciplinaire) ?");
valorisationOnglet.add(autreCollectionTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "autreCollection");
mediateur.obtenirListeValeurEtRafraichir(this, "autreCollection", sequenceur);
futureActionMarkRGrpChp = creerChoixUniqueRadioGroupe("future_action_mark", "ouiNon");
futureActionMarkRGrpChp.setFieldLabel("Envisagez vous des actions de valorisation dans le cadre de votre politique culturelle ?");
876,7 → 880,7
provenanceRechercheTrukCacGrpChp = new CheckBoxGroup();
provenanceRechercheTrukCacGrpChp.setFieldLabel("Si oui, par des chercheurs (professionnels ou amateurs) de quelle provenance ?");
valorisationOnglet.add(provenanceRechercheTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "continentEtFr");
mediateur.obtenirListeValeurEtRafraichir(this, "continentEtFr", sequenceur);
typeRechercheTrukCp = creerChoixMultipleCp();
typeRechercheTrukCp.hide();
883,7 → 887,7
typeRechercheTrukCacGrpChp = new CheckBoxGroup();
typeRechercheTrukCacGrpChp.setFieldLabel("Et pour quelles recherches ?");
valorisationOnglet.add(typeRechercheTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "typeRecherche");
mediateur.obtenirListeValeurEtRafraichir(this, "typeRecherche", sequenceur);
sansMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("sans_motif_acces_mark", "ouiNon");
sansMotifAccesMarkRGrpChp.setFieldLabel("Peut-on consulter vos collections botaniques sans motif de recherches scientifiques ?");
953,19 → 957,19
localStockageTrukCacGrpChp.setFieldLabel("Avez vous des locaux spécifiques de stockage des collections botaniques ?");
localStockageTrukCp = creerChoixMultipleCp();
conservationOnglet.add(localStockageTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "localStockage");
mediateur.obtenirListeValeurEtRafraichir(this, "localStockage", sequenceur);
meubleStockageTrukCp = creerChoixMultipleCp();
meubleStockageTrukCacGrpChp = new CheckBoxGroup();
meubleStockageTrukCacGrpChp.setFieldLabel("Avez vous des meubles spécifiques au stockage des collections botaniques ?");
conservationOnglet.add(meubleStockageTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "meubleStockage");
mediateur.obtenirListeValeurEtRafraichir(this, "meubleStockage", sequenceur);
parametreStockageTrukCp = creerChoixMultipleCp();
parametreStockageTrukCacGrpChp = new CheckBoxGroup();
parametreStockageTrukCacGrpChp.setFieldLabel("Quels paramètres maîtrisez vous ?");
conservationOnglet.add(parametreStockageTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "parametreStockage");
mediateur.obtenirListeValeurEtRafraichir(this, "parametreStockage", sequenceur);
collectionCommuneMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_commune_mark", "ouiNon");
collectionCommuneMarkRGrpChp.setFieldLabel("Les collections botaniques sont-elles conservées avec d'autres collections dans les mêmes locaux (problème de conservation en commun) ?");
976,7 → 980,7
collectionAutreTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
collectionAutreTrukCp.hide();
conservationOnglet.add(collectionAutreTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "autreCollection");
mediateur.obtenirListeValeurEtRafraichir(this, "autreCollection", sequenceur);
accesControleMarkRGrpChp = creerChoixUniqueRadioGroupe("mark_acces_controle", "ouiNon");
accesControleMarkRGrpChp.setFieldLabel("L'accès à vos collections botanique est-il contrôlé (ex. : manipulation réservées à des personnes compétentes) ?");
991,7 → 995,7
opRestauTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
opRestauTrukCp.hide();
conservationOnglet.add(opRestauTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "opRestau");
mediateur.obtenirListeValeurEtRafraichir(this, "opRestau", sequenceur);
// Création d'un ContentPanel vide et du groupe de bouton radio
// Le groupe de bouton radio recevra les boutons au moment de la réception des données (rafraichir()) et ser à ce moment là ajouter au ContenetPanel
1000,7 → 1004,7
materielConservationCeRGrpChp = creerChoixUniqueRadioGroupe("materiel_conservation_ce", "onep");
materielConservationCeRGrpChp.setFieldLabel("Utilisez vous du matériel de conservation ?");
materielConservationCeRGrpChp.setToolTip(new ToolTipConfig("Matériel de conservation", "matériel spécialisé pour la conservation des archives ou du patrimoine fragile. Ce matériel possède des propriétés mécaniques et chimiques qui font qu'il résiste dans le temps et que sa dégradation n'entraîne pas de dommages sur le matériel qu'il aide à conserver. Exemples : papier neutre, papier gommé, etc..."));
mediateur.obtenirListeValeurEtRafraichir(this, "onep");
mediateur.obtenirListeValeurEtRafraichir(this, "onep", sequenceur);
autreMaterielTrukCp = creerChoixMultipleCp();
autreMaterielTrukCacGrpChp = new CheckBoxGroup();
1007,7 → 1011,7
autreMaterielTrukCacGrpChp.setFieldLabel("Si non, qu'utilisez vous comme matériel ?");
autreMaterielTrukCp.hide();
conservationOnglet.add(autreMaterielTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "autreMateriel");
mediateur.obtenirListeValeurEtRafraichir(this, "autreMateriel", sequenceur);
traitementMarkRGrpChp = creerChoixUniqueRadioGroupe("traitement_mark", "ouiNon");
traitementMarkRGrpChp.setFieldLabel("Réalisez vous actuellement des traitements globaux contre les insectes ?");
1018,7 → 1022,7
traitementTrukCacGrpChp = new CheckBoxGroup();
traitementTrukCacGrpChp.setFieldLabel("Si oui, lesquels ?");
conservationOnglet.add(traitementTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "insecteTraitement");
mediateur.obtenirListeValeurEtRafraichir(this, "insecteTraitement", sequenceur);
collectionAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_acquisition_mark", "ouiNon");
collectionAcquisitionMarkRGrpChp.setFieldLabel("Actuellement, vos collections botaniques s'accroissent-elles de nouvelles acquisitions ?");
1045,7 → 1049,7
poisonTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
poisonTraitementTrukCacGrpChp.setLabelSeparator("");
conservationOnglet.add(poisonTraitementTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "poisonTraitement");
mediateur.obtenirListeValeurEtRafraichir(this, "poisonTraitement", sequenceur);
insecteTraitementTrukCp = creerChoixMultipleCp();
insecteTraitementTrukCp.hide();
1054,7 → 1058,7
insecteTraitementTrukCacGrpChp.setLabelSeparator("");
insecteTraitementTrukCacGrpChp.setFieldLabel("Désinsectisation");
conservationOnglet.add(insecteTraitementTrukCp);
mediateur.obtenirListeValeurEtRafraichir(this, "insecteTraitement");
mediateur.obtenirListeValeurEtRafraichir(this, "insecteTraitement", sequenceur);
conservationOnglet.add(new Html("<br />"));
return conservationOnglet;
1174,7 → 1178,6
} else {
personnel.get(index).set("statut", personnel.get(index).getStatut().replaceFirst("AUTRE##", ""));
}
// Gestion de la specialite
if (((String) personnel.get(index).getSpecialite()).matches("^[0-9]+$")) {
// Author : Cyprien
1259,7 → 1262,7
fonctionsCombo.setEditable(true);
fonctionsCombo.setDisplayField("nom");
fonctionsCombo.setStore(fonctionsMagazin);
mediateur.obtenirListeValeurEtRafraichir(this, "fonction");
mediateur.obtenirListeValeurEtRafraichir(this, "fonction", sequenceur);
fonctionEditor = new CellEditor(fonctionsCombo) {
@Override
1355,7 → 1358,7
comboLiStatut.disableTextSelection(true);
comboLiStatut.setDisplayField("nom");
comboLiStatut.setStore(magazinLiStatut);
mediateur.obtenirListeValeurEtRafraichir(this, "statut");
mediateur.obtenirListeValeurEtRafraichir(this, "statut", sequenceur);
CellEditor statutEditor = new CellEditor(comboLiStatut) {
@Override
1517,10 → 1520,8
String etat = structureAPersonne.get("etat");
if (!etat.equals(aDonnee.ETAT_AJOUTE) && !UtilString.isEmpty(structureAPersonne.getId())) {
System.out.println("modifier");
ce.getModel().set("etat", aDonnee.ETAT_MODIFIE);
} else {
System.out.println("ajoute");
}
}
});
1564,7 → 1565,7
projetsMagazin = new ListStore<Projet>();
mediateur.selectionnerProjet(this, null);
mediateur.selectionnerProjet(this, null, sequenceur);
projetsCombo = new ComboBox<Projet>();
projetsCombo.setTabIndex(tabIndex++);
projetsCombo.setFieldLabel("Projet");
1689,7 → 1690,7
comboLstpu.setStore(magazinLstpu);
comboLstpu.hide();
droiteTs.add(comboLstpu, new FormData("95%"));
mediateur.obtenirListeValeurEtRafraichir(this, "stpu");
mediateur.obtenirListeValeurEtRafraichir(this, "stpu", sequenceur);
magazinLstpr = new ListStore<Valeur>();
comboLstpr = new ComboBox<Valeur>();
1702,7 → 1703,7
comboLstpr.setStore(magazinLstpr);
comboLstpr.hide();
droiteTs.add(comboLstpr, new FormData("95%"));
mediateur.obtenirListeValeurEtRafraichir(this, "stpr");
mediateur.obtenirListeValeurEtRafraichir(this, "stpr", sequenceur);
ligneTs.add(gaucheTs, new ColumnData(0.5));
ligneTs.add(droiteTs, new ColumnData(0.5));
1807,7 → 1808,7
droiteFdAdresse.add(comboPays, new FormData("95%"));
mediateur.obtenirListeValeurEtRafraichir(this, "pays");
mediateur.obtenirListeValeurEtRafraichir(this, "pays", sequenceur);
magazinRegion = new ListStore<Valeur>();
comboRegion = new ComboBox<Valeur>();
2283,6 → 2284,6
}
private void initialiserGrillePersonnelEnModification() {
mediateur.selectionnerStructureAPersonne(this, identification.getId(), StructureAPersonne.ROLE_EQUIPE);
mediateur.selectionnerStructureAPersonne(this, identification.getId(), StructureAPersonne.ROLE_EQUIPE, null);
}
}