Subversion Repositories eFlore/Applications.coel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1262 → Rev 1284

/trunk/src/org/tela_botanica/client/modeles/personne/Personne.java
217,6 → 217,17
}
return dateNaiss;
}
public String getAnneeOuDateNaiss() {
String valeurDateNaissance = get("naissance_date");
if (!UtilString.isEmpty(valeurDateNaissance) && valeurDateNaissance.endsWith("00-00")) {
valeurDateNaissance = valeurDateNaissance.substring(0, 4);
} else if (UtilString.isEmpty(valeurDateNaissance) && valeurDateNaissance.equals("0000-00-00")) {
valeurDateNaissance = "";
}
return valeurDateNaissance;
}
public void setNaissanceDate(Date naissanceDate) {
if (naissanceDate != null) {
this.set("naissance_date", DateTimeFormat.getFormat("yyyy-MM-dd").format(naissanceDate));
242,12 → 253,25
return false;
}
}
public String getDeces() {
return renvoyerValeurCorrecte("ce_deces");
}
public String getAnneeOuDateDeces() {
String valeurDateDeces = get("deces_date");
if (!UtilString.isEmpty(valeurDateDeces) && valeurDateDeces.endsWith("00-00")) {
valeurDateDeces = valeurDateDeces.substring(0, 4);
} else if (UtilString.isEmpty(valeurDateDeces) && valeurDateDeces.equals("0000-00-00")) {
valeurDateDeces = "";
}
return valeurDateDeces;
}
public void setDeces(String deces) {
set("ce_deces", deces);
}
public void setDeces(Date decesDate, String lieuDeces) {
set("ce_deces", ETRE_DECEDE);
setDecesDate(decesDate);
267,6 → 291,7
}
return dateDeces;
}
public void setDecesDate(Date decesDate) {
if (decesDate != null) {
this.set("deces_date", DateTimeFormat.getFormat("yyyy-MM-dd").format(decesDate));
/trunk/src/org/tela_botanica/client/modeles/personne/PersonneListe.java
125,7 → 125,7
 
public void selectionnerPersonne() {
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
mediateur.selectionnerPersonne(vueARafraichir, null, null, currentPage, nbElementsPage);
mediateur.selectionnerPersonne(vueARafraichir, null, mediateur.getProjetId(), currentPage, nbElementsPage);
}
 
public void filtrerParNom(String nom) {
/trunk/src/org/tela_botanica/client/modeles/structure/Structure.java
6,6 → 6,7
 
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.util.UtilString;
 
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.google.gwt.i18n.client.DateTimeFormat;
166,6 → 167,20
}
return dateFormatee;
}
public String getAnneOuDateFondationFormatLong() {
String dateFormatee = "";
String dateFondation = renvoyerValeurCorrecte("date_fondation");
if (!dateFondation.equals("")) {
if (dateFondation.endsWith("00-00")) {
dateFormatee = dateFondation.substring(0, 4);
} else {
Date date = DateTimeFormat.getFormat("yyyy-MM-dd").parse(dateFondation);
dateFormatee = DateTimeFormat.getLongDateFormat().format(date);
}
}
return dateFormatee;
}
public Date getDateFondation() {
Date fondationDate = null;
String fondationChaine = renvoyerValeurCorrecte("date_fondation");
174,6 → 189,17
}
return fondationDate;
}
public String getAnneeOuDateFondation() {
String valeurDateFondation = get("date_fondation");
if (!UtilString.isEmpty(valeurDateFondation) && valeurDateFondation.endsWith("00-00")) {
valeurDateFondation = valeurDateFondation.substring(0, 4);
} else if (UtilString.isEmpty(valeurDateFondation) && valeurDateFondation.equals("0000-00-00")) {
valeurDateFondation = "";
}
return valeurDateFondation;
}
public void setDateFondation(Date dateFondation) {
if (dateFondation != null) {
this.set("date_fondation", DateTimeFormat.getFormat("yyyy-MM-dd").format(dateFondation));
/trunk/src/org/tela_botanica/client/modeles/structure/StructureListe.java
116,7 → 116,7
public void selectionnerStructure() {
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
mediateur.selectionnerStructure(vueARafraichir, null, null, null, currentPage, nbElementsPage);
mediateur.selectionnerStructure(vueARafraichir, null, mediateur.getProjetId(), null, currentPage, nbElementsPage);
}
public void filtrerParNom(String nom) {
/trunk/src/org/tela_botanica/client/modeles/projet/ProjetListe.java
120,7 → 120,7
public void selectionnerStructure() {
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
mediateur.selectionnerProjet(vueARafraichir, null, null, currentPage, nbElementsPage);
mediateur.selectionnerProjet(vueARafraichir, mediateur.getProjetId(), null, currentPage, nbElementsPage);
}
public void filtrerParNom(String nom) {
/trunk/src/org/tela_botanica/client/modeles/publication/PublicationListe.java
113,7 → 113,7
public void selectionnerPublication() {
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
mediateur.selectionnerPublication(vueARafraichir, null, null, null, currentPage, nbElementsPage);
mediateur.selectionnerPublication(vueARafraichir, mediateur.getProjetId(), null, null, currentPage, nbElementsPage);
}
public void filtrerParNom(String nom) {
/trunk/src/org/tela_botanica/client/i18n/Constantes.java
505,10 → 505,12
String personneCourriel();
String personneLogos();
 
String personneBiographie();
String personneSpecialite();
String personneRecolte();
String personneInfoNat();
String tabPublications();
String personneProjet();
// +---------------------------------------------------------------------------------------------------------------+
/trunk/src/org/tela_botanica/client/i18n/Constantes.properties
518,9 → 518,11
personneCourriel = Courriel
 
personneInfoNat = Informations Naturalistes
tabPublications = Publications liées
personneProjet = Projet
personneLogos = Images
 
personneBiographie = Biographie
personneSpecialite = Spécialité
personneRecolte = Recolte
 
/trunk/src/org/tela_botanica/client/vues/structure/StructureDetailVue.java
184,7 → 184,7
identificationParams.set("acronyme", acronyme);
identificationParams.set("statut", typePrive+typePublic);
identificationParams.set("date_fondation", structure.getDateFondationFormatLong());
identificationParams.set("date_fondation", structure.getAnneOuDateFondationFormatLong());
identificationParams.set("nbre_personnel", structure.getNbrePersonne());
identificationParams.set("description", structure.getDescription());
199,9 → 199,9
identificationParams.set("pays", pays);
identificationParams.set("latitude_longitude", latitudeLongitude);
//FIXME identificationParams.set("tel", structure.getTelephoneFixe());
identificationParams.set("tel", structure.getTelephoneFixe());
identificationParams.set("fax", structure.getFax());
//identificationParams.set("fax", structure.getFax());
identificationParams.set("courriel", structure.getCourriel());
identificationParams.set("web", web);
/trunk/src/org/tela_botanica/client/vues/structure/StructureForm.java
1,6 → 1,7
package org.tela_botanica.client.vues.structure;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
 
33,6 → 34,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.Events;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.event.BaseEvent;
118,7 → 120,7
private TextField<String> mnhnChp = null;
private ComboBox<InterneValeur> comboTypeStructure = null;
private TextField<String> nomStructureChp = null;
private DateField dateFondationChp = null;
private TextField<String> dateFondationChp = null;
private TextArea descriptionChp = null;
private TextArea conditionAccesChp = null;
private TextArea conditionUsageChp = null;
342,6 → 344,13
}
}
 
//Vérification de la date de fondation
String valeurDateFondation = dateFondationChp.getValue();
if (!UtilString.isEmpty(valeurDateFondation) && (!valeurDateFondation.matches("\\d{2}/\\d{2}/\\d{4}") &&
!valeurDateFondation.matches("\\d{4}"))) {
messages.add("La date de fondation n'est pas au format jj/MM/AAAA ou AAAA");
}
// Affichage des messages d'alerte
if (messages.size() != 0) {
String[] a = {};
349,6 → 358,7
MessageBox.alert("Erreurs de saisies", UtilArray.implode(a, "\n\n"), null);
return false;
}
return true;
}
662,8 → 672,17
structureCollectee.setTypePrive(comboLstpr.getValue().getId());
}
}
structureCollectee.setDateFondation(dateFondationChp.getValue());
String valeurDateFondation = dateFondationChp.getValue();
if (!UtilString.isEmpty(valeurDateFondation)) {
if (valeurDateFondation.matches("\\d{2}/\\d{2}/\\d{4}")) {
Date dateFondation = DateTimeFormat.getFormat("dd/MM/yyyy").parse(valeurDateFondation);
structureCollectee.setDateFondation(dateFondation);
} else if (valeurDateFondation.matches("\\d{4}")) {
structureCollectee.setDateFondation(valeurDateFondation + "-00-00");
}
}
structureCollectee.setDescription(descriptionChp.getValue());
structureCollectee.setConditionAcces(conditionAccesChp.getValue());
structureCollectee.setConditionUsage(conditionUsageChp.getValue());
757,8 → 776,17
comboLstpu.setValue(comboLstpu.getStore().findModel("id_valeur", identification.getTypePublic()));
}
}
dateFondationChp.setValue(identification.getDateFondation());
String dateFondation = identification.getAnneeOuDateFondation();
if (!dateFondation.equals("")) {
if (dateFondation.endsWith("00-00")) {
dateFondationChp.setValue(dateFondation.substring(0, 4));
} else {
Date date = DateTimeFormat.getFormat("yyyy-MM-dd").parse(dateFondation);
dateFondationChp.setValue(DateTimeFormat.getFormat("dd/MM/yyyy").format(date));
}
}
descriptionChp.setValue(identification.getDescription());
conditionAccesChp.setValue(identification.getConditionAcces());
conditionUsageChp.setValue(identification.getConditionUsage());
1196,7 → 1224,7
ContentPanel cp = new ContentPanel();
cp.setHeading("Personnes travaillant sur les collections");
cp.setIcon(Images.ICONES.table());
//cp.setScrollMode(Scroll.AUTO);
cp.setScrollMode(Scroll.AUTO);
cp.setLayout(new FitLayout());
//cp.setWidth(1250);
//cp.setHeight("100%");
1680,12 → 1708,9
ligneTs.add(droiteTs, new ColumnData(0.5));
fieldSetIdentite.add(ligneTs);
dateFondationChp = new DateField();
dateFondationChp = new TextField();
dateFondationChp.setTabIndex(tabIndex++);
dateFondationChp.setFieldLabel("Date de fondation");
dateFondationChp.getPropertyEditor().getFormat();
dateFondationChp.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
dateFondationChp.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");
fieldSetIdentite.add(dateFondationChp);
nbreTotalPersonneStructureChp = new NumberField();
/trunk/src/org/tela_botanica/client/vues/publication/PublicationForm.java
6,11 → 6,13
 
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.composants.InfoLogger;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.composants.InfoLogger;
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;
import org.tela_botanica.client.modeles.projet.Projet;
24,27 → 26,58
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilArray;
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.FenetreForm;
import org.tela_botanica.client.vues.Formulaire;
import org.tela_botanica.client.vues.FormulaireBarreValidation;
import org.tela_botanica.client.vues.personne.PersonneForm;
 
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;
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;
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;
import com.extjs.gxt.ui.client.widget.Text;
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.Field;
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.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;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
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 {
52,13 → 85,12
private Publication publication;
private PersonneListe auteursInitialListe = null;
private static boolean publicationAPersonneListeChargementOk = false;
private PublicationAPersonneListe auteursAjoutes = null;
private PublicationAPersonneListe auteursSupprimes = null;
private PersonneListe auteursAjoutes = null;
private PersonneListe auteursSupprimes = null;
private FieldSet auteursFieldset = null;
private LayoutContainer auteursFieldset = null;
private ComboBox<Projet> projetsCombo = null;
private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
private LayoutContainer conteneurChamps;
private ListStore<Personne> auteursStorePartage = null;
private static boolean auteurStorePartageChargementOk = false;
82,7 → 114,23
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;
public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
initialiserPublicationForm(mediateurCourrant, publicationId);
}
93,6 → 141,7
}
private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
auteursInitialListe = new PersonneListe();
initialiserValidation();
initialiserAffichageAuteurs();
102,18 → 151,24
String modeDeCreation = (UtilString.isEmpty(publication.getId()) ? 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.setLayout(new FlowLayout());
panneauFormulaire.add(zoneHaut, new RowData(1, 0.3));
panneauFormulaire.add(zoneBas, new RowData(1, 0.5));
panneauFormulaire.setScrollMode(Scroll.AUTO);
genererTitreFormulaire();
creerZoneAuteurs();
panneauFormulaire.add(auteursFieldset);
zoneHaut.add(auteursFieldset);
creerZoneGeneralites();
panneauFormulaire.add(generalitesFieldset);
zoneBas.add(generalitesFieldset);
creerZoneEdition();
panneauFormulaire.add(editionFieldset);
zoneBas.add(editionFieldset);
if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
mediateurCourrant.selectionnerPublication(this, publicationId);
121,30 → 176,323
}
}
public void actualiserEtatBoutonsBarreOutils() {
// Activation des boutons si la grille contient un élément
if (grille.getStore().getCount() > 0) {
personnesBoutonSupprimer.enable();
personnesBoutonModifier.enable();
}
// Désactivation des boutons si la grille ne contient plus d'élément
if (grille.getStore().getCount() == 0) {
personnesBoutonSupprimer.disable();
personnesBoutonModifier.disable();
}
}
private ToolBar creerBarreOutilsGrille() {
ToolBar barreOutils = new ToolBar();
Button ajouterBouton = creerBoutonAjouter();
barreOutils.add(ajouterBouton);
barreOutils.add(new Text(" ou "));
personnesSaisiesComboBox = creerComboBoxPersonnesSaisies();
barreOutils.add(personnesSaisiesComboBox);
barreOutils.add(new SeparatorToolItem());
personnesBoutonModifier = creerBoutonModifier();
barreOutils.add(personnesBoutonModifier);
barreOutils.add(new SeparatorToolItem());
personnesBoutonSupprimer = creerBoutonSupprimer();
barreOutils.add(personnesBoutonSupprimer);
barreOutils.add(new SeparatorToolItem());
Button rafraichirBouton = creerBoutonRafraichir();
barreOutils.add(rafraichirBouton);
return barreOutils;
}
 
private Button creerBoutonAjouter() {
Button bouton = new Button(i18nC.ajouter());
bouton.setIcon(Images.ICONES.vcardAjouter());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
fenetreFormulaire.show();
}
});
return bouton;
}
private Button creerBoutonModifier() {
Button bouton = new Button(i18nC.modifier());
bouton.setIcon(Images.ICONES.vcardModifier());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
if (personneSaisieSelectionnee == null) {
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
} else {
fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
fenetreFormulaire.show();
}
}
});
return bouton;
}
private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
String personneId = null;
if (mode.equals(Formulaire.MODE_MODIFIER)) {
Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
personneId = personneSaisieSelectionnee.getId();
}
final FenetreForm fenetre = new FenetreForm("");
final PersonneForm formulaire = creerFormulairePersonne(fenetre, personneId);
fenetre.add(formulaire);
return fenetre;
}
private PersonneForm creerFormulairePersonne(final FenetreForm fenetre, final String personneId) {
PersonneForm formulairePersonne = new PersonneForm(mediateur, personneId, this);
FormPanel panneauFormulaire = formulairePersonne.getFormulaire();
fenetre.setHeading(panneauFormulaire.getHeading());
panneauFormulaire.setHeaderVisible(false);
panneauFormulaire.setTopComponent(null);
// FIXME : avec GXT-2.1.0 la redéfinition du bottom component ne marche plus. Nous le cachons et en créeons un dans la fenêtre.
panneauFormulaire.getBottomComponent().hide();
SelectionListener<ButtonEvent> ecouteur = creerEcouteurValidationFormulairePersonne(fenetre, formulairePersonne);
final ButtonBar barreValidation = new FormulaireBarreValidation(ecouteur);
fenetre.setBottomComponent(barreValidation);
return formulairePersonne;
}
private SelectionListener<ButtonEvent> creerEcouteurValidationFormulairePersonne(final FenetreForm fenetre, final PersonneForm formulaire) {
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String code = ((Button) ce.getComponent()).getData("code");
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
if (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)) {
fenetreFormulaire.hide();
fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(formulaire.mode);
fenetreFormulaire.show();
}
}
};
return ecouteur;
}
private Button creerBoutonSupprimer() {
Button bouton = new Button(i18nC.supprimer());
bouton.setIcon(Images.ICONES.vcardSupprimer());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
if (personneSaisieSelectionnee == null) {
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
} else {
supprimerDansGrille(personneSaisieSelectionnee);
}
}
});
return bouton;
}
private Button creerBoutonRafraichir() {
Button bouton = new Button(i18nC.rafraichir());
bouton.setIcon(Images.ICONES.rafraichir());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
actualiserGrille();
}
});
return bouton;
}
private void actualiserGrille() {
if (mode.equals(Formulaire.MODE_MODIFIER)) {
// FIXME : c'est la merde
//mediateur.selectionner(this, null, personneSelectionnee.getId(), "%");
} else {
grille.getStore().removeAll();
layout();
}
}
private ComboBox<Personne> creerComboBoxPersonnesSaisies() {
ListStore<Personne> personnesSaisiesStore = new ListStore<Personne>();
ComboBox<Personne> comboBox = new ComboBox<Personne>();
comboBox.setWidth(400);
comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
comboBox.setTriggerAction(TriggerAction.ALL);
comboBox.setEditable(true);
comboBox.setDisplayField("fmt_nom_complet");
comboBox.setStore(personnesSaisiesStore);
comboBox.addKeyListener(new KeyListener() {
public void componentKeyUp(ComponentEvent ce) {
if (personnesSaisiesComboBox.getRawValue() != null && personnesSaisiesComboBox.getRawValue().length() > 0) {
if (!ce.isNavKeyPress()) {
obtenirPersonnesSaisies(personnesSaisiesComboBox.getRawValue());
}
}
}
});
comboBox.addListener(Events.Select, new Listener<BaseEvent>() {
public void handleEvent(BaseEvent be) {
if (personnesSaisiesComboBox.getValue() instanceof Personne) {
// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
Personne personneSaisieSelectionne = personnesSaisiesComboBox.getValue();
if (grille.getStore().findModel(personneSaisieSelectionne) != null) {
Info.display("Information", "La personne est déjà présente dans la liste d'auteurs");
} else {
if (!auteursInitialListe.containsValue(personneSaisieSelectionne)) {
auteursAjoutes.put(personneSaisieSelectionne.getId(), personneSaisieSelectionne);
}
ajouterDansGrille(personneSaisieSelectionne);
personnesSaisiesComboBox.setValue(null);
}
}
}
});
return comboBox;
}
private void obtenirPersonnesSaisies(String nom) {
mediateur.selectionnerPersonneParNomComplet(this, null, nom+"%");
}
private void ajouterDansGrille(Personne personne) {
ajouterDansGrille(personne, 0);
}
private void ajouterDansGrille(Personne personne, int index) {
if (personne != null) {
if (!grille.getStore().contains(personne)) {
//1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter
if (!auteursInitialListe.containsValue(personne)) {
auteursAjoutes.put(personne.getId(), personne);
}
// L'enlever de la liste à supprimer
if (auteursSupprimes.containsValue(personne)) {
auteursSupprimes.remove(personne);
}
//2) Ajouter a la grille
grille.getStore().insert(personne, index);
grille.getSelectionModel().select(index, false);
} else {
InfoLogger.display("Information", "La personne choisie existe déjà dans la liste.");
}
}
}
/**
* Met à jour la grille avec les informations contenus dans la variable listePublicationsLiees
*/
private void mettreAJourGrille() {
 
grille.getStore().removeAll();
grille.getStore().add(listePersonne.toList());
}
private void supprimerDansGrille(Personne personne) {
if (personne != null) {
//1) Ajouter a la liste des personne à supprimer uniquement si est présente dans la liste initiale
if (auteursInitialListe.containsValue(personne)) {
auteursSupprimes.put(personne.getId(), personne);
}
if (auteursAjoutes.containsValue(personne)) {
auteursAjoutes.remove(personne);
}
//2) Supprimer la personne de la liste
grille.getStore().remove(personne);
} else {
Info.display("Information", "Vous devez sélectionner une personne");
}
}
private EditorGrid<Personne> creerGrille() {
ListStore<Personne> storeGrille = new ListStore<Personne>();
storeGrille.addListener(Store.Add, new Listener<StoreEvent<Personne>>() {
public void handleEvent(StoreEvent<Personne> ce) {
actualiserEtatBoutonsBarreOutils();
}
});
storeGrille.addListener(Store.Remove, new Listener<StoreEvent<Personne>>() {
public void handleEvent(StoreEvent<Personne> ce) {
actualiserEtatBoutonsBarreOutils();
}
});
storeGrille.addListener(Store.Update, new Listener<StoreEvent<Personne>>() {
public void handleEvent(StoreEvent<Personne> ce) {
if (ce.getRecord().isModified("_role_") && !ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE);
}
}
});
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
colonnes.add(new ColumnConfig("fmt_nom_complet", i18nC.personneNomComplet(), 150));
colonnes.add(new ColumnConfig("code_postal", i18nC.personneCodePostal(), 150));
colonnes.add(new ColumnConfig("ville", i18nC.personneVille(), 75));
colonnes.add(new ColumnConfig("truk_courriel", i18nC.personneCourriel(), 75));
GridSelectionModel<Personne> modeleDeSelection = new GridSelectionModel<Personne>();
ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
EditorGrid<Personne> grillePublications = new EditorGrid<Personne>(storeGrille, modeleDeColonnes);
grillePublications.setHeight("100%");
grillePublications.setBorders(true);
grillePublications.setSelectionModel(modeleDeSelection);
grillePublications.getView().setForceFit(true);
grillePublications.setAutoExpandColumn("fmt_nom_complet");
grillePublications.setStripeRows(true);
grillePublications.setTrackMouseOver(true);
return grillePublications;
}
private void genererTitreFormulaire() {
String titre = i18nC.publicationTitreFormAjout();
if (mode.equals(Formulaire.MODE_MODIFIER)) {
titre = i18nC.publicationTitreFormModif();
if (publication != null) {
titre += " - "+i18nC.id()+": "+publication.getId();
titre += " - "+i18nC.id()+": "+publication.getId()+" - "+publication.getObjetDeLaPublication();
}
}
panneauFormulaire.setHeading(titre);
}
 
private void creerZoneAuteurs() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(200);
// Fieldset Auteur
auteursFieldset = new FieldSet();
auteursFieldset.setHeading(i18nC.publicationAuteursTitre());
auteursFieldset.setCollapsible(true);
auteursFieldset.setLayout(layout);
Debug.log("Dans creerZoneAuteurs");
auteursFieldset = new LayoutContainer(new FitLayout());
auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
auteursStorePartage = new ListStore<Personne>();
mediateur.clicObtenirListeAuteurs(this);
creerChampsAuteur();
152,23 → 500,15
private void creerChampsAuteur() {
auteursFieldset.removeAll();
conteneurChamps = new LayoutContainer();
Button ajouterAuteurBouton = new Button(i18nC.publicationAuteurBoutonAjouter());
ajouterAuteurBouton.setIcon(Images.ICONES.ajouter());
ajouterAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
creerChampAuteurEtBoutonSupprimer(null);
}
});
auteursFieldset.add(conteneurChamps);
auteursFieldset.add(ajouterAuteurBouton);
barreOutils = creerBarreOutilsGrille();
panneauFormulaire.setTopComponent(barreOutils);
grille = creerGrille();
auteursFieldset.add(grille);
auteursFieldset.layout();
}
public void creerChampAuteurEtBoutonSupprimer(Personne auteur) {
final HorizontalPanel panneauHorizontal = new HorizontalPanel();
/*final HorizontalPanel panneauHorizontal = new HorizontalPanel();
 
LayoutContainer panneauChampTxt = new LayoutContainer();
panneauChampTxt.setLayout(new FormLayout());
204,7 → 544,7
panneauHorizontal.add(supprimerAuteurBouton);
 
conteneurChamps.add(panneauHorizontal);
auteursFieldset.layout();
auteursFieldset.layout();*/
}
private ComboBox<Personne> creerComboBoxAuteursSaisis() {
356,7 → 696,6
}
if (etrePretAPeupler()) {
Debug.log("Entrain de peupler");
peuplerFormulaire();
genererTitreFormulaire();
initialiserPeupler();
363,7 → 702,6
}
if (avoirAuteursMiseAJourCorrectement()) {
Debug.log("Mise à jour liste auteur");
miseAJourAuteursInitialListe();
initialiserAuteurs();
auteursValideOk = true;
379,13 → 717,13
private void miseAJourAuteursInitialListe() {
Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
while (clesAjoutees.hasNext()) {
Personne auteurAjoute = auteursAjoutes.get(clesAjoutees.next()).getPersonne();
Personne auteurAjoute = auteursAjoutes.get(clesAjoutees.next());
auteursInitialListe.put(auteurAjoute.getId(), auteurAjoute);
}
Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
while (clesSupprimees.hasNext()) {
Personne auteurSupprime = auteursSupprimes.get(clesSupprimees.next()).getPersonne();
Personne auteurSupprime = auteursSupprimes.get(clesSupprimees.next());
auteursInitialListe.remove(auteurSupprime.getId());
}
}
407,13 → 745,18
Personne auteur = auteurs.get(it.next()).getPersonne();
auteursInitialListe.put(auteur.getId(), auteur);
}
Debug.log("Réception liste des auteurs : "+auteurs.size());
grille.getStore().removeAll();
grille.getStore().add(auteursInitialListe.toList());
publicationAPersonneListeChargementOk = true;
}
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) {
422,38 → 765,42
publication.setId(publicationId);
}
}
attenteAjoutAuteursOk = true;
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
attenteAjoutAuteursOk = true;
}
soumettreAuteurs();
}
if (info.getType().equals("liste_personne")) {
PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
List<Personne> liste = listePersonneAuteur.toList();
/*List<Personne> liste = listePersonneAuteur.toList();
auteursStorePartage.removeAll();
auteursStorePartage.add(liste);
Debug.log("Reception nouvelle liste auteurs");
auteurStorePartageChargementOk = true;
auteurStorePartageChargementOk = true;*/
ListStore store = personnesSaisiesComboBox.getStore();
store.removeAll();
store.add(listePersonneAuteur.toList());
} else if (info.getType().equals("ajout_publication_a_personne")) {
attenteAjoutAuteursOk = false;
Debug.log("attenteAjoutAuteursOk");
} else if (info.getType().equals("suppression_publication_a_personne")) {
attenteSuppressionAuteursOk = false;
Debug.log("attenteSuppressionAuteursOk");
} else if (info.getType().equals("modif_publication")) {
Info.display("Modification d'une publication", info.toString());
InfoLogger.display("Modification d'une publication", info.toString());
} else if (info.getType().equals("ajout_publication")) {
if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String && ((String) info.getDonnee(0)).matches("[0-9]+")) {
String publicationId = (String) info.getDonnee(0);
Info.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
} else {
Info.display("Ajout d'une publication", info.toString());
InfoLogger.display("Ajout d'une publication", info.toString());
}
}
}
}
private boolean avoirAuteursMiseAJourCorrectement() {
boolean ok = false;
if (attenteAjoutAuteursOk == false && attenteSuppressionAuteursOk == false) {
ok = true;
496,8 → 843,7
private boolean etrePretAPeupler() {
boolean ok = false;
Debug.log("Mode :"+mode.equals(Formulaire.MODE_MODIFIER)+" - PublicationOk :"+publicationOk+" - AuteursAffiches :"+auteursAffiches);
if (mode.equals(Formulaire.MODE_MODIFIER) && publicationOk && auteursAffiches && editeursOk) {
if (mode.equals(Formulaire.MODE_MODIFIER) && publicationOk && editeursOk) {
ok = true;
}
return ok;
505,8 → 851,7
private Boolean etreValide() {
Boolean valide = false;
//Debug.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null);
if (formulaireValideOk && publicationValideOk && auteursValideOk) {
if (formulaireValideOk && auteursValideOk) {
valide = true;
}
return valide;
521,9 → 866,9
private void initialiserAuteurs() {
attenteAjoutAuteursOk = true;
auteursAjoutes = new PublicationAPersonneListe();
auteursAjoutes = new PersonneListe();
attenteSuppressionAuteursOk = true;
auteursSupprimes = new PublicationAPersonneListe();
auteursSupprimes = new PersonneListe();
}
private void repandreRafraichissement() {
542,7 → 887,7
formulaireValideOk = verifierFormulaire();
if (formulaireValideOk) {
soumettrePublication();
soumettreAuteurs();
//Les auteurs seront mis à jour lors du rafraichissement
}
return formulaireValideOk;
}
562,6 → 907,46
attenteAjoutAuteursOk = false;
attenteSuppressionAuteursOk = false;
//1) Auteurs ajoutés :
// - Créer une PublicationAAuteurListe
PublicationAPersonneListe listeDesAuteurs = new PublicationAPersonneListe();
Iterator<String> itAuteur = auteursAjoutes.keySet().iterator();
while (itAuteur.hasNext()) {
PublicationAPersonne publiAPersonne = new PublicationAPersonne();
String cle = itAuteur.next();
publiAPersonne.setIdPersonne(cle);
publiAPersonne.setIdPublication(publication.getId());
listeDesAuteurs.put(cle, publiAPersonne);
}
// - envoyer au mediateur SSI personnes à ajouter
if (listeDesAuteurs.size() > 0) {
mediateur.ajouterPublicationAPersonne(this, publication.getId(), listeDesAuteurs, PublicationAPersonne.ROLE_AUTEUR);
attenteAjoutAuteursOk = true;
}
//2) Auteurs supprimés :
// - Créer une PublicationAPersonneListe
listeDesAuteurs = new PublicationAPersonneListe();
itAuteur = auteursSupprimes.keySet().iterator();
while (itAuteur.hasNext()) {
PublicationAPersonne publiAPersonne = new PublicationAPersonne();
String cle = itAuteur.next();
publiAPersonne.setIdPersonne(cle);
publiAPersonne.setIdPublication(publication.getId());
listeDesAuteurs.put(cle, publiAPersonne);
}
// - Envoyer au médiateur SSI personnes à supprimer
if (listeDesAuteurs.size() > 0) {
mediateur.supprimerPublicationAPersonne(this, listeDesAuteurs);
attenteSuppressionAuteursOk = true;
}
/*
attenteAjoutAuteursOk = false;
attenteSuppressionAuteursOk = false;
PersonneListe personnesInitiales = auteursInitialListe;
PersonneListe personnesActuelles = new PersonneListe();
590,7 → 975,7
}
publicationAAuteur.setPersonne(personne);
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur);
//FIXME : auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur);
attenteAjoutAuteursOk = true;
}
}
606,7 → 991,7
publicationAAuteur.setIdPublication(publication.getId());
publicationAAuteur.setPersonne(personne);
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
auteursSupprimes.put(publicationAAuteur.getId(), publicationAAuteur);
//FIXME : auteursSupprimes.put(publicationAAuteur.getId(), publicationAAuteur);
attenteSuppressionAuteursOk = true;
}
}
615,14 → 1000,13
// Execution de les mise à jour pour le mode MODIFICATION
if (mode.equals(Formulaire.MODE_MODIFIER)) {
if (auteursAjoutes != null && auteursAjoutes.size() != 0) {
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
//FIXME : mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
}
if (auteursSupprimes != null && auteursSupprimes.size() != 0) {
mediateur.supprimerPublicationAPersonne(this, auteursSupprimes);
//FIXME : mediateur.supprimerPublicationAPersonne(this, auteursSupprimes);
}
}
Debug.log("personnesInitiales:"+personnesInitiales.size()+" - personnesActuelles :"+personnesActuelles.size()+" - auteursSupprimes :"+auteursSupprimes.size()+" - auteursAjoutes :"+auteursAjoutes.size());
}*/
}
public boolean verifierFormulaire() {
629,16 → 1013,10
boolean valide = true;
ArrayList<String> messages = new ArrayList<String>();
boolean auteurErreur = true;
for (int i = 0; i < auteurComboboxListe.size(); i++) {
if (auteurComboboxListe.get(i).getValue() != null) {
auteurErreur = false;
break;
}
// Tester si au moins un auteur est présent
if (grille.getStore().getModels().size() == 0) {
messages.add("Veuillez saisir au moins un auteur.");
}
if (auteurErreur) {
messages.add("Veuillez saisir au moins un auteur !");
}
String titre = titreChp.getValue();
if (titre == null || titre.equals("")) {
692,10 → 1070,9
}
private Publication collecterPublication() {
Publication publicationCollectee = (Publication) publication.cloner(new Publication());
publicationCollectee.setIdProjet(getValeurComboProjets());
publicationCollectee.setAuteur(construireIntituleAuteur());
String titre = titreChp.getValue();
749,8 → 1126,23
}
private String construireIntituleAuteur() {
String inituleAuteur = "";
int auteursNombre = auteurComboboxListe.size();
String intituleAuteur = "";
// TODO : ranger par ordre non-alphabétique
grille.getStore().sort("nom", SortDir.ASC);
List<Personne> auteurs = grille.getStore().getModels();
Iterator<Personne> itAuteurs = auteurs.iterator();
while (itAuteurs.hasNext()) {
Personne personneCourante = itAuteurs.next();
intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
if (itAuteurs.hasNext()) {
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();
759,8 → 1151,8
inituleAuteur += ", ";
}
}
}
return inituleAuteur;
}*/
return intituleAuteur;
}
private String construireNomComplet() {
/trunk/src/org/tela_botanica/client/vues/Formulaire.java
93,7 → 93,8
panneauFormulaire.setCollapsible(false);
panneauFormulaire.setButtonAlign(HorizontalAlignment.CENTER);
panneauFormulaire.setLayout(new FitLayout());
 
panneauFormulaire.setPadding(0);
if (modeDeCreation.equals(MODE_AJOUTER)) {
panneauFormulaire.setIcon(Images.ICONES.formAjouter());
} else if (modeDeCreation.equals(MODE_AJOUTER)) {
/trunk/src/org/tela_botanica/client/vues/personne/PersonneDetailVue.java
4,7 → 4,7
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.MissingResourceException;
import java.util.List;
 
import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.Mediateur;
14,7 → 14,9
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.util.Debug;
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.vues.DetailVue;
 
import com.extjs.gxt.ui.client.Registry;
41,7 → 43,8
private TabItem tabAdresse;
private TabItem tabInfosNat;
private TabItem tabLogos;
 
private TabItem tabPublications;
private HashMap hmLabelFieldRegion = new HashMap();
private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
48,10 → 51,14
private boolean ontologieRecue = false;
private Personne personneAAfficher = null;
 
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");
}
58,8 → 65,6
public PersonneDetailVue(Mediateur mediateur) {
super(mediateur);
chargerOntologie();
mediateur.obtenirListeValeurEtRafraichir(this, "pays");
 
setLayout(new FitLayout());
 
83,6 → 88,11
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());
tabLogos = new TabItem(i18nC.personneLogos());
tabLogos.setScrollMode(Scroll.AUTO);
tabLogos.setLayout(new FlowLayout());
94,6 → 104,7
tabPanel.add(tabIdentite);
tabPanel.add(tabAdresse);
tabPanel.add(tabInfosNat);
tabPanel.add(tabPublications);
tabPanel.add(tabLogos);
 
panneauPrincipal.add(tabPanel);
103,6 → 114,9
public void afficherDetailPersonne(Personne personne) {
if (personne != null) {
String tplEntete = initialiserTplEntete();
//Sélection des publication à personne
mediateur.selectionnerPublicationAPersonne(this, null, personne.getId(), new LinkedList());
 
Params enteteParams = new Params();
enteteParams.set("nom", (String) personne.get("fmt_nom_complet"));
140,7 → 154,7
Params tabIdentiteParams = new Params();
tabIdentiteParams.set("nom_complet", personne.getString("fmt_nom_complet"));
tabIdentiteParams.set("abreviation", personne.getString("abreviation"));
tabIdentiteParams.set("naissance_date", personne.getNaissanceDate());
tabIdentiteParams.set("naissance_date", personne.getAnneeOuDateNaiss().equals("") ? mediateur.i18nC.inconnue() : personne.getAnneeOuDateNaiss());
tabIdentiteParams.set("naissance_lieu", personne.getString("naissance_lieu"));
String tplDeces = "";
if (personne.estDecedee()) {
152,7 → 166,7
+ i18nC.personneLieuDeces()
+ ":</b></span> {deces_lieu}<br /><br />";
tabIdentiteParams.set("deces_date", personne.getDecesDate());
tabIdentiteParams.set("deces_date", personne.getAnneeOuDateDeces().equals("") ? mediateur.i18nC.inconnue() : personne.getAnneeOuDateDeces());
tabIdentiteParams.set("deces_lieu", personne.getString("deces_lieu"));
}
242,14 → 256,16
// Infos naturalistes :Biographie, Spécialité (typé)
String tplInfosNat = "<div class='{css_corps}'>"
+ " <div class='{css_fieldset}'>" + " <h2>"
+ i18nC.personneSpecialite() + "</h1>"
+ " {specialites}" + " <h2>"
+ i18nC.personneBiographie() + "</h2>"
+ " {biographie}" + " "
+ "<h2>" + i18nC.personneSpecialite() + "</h2>"
+ " {specialites}" + " <h2>"
+ i18nC.personneRecolte() + "</h2>"
+ " {recoltes}" + " </div>" + "</div>";
Params prmInfosNat = new Params();
 
// TODO : replace id region par valeur
 
prmInfosNat.set("biographie", personne.get("biographie"));
String specialite = construireTxtTruck(personne.getSpecialite());
prmInfosNat.set("specialites", specialite);
 
326,10 → 342,103
}
}
private void initialiserTableauPublicationsLieesTpl() {
tableauPublicationsLieesTpl =
"<div class='{css_corps}'>" +
" <h2>{i18n_titre_publication}</h2>"+
" <table>"+
" <thead>"+
" <tr>" +
" <th>{i18n_relation}</th>" +
" <th>{i18n_auteur}</th>" +
" <th>{i18n_titre}</th>" +
" <th>{i18n_revue}</th>" +
" <th>{i18n_editeur}</th>" +
" <th>{i18n_annee}</th>" +
" <th>{i18n_nvt}</th>" +
" <th>{i18n_fascicule}</th>" +
" <th>{i18n_page}</th>" +
" </tr>"+
" </thead>"+
" <tbody>"+
" {lignes}"+
" </tbody>"+
"</table>";
}
private void initialiserLignePublicationLieeTpl() {
lignePublicationLieeTpl =
"<tr>"+
" <td>{relation}</td>"+
" <td>{auteur}</td>"+
" <td>{titre}</td>"+
" <td>{revue}</td>"+
" <td>{editeur}</td>"+
" <td>{annee}</td>"+
" <td>{nvt}</td>"+
" <td>{fascicule}</td>"+
" <td>{page}</td>"+
"</tr>";
}
/**
* @author greg
* Rempli l'onglet des publications liées
* @param listePublications la liste des publications
*/
private void afficherPublications(PublicationAPersonneListe listePublications) {
List<PublicationAPersonne> publicationsLiees = listePublications.toList();
Iterator<PublicationAPersonne> iterateur = publicationsLiees.iterator();
//Onglet Publications
initialiserTableauPublicationsLieesTpl();
Params paramsPublis = new Params();
String contenuLignes = "";
while (iterateur.hasNext()) {
initialiserLignePublicationLieeTpl();
PublicationAPersonne publicationAPersonneCourante = iterateur.next();
Publication publication = publicationAPersonneCourante.getPublicationLiee();
Params ligneParams = new Params();
ligneParams.set("relation", construireTxtListeOntologie(publicationAPersonneCourante.getRole()));
ligneParams.set("auteur", publication.getAuteur());
ligneParams.set("titre", publication.getTitre());
ligneParams.set("revue", publication.getCollection());
ligneParams.set("editeur", publication.getEditeur());
ligneParams.set("annee", publication.getAnneeParution());
ligneParams.set("nvt", publication.getIndicationNvt());
ligneParams.set("fascicule", publication.getFascicule());
ligneParams.set("page", publication.getPages());
contenuLignes += Format.substitute(lignePublicationLieeTpl, ligneParams);
}
paramsPublis.set("lignes", contenuLignes);
paramsPublis.set("i18n_titre_publication", i18nC.tabPublications());
paramsPublis.set("i18n_relation", i18nC.publicationAuteurs());
paramsPublis.set("i18n_auteur", i18nC.publicationAuteurs());
paramsPublis.set("i18n_titre", i18nC.publicationTitre());
paramsPublis.set("i18n_revue", i18nC.publicationRevueCollection());
paramsPublis.set("i18n_editeur", i18nC.publicationEditeur());
paramsPublis.set("i18n_annee", i18nC.publicationDateParution());
paramsPublis.set("i18n_nvt", i18nC.publicationNvt());
paramsPublis.set("i18n_fascicule", i18nC.publicationFascicule());
paramsPublis.set("i18n_page", i18nC.publicationPage());
afficherOnglet(tableauPublicationsLieesTpl, paramsPublis, tabPublications);
}
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);
358,10 → 467,13
}
}
}
} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
afficherPublications((PublicationAPersonneListe) nouvellesDonnees);
}
if (ontologieRecue && personneAAfficher != null) {
if (ontologieRecue && personneAAfficher != null && personneAffichee == false) {
afficherDetailPersonne(personneAAfficher);
personneAffichee = true;
}
}
 
/trunk/src/org/tela_botanica/client/vues/personne/PersonneForm.java
30,7 → 30,6
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.util.Debug;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.Formulaire;
64,7 → 63,6
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.DateField;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.form.Radio;
238,7 → 236,7
cbProjets.setAllowBlank(false);
cbProjets.addStyleName(ComposantClass.OBLIGATOIRE);
cbProjets.addListener(Events.Valid, creerEcouteurChampObligatoire());
fsProjet.add(cbProjets, new FormData(450, 0));
fsProjet.add(cbProjets, new FormData(250, 0));
hmIdentite.put("cbProjets", cbProjets);
336,14 → 334,12
formLayout.setLabelAlign(LabelAlign.TOP);
LayoutContainer containerNaissance = new LayoutContainer(formLayout);
DateField dfDateNaissance = new DateField();
dfDateNaissance.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
dfDateNaissance.setFieldLabel("Date de naissance");
dfDateNaissance.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");
//Remplacement du DateField par un champ texte
TextField tfDateNaissance = new TextField();
tfDateNaissance.setFieldLabel("Date de naissance");
containerNaissance.add(tfDateNaissance);
hmIdentite.put("tfDateNaissance", tfDateNaissance);
containerNaissance.add(dfDateNaissance);
hmIdentite.put("dfDateNaissance", dfDateNaissance);
// Lieu naissance
TextField<String> tfLieuNaissance = new TextField<String>();
tfLieuNaissance.setFieldLabel("Lieu de naissance");
370,12 → 366,12
public void handleEvent(ComponentEvent be) {
if(((Radio) be.getComponent()).getValue().equals(true)) {
hmIdentite.getDateField("dfDateDeces").setVisible(true);
hmIdentite.getTextField("tfDateDeces").setVisible(true);
hmIdentite.getTextField("tfLieuDeces").setVisible(true);
} else {
DateField dfDateDeces = hmIdentite.getDateField("dfDateDeces");
dfDateDeces.setValue(null);
dfDateDeces.setVisible(false);
TextField tfDateDeces = hmIdentite.getTextField("tfDateDeces");
tfDateDeces.setValue(null);
tfDateDeces.setVisible(false);
TextField tfLieuDeces = hmIdentite.getTextField("tfLieuDeces");
tfLieuDeces.setValue(null);
384,15 → 380,12
}
});
DateField dfDateDeces = new DateField();
dfDateDeces.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
dfDateDeces.setFormatValue(true);
dfDateDeces.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");
dfDateDeces.setFieldLabel("Date de décès");
dfDateDeces.setVisible(false);
TextField tfDateDeces = new TextField();
tfDateDeces.setFieldLabel("Date de décès");
tfDateDeces.setVisible(false);
 
containerDeces.add(dfDateDeces);
hmIdentite.put("dfDateDeces", dfDateDeces);
containerDeces.add(tfDateDeces);
hmIdentite.put("tfDateDeces", tfDateDeces);
 
TextField<String> tfLieuDeces = new TextField<String>();
tfLieuDeces.setFieldLabel("Lieu de décès");
1004,12 → 997,12
hmIdentite.getTextField("tfAbreviation").setValue(personne.get("abreviation"));
hmIdentite.getChampMultiValeurs("abreviationAutre").peupler(personne.getString("truk_abreviation_autre"));
hmIdentite.getDateField("dfDateNaissance").setValue(personne.getDate("naissance_date"));
hmIdentite.getTextField("tfDateNaissance").setValue(personne.getAnneeOuDateNaiss());
hmIdentite.getTextField("tfLieuNaissance").setValue(personne.get("naissance_lieu"));
if (personne.estDecedee()) {
hmIdentite.getDateField("dfDateDeces").setValue(personne.getDate("deces_date"));
hmIdentite.getTextField("tfDateDeces").setValue(personne.getAnneeOuDateDeces());
hmIdentite.getTextField("tfLieuDeces").setValue(personne.get("deces_lieu"));
Radio rbEstDecede = hmIdentite.getRadio("rbEstDecedee");
rbEstDecede.setValue(true);
1064,7 → 1057,6
if ((strRegion!=null)&&(!strRegion.equals(""))) {
ComboBox<Valeur> cbRegion = hmAdresse.getComboBoxValeur("cbRegion");
System.out.println(cbRegion.getStore().getCount());
cbRegion.setVisible(true);
if (cbRegion.getStore().findModel("id_valeur", strRegion) != null) {
1235,15 → 1227,39
personneSelectionnee.setFmtNomComplet(strPrefixe, strSuffixe);
DateField dfDateNaissance = hmIdentite.getDateField("dfDateNaissance");
Date naissanceDate = dfDateNaissance.getValue();
personneSelectionnee.setNaissanceDate(naissanceDate);
//Verifier que la date est soit JJ/MM/AAAA soit AAAA
String valeurDateNaissance = (String) hmIdentite.getTextField("tfDateNaissance").getValue();
if (!UtilString.isEmpty(valeurDateNaissance)) {
if (valeurDateNaissance.matches("\\d{2}/\\d{2}/\\d{4}")) {
Date naissanceDate = DateTimeFormat.getFormat("dd/MM/yyyy").parse(valeurDateNaissance);
personneSelectionnee.setNaissanceDate(naissanceDate);
} else if (valeurDateNaissance.matches("\\d{4}")) {
personneSelectionnee.set("naissance_date", valeurDateNaissance + "-00-00");
} else {
lstMessageErreur.add("La date de naissance n'est pas au format jj/mm/AAAA ou AAAA.");
}
}
Radio rbEstDecedee = hmIdentite.getRadio("rbEstDecedee");
if (rbEstDecedee.getValue() == true) {
DateField dfDecesDate = hmIdentite.getDateField("dfDateDeces");
String decesLieu = (String) hmIdentite.getTextField("tfLieuDeces").getValue();
personneSelectionnee.setDeces(dfDecesDate.getValue(), decesLieu);
//Verifier que la date est soit JJ/MM/AAAA soit AAAA
Date dateDeces = null;
String valeurDateDeces = (String) hmIdentite.getTextField("tfDateDeces").getValue();
if (!UtilString.isEmpty(valeurDateDeces)) {
if (valeurDateDeces.matches("\\d{2}/\\d{2}/\\d{4}")) {
dateDeces = DateTimeFormat.getFormat("dd/MM/yyyy").parse(valeurDateDeces);
personneSelectionnee.setDeces(dateDeces, decesLieu);
} else if (valeurDateDeces.matches("\\d{4}")) {
personneSelectionnee.set("deces_date", valeurDateDeces + "-00-00");
personneSelectionnee.setDecesLieu(decesLieu);
} else {
lstMessageErreur.add("La date de deces n'est pas au format jj/mm/AAAA ou AAAA.");
}
}
} else {
personneSelectionnee.setNonDecedee();
}
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormPersonne.java
32,6 → 32,7
import org.tela_botanica.client.vues.FormulaireOnglet;
import org.tela_botanica.client.vues.personne.PersonneForm;
 
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
62,7 → 63,9
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig;
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
import com.extjs.gxt.ui.client.widget.layout.AnchorLayout;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
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;
90,7 → 93,10
private FenetreForm fenetreFormulaire = null;
public CollectionFormPersonne(Formulaire formulaireCourrant) {
initialiserOnglet(formulaireCourrant);
setLayout(new FitLayout());
setScrollMode(Scroll.AUTO);
setId(ID);
setText(Mediateur.i18nC.collectionPersonne());
setStyleAttribute("padding", "0");
125,7 → 131,9
panneau.setHeading(i18nC.collectionPersonneTitre());
panneau.setIcon(Images.ICONES.table());
panneau.setLayout(new FitLayout());
panneau.setFrame(true);
panneau.setScrollMode(Scroll.AUTO);
return panneau;
}
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormPublication.java
21,6 → 21,7
import org.tela_botanica.client.vues.FormulaireOnglet;
import org.tela_botanica.client.vues.publication.PublicationForm;
 
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.core.XTemplate;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
50,6 → 51,7
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.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;
73,16 → 75,19
private FenetreForm fenetreFormulaire = null;
public CollectionFormPublication(Formulaire formulaireCourrant) {
initialiserOnglet(formulaireCourrant);
setId(ID);
setText(Mediateur.i18nC.collectionPublication());
setStyleAttribute("padding", "0");
panneauPrincipal = creerPanneauContenantGrille();
setLayout(new FitLayout());
barreOutils = creerBarreOutilsGrille();
panneauPrincipal.setTopComponent(barreOutils);
grille = creerGrille();
panneauPrincipal.add(grille);
panneauPrincipal.setLayout(new FitLayout());
panneauPrincipal.add(grille);
add(panneauPrincipal);
initialiser();
372,7 → 377,7
modeleDeColonnes.getColumn(0).setWidget(Images.ICONES.information().createImage(), "Info");
EditorGrid<CollectionAPublication> grillePublications = new EditorGrid<CollectionAPublication>(storeGrille, modeleDeColonnes);
grillePublications.setHeight("100%");
//grillePublications.setHeight("100%");
grillePublications.setBorders(true);
grillePublications.setSelectionModel(modeleDeSelection);
grillePublications.addPlugin(expansionPlugin);
/trunk/src/org/tela_botanica/client/vues/collection/CollectionListeVue.java
136,7 → 136,7
mediateur.clicListeCollection(collection);
}
}
 
private void clicSupprimerCollection(List<Collection> collectionsASupprimer) {
if (store.getCount() > 0) {
mediateur.clicSupprimerCollection(this, collectionsASupprimer);
165,7 → 165,7
int[] pt = collections.getPageTable();
pagination.rafraichir(collections.getPageTable());
if (collections != null) {
if (collections != null) {
List<Collection> liste = collections.toList();
store.removeAll();
store.add(liste);
/trunk/src/org/tela_botanica/client/vues/collection/CollectionDetailVue.java
452,7 → 452,7
" <span class='{css_label}'>{i18n_digital} :</span> {digital}<br />"+
" <span class='{css_label}'>{i18n_digital_pourcent} :</span> {digital_pourcent}<br />"+
" <span class='{css_label}'>{i18n_etat} :</span> {etat}<br />"+
" <span class='{css_label}'>{i18n_type_donnee} :</span> {type_donnee}<br />"+
//DELETEME : " <span class='{css_label}'>{i18n_type_donnee} :</span> {type_donnee}<br />"+
" </div>"+
" <hr class='{css_clear}'/>"+
"</div>";
/trunk/src/org/tela_botanica/client
Property changes:
Deleted: svn:mergeinfo
Reverse-merged /branches/v1.0-syrah/src/org/tela_botanica/client:r1136-1261