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