Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 226 → Rev 227

/trunk/src/org/tela_botanica/client/vues/FormPublicationVue.java
1,15 → 1,16
package org.tela_botanica.client.vues;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.Modele;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.InterneValeur;
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.Structure;
import org.tela_botanica.client.modeles.StructureConservation;
import org.tela_botanica.client.modeles.StructureValorisation;
import org.tela_botanica.client.modeles.StructureListe;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
16,7 → 17,7
import com.extjs.gxt.ui.client.event.ComponentEvent;
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.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
29,7 → 30,8
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;
 
public class FormPublicationVue extends LayoutContainer implements Rafraichissable {
 
37,9 → 39,10
FormPanel panel = null ;
private ComboBox<Personne> comboListeAuteurs = null;
private ListStore<Personne> storePersonne = null;
private String idStructureEdition = "" ;
private ArrayList<TextField<String>> listeAuteurs = null;
private TextField<String> nomArticle = null;
private TextField<String> nomPub = null;
private TextField<String> intituleCollPub = null;
53,6 → 56,8
private TextField<String> pagesPub = null;
private String mode = "AJOUT";
FieldSet fieldSetAuteurs = null ;
 
public FormPublicationVue() {
59,8 → 64,6
setLayout(new FitLayout());
mediateur = Registry.get(RegistreId.MEDIATEUR);
storePersonne = new ListStore<Personne>();
// Création de la disposition : FIELDSET
FormLayout layoutFieldset = new FormLayout();
layoutFieldset.setLabelWidth(200);
79,7 → 82,7
add(panel);
// Fieldset Auteur
FieldSet fieldSetAuteurs = new FieldSet();
fieldSetAuteurs = new FieldSet();
fieldSetAuteurs.setHeading("Auteur(s)");
fieldSetAuteurs.setCollapsible(true);
fieldSetAuteurs.setLayout(layoutFieldset);
86,17 → 89,8
panel.add(fieldSetAuteurs);
this.comboListeAuteurs = new ComboBox<Personne>();
comboListeAuteurs.setEmptyText("Sélectionner un auteur...");
comboListeAuteurs.setFieldLabel("Auteur de la publication");
comboListeAuteurs.setDisplayField("nom");
comboListeAuteurs.setStore(storePersonne);
comboListeAuteurs.setEditable(true);
comboListeAuteurs.setTypeAhead(true);
comboListeAuteurs.setTriggerAction(TriggerAction.ALL);
genererChampsAuteur("",false);
fieldSetAuteurs.add(comboListeAuteurs);
// Création de la disposition : FIELDSET
FormLayout layoutFieldset2 = new FormLayout();
layoutFieldset.setLabelWidth(200);
149,7 → 143,7
comboListeEditeurs.setStore(storeEditeurs);
comboListeEditeurs.setEditable(true);
comboListeEditeurs.setTypeAhead(true);
comboListeEditeurs.setTriggerAction(TriggerAction.ALL);
comboListeEditeurs.setTriggerAction(TriggerAction.QUERY);
datePub = new DateField();
datePub.setFieldLabel("Date de publication");
163,7 → 157,7
pagesPub = new TextField<String>();
pagesPub.setFieldLabel("Pages");
fieldSetEdition.add(comboListeEditeurs);
fieldSetEdition.add(comboListeEditeurs,new FormData(500,20));
fieldSetEdition.add(datePub, new FormData(75,20));
fieldSetEdition.add(tomPub);
fieldSetEdition.add(fasciculePub);
194,29 → 188,58
}
public void rafraichir(Object nouvelleDonnees) {
// Si on a reçu les details d'une publication
if(nouvelleDonnees instanceof Publication) {
 
mode = "MODIF" ;
Publication publi = (Publication)nouvelleDonnees;
comboListeAuteurs.setRawValue(publi.getAuteur());
genererChampsAuteur(publi.getAuteur(),false);
nomArticle.setValue(publi.getTitre());
nomPub.setValue(publi.getNomComplet());
intituleCollPub.setValue(publi.getCollection());
uriPub.setValue(publi.getURI());
comboListeEditeurs.setRawValue(publi.getEditeur());
datePub.setRawValue(publi.getDateParution());
tomPub.setValue(publi.getIndicationNvt());
fasciculePub.setValue(publi.getFascicule());
pagesPub.setValue(publi.getPages());
idStructureEdition = publi.getEditeur();
mediateur.clicObtenirListeEditeurs(this);
panel.setHeading("Modification d'une publication");
}
// Si on a reçu une liste des editeurs
if(nouvelleDonnees instanceof StructureListe) {
storeEditeurs.removeAll();
StructureListe listeStructure = (StructureListe)nouvelleDonnees;
Set<String> listeStructureSet = listeStructure.keySet();
for(Iterator<String> it = listeStructureSet.iterator() ; it.hasNext() ;) {
storeEditeurs.add(listeStructure.get(it.next()));
}
mode = "MODIFICATION" ;
if(mode.equals("MODIF")) {
//Window.alert(""+idStructureEdition);
comboListeEditeurs.setValue(listeStructure.get(idStructureEdition));
}
comboListeEditeurs.expand();
}
}
private void soumettreFormulaire() {
String auteur = comboListeAuteurs.getRawValue();
String auteur = "" ;
for(int i = 0 ; i < listeAuteurs.size() ; i++) {
auteur += listeAuteurs.get(i).getValue();
if(i != listeAuteurs.size() -1) {
auteur += "|";
}
}
String nomArt = nomArticle.getValue();
String pub = nomPub.getValue();
String collPub = intituleCollPub.getValue();
229,6 → 252,8
Publication publi = new Publication(pub,uri,auteur,collPub,nomArt,editeur,datePar,tome,fascicule,pages);
Window.alert(auteur);
if (mode.equals("AJOUT")) {
mediateur.ajouterPublication(this, publi);
} else if (mode.equals("MODIF")) {
235,4 → 260,111
mediateur.modifierPublication(this, publi);
}
}
private void genererChampsAuteur(String auteursStr, boolean ajouter) {
String[] auteurs = auteursStr.split("\\|");
LayoutContainer conteneurChamps = new LayoutContainer();
Window.alert("longueur "+auteurs.length);
if(auteurs.length != 0) {
listeAuteurs = new ArrayList<TextField<String>>(auteurs.length);
}
else{
listeAuteurs = new ArrayList<TextField<String>>(1);
ajouter = true ;
}
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++) {
conteneurChamps.add(creerTextFieldEtBouton(auteurs[i]));
}
if(ajouter) {
conteneurChamps.add(creerTextFieldEtBouton(null));
}
Button ajoutAuteurBtn = new Button("Ajouter un auteur");
ajoutAuteurBtn.addSelectionListener(new SelectionListener<ComponentEvent>() {
 
@Override
public void componentSelected(ComponentEvent ce) {
String idsAuteurs = "" ;
for(int i = 0 ; i < listeAuteurs.size() ; i++) {
String valeurChampAuteur = listeAuteurs.get(i).getValue();
if(valeurChampAuteur != null)
{
idsAuteurs += valeurChampAuteur ;
}
else {
idsAuteurs += "" ;
}
if(i != 0 && i != listeAuteurs.size() - 1) {
idsAuteurs+= "|";
}
}
genererChampsAuteur(idsAuteurs,true);
}
});
fieldSetAuteurs.add(conteneurChamps);
fieldSetAuteurs.add(ajoutAuteurBtn);
fieldSetAuteurs.layout();
}
public HorizontalPanel creerTextFieldEtBouton(String valeurDefaut) {
HorizontalPanel p = new HorizontalPanel() ;
// Création de la disposition : FIELDSET
FormLayout layoutPanelTF = new FormLayout();
p.setLayout(layoutPanelTF);
final TextField<String> tf = new TextField<String>() ;
if(valeurDefaut != null) {
tf.setValue(valeurDefaut);
}
tf.setSize(200, 20);
listeAuteurs.add(tf);
Button supp = new Button("-");
supp.addSelectionListener(new SelectionListener<ComponentEvent>() {
@Override
public void componentSelected(ComponentEvent ce) {
String idsAuteurs = "" ;
listeAuteurs.remove(tf);
for(int i = 0 ; i < listeAuteurs.size() ; i++) {
String valeurChampAuteur = listeAuteurs.get(i).getValue();
if(valeurChampAuteur != null & !valeurChampAuteur.equals(""))
{
idsAuteurs += valeurChampAuteur ;
}
if(i != listeAuteurs.size() - 1) {
idsAuteurs+= "|";
}
}
genererChampsAuteur(idsAuteurs,false);
}
});
p.add(tf);
p.add(supp);
fieldSetAuteurs.add(p);
return p ;
}
}