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); |
} |
|
} |