Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 704 → Rev 705

/trunk/src/org/tela_botanica/client/vues/PublicationForm.java
8,19 → 8,25
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.Personne;
import org.tela_botanica.client.modeles.PersonneListe;
import org.tela_botanica.client.modeles.Publication;
import org.tela_botanica.client.modeles.PublicationListe;
import org.tela_botanica.client.modeles.Structure;
import org.tela_botanica.client.modeles.StructureListe;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
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.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.DateField;
32,7 → 38,10
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
 
public class PublicationForm extends LayoutContainer implements Rafraichissable {
 
60,11 → 69,25
private TextField<String> pagesPub = null;
private String mode = "AJOUT";
private boolean formValide = false;
private boolean validationPublication = false;
private boolean validationAuteurs = false;
FieldSet fieldSetAuteurs = null;
 
private Publication publi;
 
protected boolean listeAuteurInitialisee = false;
 
private LayoutContainer conteneurChamps;
 
private Button annulerBtn;
 
private Button validerBtn;
 
public PublicationForm() {
 
setId("x-form-pub");
setLayout(new FitLayout());
mediateur = Registry.get(RegistreId.MEDIATEUR);
78,7 → 101,7
 
//+-----------------------------------------------------------------------------------------------------------+
// Création du panneau Formulaire
panel = new FormPanel();
panel = new FormPanel();
panel.setFrame(true);
panel.setIconStyle("icone-form-ajouter");
panel.setCollapsible(false);
160,13 → 183,13
pagesPub.setFieldLabel("Pages");
fieldSetEdition.add(comboListeEditeurs, new FormData(500, 20));
fieldSetEdition.add(datePub, new FormData(75, 20));
fieldSetEdition.add(datePub, new FormData(100, 20));
fieldSetEdition.add(tomPub);
fieldSetEdition.add(fasciculePub);
fieldSetEdition.add(pagesPub, new FormData(100, 20));
// Ajout des boutons au panneau formulaire
Button annulerBtn = new Button("Annuler");
annulerBtn = new Button("Annuler");
annulerBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
174,7 → 197,8
}
});
panel.addButton(annulerBtn);
Button validerBtn = new Button("Valider");
validerBtn = new Button("Valider");
validerBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
181,21 → 205,22
soumettreFormulaire();
}
});
panel.addButton(validerBtn);
mediateur.clicObtenirListeEditeurs(this);
mediateur.clicObtenirListeAuteurs(this);
mediateur.clicObtenirListeEditeurs(this);
}
public void rafraichir(Object nouvelleDonnees) {
public void rafraichir(Object nouvellesDonnees) {
// Si on a reçu les details d'une publication
if (nouvelleDonnees instanceof Publication) {
if (nouvellesDonnees instanceof Publication) {
mode = "MODIF" ;
publi = (Publication) nouvelleDonnees;
publi = (Publication) nouvellesDonnees;
genererChampsAuteur(publi.getIdAuteur(), false);
mediateur.clicObtenirListeAuteurs(this);
nomArticle.setValue(publi.getTitre());
intituleCollPub.setValue(publi.getCollection());
uriPub.setValue(publi.getURI());
212,9 → 237,9
}
// Si on a reçu une liste des editeurs
if (nouvelleDonnees instanceof StructureListe) {
if(nouvellesDonnees instanceof StructureListe) {
storeEditeurs.removeAll();
StructureListe listeStructure = (StructureListe) nouvelleDonnees;
StructureListe listeStructure = (StructureListe) nouvellesDonnees;
storeEditeurs.add((List<Structure>) listeStructure.toList());
if (mode.equals("MODIF")) {
223,50 → 248,126
comboListeEditeurs.expand();
}
if (nouvelleDonnees instanceof PersonneListe) {
storeAuteurs.removeAll();
listePersonneAuteur = (PersonneListe)nouvelleDonnees;
Set<String> listeStructureSet = listePersonneAuteur.keySet();
for (Iterator<String> it = listeStructureSet.iterator(); it.hasNext();) {
storeAuteurs.add(listePersonneAuteur.get(it.next()));
if (nouvellesDonnees instanceof Information) {
Information nouvellesInfos = (Information)nouvellesDonnees;
if(nouvellesInfos.getType().equals("liste_personne")) {
listePersonneAuteur = (PersonneListe)nouvellesInfos.getDonnee(0);
storeAuteurs.removeAll();
for (Iterator<String> it = listePersonneAuteur.keySet().iterator(); it.hasNext();) {
Personne p = listePersonneAuteur.get(it.next());
storeAuteurs.add(p);
}
if (mode.equals("MODIF")) {
genererChampsAuteur(publi.getIdAuteur(), false);
} else {
listeAuteurs.get(0).expand();
}
listeAuteurInitialisee = true;
}
if (mode.equals("MODIF")) {
genererChampsAuteur(publi.getIdAuteur(), false);
if (nouvellesInfos.getType().equals("publication_valide")) {
Window.alert("Ajout de publication terminé ! "+nouvellesInfos.getDeboguage(0));
validationPublication = true;
}
if (nouvellesInfos.getType().equals("auteur_valide")) {
validationAuteurs = true;
}
if(formValide && validationPublication && validationAuteurs) {
mediateur.rechargerListePublication();
}
}
}
private void soumettreFormulaire() {
String auteur = "";
String idAuteur = "";
for (int i = 0; i < listeAuteurs.size(); i++) {
auteur += listeAuteurs.get(i).getValue();
if (i != listeAuteurs.size() -1) {
auteur += "|";
if(listeAuteurs.get(i).getValue() != null) {
idAuteur += listeAuteurs.get(i).getValue().getId();
auteur += listeAuteurs.get(i).getValue().getNom()+ " "+listeAuteurs.get(i).getValue().getPrenom();
if (i != listeAuteurs.size() -1) {
auteur += "|";
idAuteur += "|";
}
}
}
String erreurs = "";
if(idAuteur == null || idAuteur.equals("")) {
erreurs += "Veuillez entrer au moins un auteur ! ";
}
String nomArt = nomArticle.getValue();
String pub = nomArticle.getValue()+" "+intituleCollPub.getValue();
if(nomArt == null || nomArt.equals("")) {
erreurs += "Veuillez entrer le nom de l'article ! ";
}
String collPub = intituleCollPub.getValue();
if(collPub == null || collPub.equals("")) {
erreurs += "Veuillez entrer l'intitulé de la collection ! ";
}
String pub = nomArticle.getValue()+" "+intituleCollPub.getValue();
String uri = uriPub.getValue();
String editeur = comboListeEditeurs.getValue().getId();
if(uri == null || uri.equals("")) {
erreurs += "Veuillez entrer l'uri associée à la publication ! ";
}
String editeur = "";
if(comboListeEditeurs.getValue() == null) {
erreurs += "Veuillez sélectionner un éditeur ! ";
} else {
editeur = comboListeEditeurs.getValue().getId();
if(editeur == null || editeur.equals("")) {
erreurs += "Veuillez sélectionner un éditeur ! ";
}
}
String datePar = datePub.getRawValue();
if(datePar == null || datePar.equals("")) {
erreurs += "Veuillez entrer une date ! ";
}
String tome = tomPub.getValue();
if(tome == null || tome.equals("")) {
erreurs += "Veuillez entrer un tome ! ";
}
String fascicule = fasciculePub.getValue();
if(fascicule == null || fascicule.equals("")) {
erreurs += "Veuillez entrer un fascicule ! ";
}
String pages = pagesPub.getValue();
if(pages == null || pages.equals("")) {
erreurs += "Veuillez entrer des pages ! ";
}
if(erreurs.length() > 0) {
MessageBox.alert("Erreur dans la saisie des champs", erreurs, null);
return;
}
formValide = true;
this.setEnabled(false);
mediateur.afficherPopinChargement();
if (mode.equals("AJOUT")) {
Publication publi = new Publication(pub,uri,auteur,collPub,nomArt,editeur,datePar,tome,fascicule,pages);
Publication publi = new Publication(pub,uri,auteur, idAuteur, collPub,nomArt,editeur,datePar,tome,fascicule,pages);
mediateur.ajouterPublication(this, publi);
} else if (mode.equals("MODIF")) {
Publication publi = new Publication(idPublication,idProjet,pub,uri,auteur,collPub,nomArt,editeur,datePar,tome,fascicule,pages);
Publication publi = new Publication(idPublication,idProjet,pub,uri,auteur,idAuteur, collPub,nomArt,editeur,datePar,tome,fascicule,pages);
mediateur.modifierPublication(this, publi);
}
}
private void genererChampsAuteur(String auteursStr, boolean ajouter) {
String[] auteurs = auteursStr.split(";;");
LayoutContainer conteneurChamps = new LayoutContainer();
String[] auteurs = auteursStr.split("|");
conteneurChamps = new LayoutContainer();
if (auteurs.length != 0) {
listeAuteurs = new ArrayList<ComboBox<Personne>>(auteurs.length);
276,10 → 377,6
}
fieldSetAuteurs.removeAll();
//final Label labelAuteur = new Label("Auteur de la publication :");
final HTML labelAuteur = new HTML("<label class=\"x-form-item-label x-formulaire-auteur-label\" style=\"width: 100px;\">Auteur(s) de l'article ou de l'ouvrage:</label>");
fieldSetAuteurs.add(labelAuteur);
int i = 0;
for (i = 0; i < auteurs.length; i++) {
295,22 → 392,15
 
@Override
public void componentSelected(ButtonEvent be) {
String idsAuteurs = "" ;
for(int i = 0 ; i < listeAuteurs.size() ; i++) {
Personne enCours = listeAuteurs.get(i).getValue();
String valeurChampAuteur = " ";
if(enCours != null) {
valeurChampAuteur = enCours.getId();
} else {
valeurChampAuteur = null;
creerTextFieldEtBouton("");
int nbAuteurs = 1;
for(Iterator<ComboBox<Personne>> it = listeAuteurs.iterator(); it.hasNext();) {
if(listeAuteurs.size() > 1) {
it.next().setFieldLabel("Auteur "+nbAuteurs);
nbAuteurs++;
}
if(valeurChampAuteur != null) {
idsAuteurs += valeurChampAuteur;
}
idsAuteurs += ";;";
}
genererChampsAuteur(idsAuteurs,true);
fieldSetAuteurs.layout(true);
}
});
317,11 → 407,11
fieldSetAuteurs.add(conteneurChamps);
fieldSetAuteurs.add(ajoutAuteurBtn);
fieldSetAuteurs.layout();
fieldSetAuteurs.layout(true);
}
public HorizontalPanel creerTextFieldEtBouton(String valeurDefaut) {
HorizontalPanel p = new HorizontalPanel();
final HorizontalPanel p = new HorizontalPanel();
// Création de la disposition : FIELDSET
FormLayout layoutPanelTF = new FormLayout();
330,47 → 420,47
final ComboBox<Personne> tf = new ComboBox<Personne>();
tf.setDisplayField("fmt_nom_complet");
tf.setStore(storeAuteurs);
tf.setEmptyText("Selectionnez un auteur...");
String label = "Auteur ";
tf.setFieldLabel(label);
if(valeurDefaut != null && !valeurDefaut.equals("") ) {
Personne auteur = listePersonneAuteur.get((String)valeurDefaut);
Personne auteur = listePersonneAuteur.get(valeurDefaut);
tf.setValue(auteur);
}
tf.setSize(200, 20);
listeAuteurs.add(tf);
tf.setSize(200, 20);
LayoutContainer lc = new LayoutContainer();
lc.setLayout(new FormLayout());
lc.add(tf);
Button supp = new Button("-");
supp.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
String idsAuteurs = "";
listeAuteurs.remove(tf);
for (int i = 0; i < listeAuteurs.size(); i++) {
Personne enCours = listeAuteurs.get(i).getValue() ;
String valeurChampAuteur = " ";
if (enCours != null) {
valeurChampAuteur = enCours.getId();
} else {
valeurChampAuteur = null;
int nbAuteurs = 1;
if(listeAuteurs.size() != 1) {
for(Iterator<ComboBox<Personne>> it = listeAuteurs.iterator(); it.hasNext();) {
it.next().setFieldLabel("Auteur "+nbAuteurs);
nbAuteurs++;
}
if (valeurChampAuteur != null & !valeurChampAuteur.equals("")) {
idsAuteurs += valeurChampAuteur;
} else {
idsAuteurs += " ";
}
if (i != listeAuteurs.size() - 1) {
idsAuteurs += ";;";
}
}
genererChampsAuteur(idsAuteurs,false);
listeAuteurs.remove(tf);
conteneurChamps.remove(p);
fieldSetAuteurs.layout(true);
}
});
p.add(tf);
p.add(lc);
p.add(supp);
fieldSetAuteurs.add(p);
conteneurChamps.add(p);
fieldSetAuteurs.layout(true);
return p;
}
public void obtenirListeAuteurs() {
mediateur.clicObtenirListeAuteurs(this);
}
}