Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 686 → Rev 687

/trunk/src/org/tela_botanica/client/vues/CollectionDetailVue.java
28,6 → 28,7
private String enteteTpl = null;
private String generalTpl = null;
private String auteurTpl = null;
private String publicationTpl = null;
private String descriptionTpl = null;
private String contenuTpl = null;
private String documentTpl = null;
40,6 → 41,7
private TabPanel onglets = null;
private TabItem generalOnglet = null;
private TabItem auteurOnglet = null;
private TabItem publicationOnglet = null;
private TabItem descriptionOnglet = null;
private TabItem contenuOnglet = null;
private TabItem documentOnglet = null;
74,6 → 76,11
auteurOnglet.setScrollMode(Scroll.AUTO);
onglets.add(auteurOnglet);
publicationOnglet = new TabItem(i18nC.collectionPublication());
publicationOnglet.setLayout(new AnchorLayout());
publicationOnglet.setScrollMode(Scroll.AUTO);
onglets.add(publicationOnglet);
descriptionOnglet = new TabItem(i18nC.collectionDescription());
descriptionOnglet.setLayout(new AnchorLayout());
descriptionOnglet.setScrollMode(Scroll.AUTO);
102,6 → 109,7
initialiserEnteteHtmlTpl();
initialiserGeneralTpl();
initialiserAuteurTpl();
initialiserPublicationTpl();
initialiserContenuTpl();
initialiserDescriptionTpl();
initialiserDocumentTpl();
127,6 → 135,10
" <span class='{css_label}'>{i18n_code} :</span> {code}<br />"+
" <span class='{css_label}'>{i18n_cote} :</span> {cote}<br />"+
" <span class='{css_label}'>{i18n_mere} :</span> {mere}<br />"+
" <span class='{css_label}'>{i18n_type_ncd} :</span> {type_ncd}<br />"+
" <span class='{css_label}'>{i18n_type_botanique} :</span> {type_botanique}<br />"+
" <span class='{css_label}'>{i18n_type_depot} :</span> {type_depot}<br />"+
" <span class='{css_label}'>{i18n_nbre_echantillon} :</span> {nbre_echantillon}<br />"+
" </div>"+
" <div class='{css_fieldset}'>"+
" <h2>{i18n_general_collection_titre}</h2>"+
136,8 → 148,6
" <span class='{css_label}'>{i18n_web} :</span> {web}<br />"+
" <span class='{css_label}'>{i18n_groupement_principe} :</span> {groupement_principe}<br />"+
" <span class='{css_label}'>{i18n_groupement_but} :</span> {groupement_but}<br />"+
" <span class='{css_label}'>{i18n_type_ncd} :</span> {type_ncd}<br />"+
" <span class='{css_label}'>{i18n_type_botanique} :</span> {type_botanique}<br />"+
" </div>"+
" <hr class='{css_clear}'/>"+
"</div>";
153,6 → 163,16
"</div>";
}
private void initialiserPublicationTpl() {
publicationTpl =
"<div class='{css_corps}'>"+
" <div class='{css_fieldset}'>"+
" <h2>{i18n_titre_publication}</h2>"+
" </div>"+
" <hr class='{css_clear}'/>"+
"</div>";
}
private void initialiserDescriptionTpl() {
descriptionTpl =
"<div class='{css_corps}'>"+
218,6 → 238,7
afficherEntete();
afficherIdentification();
afficherAuteur();
afficherPublication();
afficherDescription();
afficherContenu();
afficherDocument();
244,11 → 265,16
private void afficherIdentification() {
Params generalParams = new Params();
generalParams.set("i18n_titre_identification", i18nC.titreAdministratif());
generalParams.set("i18n_nom_alternatif", i18nC.nomAlternatif());
generalParams.set("i18n_acronyme", i18nC.acronyme());
generalParams.set("i18n_code", i18nC.code());
generalParams.set("i18n_cote", i18nC.cote());
generalParams.set("i18n_nom_alternatif", i18nC.nomAlternatif());
generalParams.set("i18n_mere", i18nC.collectionMere());
generalParams.set("i18n_type_ncd", i18nC.typeCollectionNcd());
generalParams.set("i18n_type_botanique", i18nC.typeCollectionBotanique());
generalParams.set("i18n_type_depot", i18nC.typeDepot());
generalParams.set("i18n_nbre_echantillon", i18nC.nbreEchantillon());
 
generalParams.set("i18n_general_collection_titre", i18nC.collectionGeneralTitre());
generalParams.set("i18n_description", i18nC.description());
generalParams.set("i18n_description_specialiste", i18nC.descriptionSpecialiste());
256,9 → 282,6
generalParams.set("i18n_web", i18nC.siteWeb());
generalParams.set("i18n_groupement_principe", i18nC.groupementPrincipe());
generalParams.set("i18n_groupement_but", i18nC.groupementBut());
generalParams.set("i18n_type_ncd", i18nC.typeCollectionNcd());
generalParams.set("i18n_type_botanique", i18nC.typeCollectionBotanique());
generalParams.set("i18n_type_depot", i18nC.typeDepot());
String acronyme = construireTxtTruck(collection.getIdAlternatif());
String code = construireTxtTruck(collection.getCode());
273,6 → 296,11
generalParams.set("code", code);
generalParams.set("cote", collection.getCote());
generalParams.set("mere", collection.getCollectionMereNom());
generalParams.set("type_ncd", typeNcd);
generalParams.set("type_botanique", typeBota);
generalParams.set("type_depot", typeDepot);
generalParams.set("nbre_echantillon", collection.getBotanique().getNbreEchantillon());
 
generalParams.set("description", collection.getDescription());
generalParams.set("description_specialiste", collection.getDescriptionSpecialiste());
generalParams.set("historique", collection.getHistorique());
279,9 → 307,6
generalParams.set("web", urls);
generalParams.set("groupement_principe", collection.getGroupementPrincipe());
generalParams.set("groupement_but", collection.getGroupementBut());
generalParams.set("type_ncd", typeNcd);
generalParams.set("type_botanique", typeBota);
generalParams.set("type_depot", typeDepot);
afficherOnglet(generalTpl, generalParams, generalOnglet);
}
293,6 → 318,13
afficherOnglet(auteurTpl, auteurParams, auteurOnglet);
}
private void afficherPublication() {
Params publicationParams = new Params();
publicationParams.set("i18n_titre_publication", i18nC.collectionPublicationTitre());
afficherOnglet(publicationTpl, publicationParams, publicationOnglet);
}
private void afficherDescription() {
Params descriptionParams = new Params();
descriptionParams.set("i18n_titre_description", i18nC.collectionDescriptionTitre());
/trunk/src/org/tela_botanica/client/vues/Formulaire.java
1,16 → 1,19
package org.tela_botanica.client.vues;
 
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.i18n.Constantes;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.modeles.MenuApplicationId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
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;
34,9 → 37,10
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
 
public abstract class Formulaire extends LayoutContainer {
public abstract class Formulaire extends LayoutContainer implements Rafraichissable {
 
public static final String MODE_AJOUTER = "AJOUT";
public static final String MODE_MODIFIER = "MODIF";
48,7 → 52,8
protected Constantes i18nC = null;
protected Mediateur mediateur = null;
 
protected Configuration config = null;
protected String mode = null;
protected int tabIndex = 100;
65,6 → 70,7
mediateur = mediateurCourrant;
i18nC = Mediateur.i18nC;
menuIdCourant = idMenuCourrant;
config = (Configuration) Registry.get(RegistreId.CONFIG);
// Iniatilisation du layoutContainer
setLayout(new FitLayout());
92,11 → 98,7
TabItem onglet = new TabItem();
onglet.setId(id);
onglet.setText(nom);
onglet.setLayout(new FormLayout());
onglet.setStyleAttribute("padding", "10px");
onglet.setScrollMode(Scroll.AUTO);
onglet.setData("acces", false);
FormulaireOnglet.parametrer(onglet);
return onglet;
}
151,7 → 153,7
* @param labelAlign alignement des labels
* @return
*/
protected FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign) {
protected static FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign) {
FormLayout formLayout = new FormLayout();
if (labelWidth != null) {
formLayout.setLabelWidth(labelWidth);
273,4 → 275,5
}
cp.layout();
}
}
}
/trunk/src/org/tela_botanica/client/vues/CollectionFormGeneral.java
New file
0,0 → 1,343
package org.tela_botanica.client.vues;
 
import java.util.List;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.composants.ChampMultiValeurs;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Collection;
import org.tela_botanica.client.modeles.CollectionListe;
import org.tela_botanica.client.modeles.Projet;
import org.tela_botanica.client.modeles.ProjetListe;
import org.tela_botanica.client.modeles.Structure;
import org.tela_botanica.client.modeles.StructureListe;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.aDonneeListe;
 
import com.extjs.gxt.ui.client.Style.SortDir;
import com.extjs.gxt.ui.client.store.ListStore;
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.HiddenField;
import com.extjs.gxt.ui.client.widget.form.NumberField;
import com.extjs.gxt.ui.client.widget.form.TextArea;
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.form.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.NumberFormat;
 
public class CollectionFormGeneral extends FormulaireOnglet implements Rafraichissable {
private HiddenField<String> idCollectionChp;
private FieldSet descriptionFieldSet;
private ListStore<Valeur> typesCollectionStore;
private ListStore<Valeur> typeCollectionBotaStore;
private ListStore<Valeur> typeDepotStore;
private ComboBox<Valeur> typeDepotCombo;
private ComboBox<Valeur> typesCollectionBotaCombo;
private ComboBox<Valeur> typesCollectionCombo;
private ListStore<Projet> projetsStore;
private ComboBox<Projet> projetsCombo;
 
private ComboBox<Structure> structuresCombo;
 
private ListStore<Structure> structuresStore;
 
private ComboBox<Collection> collectionsCombo;
 
private ListStore<Collection> collectionsStore;
 
public CollectionFormGeneral(Formulaire formulaireCourrant) {
initialiserOnglet(formulaireCourrant);
setId("general");
setText(Mediateur.i18nC.collectionGeneral());
creerChampsCache();
creerFieldsetLiaison();
creerFieldsetAdministratif();
creerFieldsetDescription();
}
 
private void creerChampsCache() {
// Champs cachés
idCollectionChp = new HiddenField<String>();
this.add(idCollectionChp);
}
private void creerFieldsetLiaison() {
// Fieldset LIAISON
FieldSet liaisonFieldSet = new FieldSet();
liaisonFieldSet.setHeading(i18nC.liaisonTitreCollection());
liaisonFieldSet.setCollapsible(true);
liaisonFieldSet.setLayout(Formulaire.creerFormLayout(150, LabelAlign.LEFT));
projetsStore = new ListStore<Projet>();
projetsCombo = new ComboBox<Projet>();
projetsCombo.setTabIndex(tabIndex++);
projetsCombo.setFieldLabel(i18nC.projetChamp());
projetsCombo.setDisplayField("nom");
projetsCombo.setForceSelection(true);
projetsCombo.setValidator(new Validator() {
@Override
public String validate(Field<?> field, String value) {
String retour = null;
if (field.getRawValue().equals("")) {
field.setValue(null);
} else if (projetsStore.findModel("nom", field.getRawValue()) == null) {
String contenuBrut = field.getRawValue();
field.setValue(null);
field.setRawValue(contenuBrut);
retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
}
return retour;
}
});
projetsCombo.setTriggerAction(TriggerAction.ALL);
projetsCombo.setStore(projetsStore);
liaisonFieldSet.add(projetsCombo, new FormData(450, 0));
mediateur.selectionnerProjets(this);
structuresStore = new ListStore<Structure>();
structuresCombo = new ComboBox<Structure>();
structuresCombo.setTabIndex(tabIndex++);
structuresCombo.setFieldLabel(i18nC.lienStructureCollection());
structuresCombo.setDisplayField("nom");
structuresCombo.setForceSelection(true);
structuresCombo.setValidator(new Validator() {
@Override
public String validate(Field<?> field, String value) {
String retour = null;
if (field.getRawValue().equals("")) {
field.setValue(null);
} else if (structuresStore.findModel("nom", field.getRawValue()) == null) {
String contenuBrut = field.getRawValue();
field.setValue(null);
field.setRawValue(contenuBrut);
retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
}
return retour;
}
});
structuresCombo.setTriggerAction(TriggerAction.ALL);
structuresCombo.setStore(structuresStore);
liaisonFieldSet.add(structuresCombo, new FormData(450, 0));
mediateur.selectionnerStructure(this, null);
collectionsStore = new ListStore<Collection>();
collectionsCombo = new ComboBox<Collection>();
collectionsCombo.setTabIndex(tabIndex++);
collectionsCombo.setFieldLabel(i18nC.lienMereCollection());
collectionsCombo.setDisplayField("nom");
collectionsCombo.setForceSelection(true);
collectionsCombo.setValidator(new Validator() {
@Override
public String validate(Field<?> field, String value) {
String retour = null;
if (field.getRawValue().equals("")) {
field.setValue(null);
} else if (collectionsStore.findModel("nom", field.getRawValue()) == null) {
String contenuBrut = field.getRawValue();
field.setValue(null);
field.setRawValue(contenuBrut);
retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
}
GWT.log("Validation : "+field.getRawValue()+"-"+field.getValue(), null);
return retour;
}
});
collectionsCombo.setTriggerAction(TriggerAction.ALL);
collectionsCombo.setStore(collectionsStore);
liaisonFieldSet.add(collectionsCombo, new FormData(450, 0));
mediateur.selectionnerCollection(this, null);
this.add(liaisonFieldSet);
}
private void creerFieldsetAdministratif() {
// Fieldset ADMINISTRATIF
FieldSet administratifFieldSet = new FieldSet();
administratifFieldSet.setHeading(i18nC.collectionGeneralTitre());
administratifFieldSet.setCollapsible(true);
administratifFieldSet.setLayout(Formulaire.creerFormLayout(150, LabelAlign.LEFT));
typesCollectionStore = new ListStore<Valeur>();
typesCollectionCombo = new ComboBox<Valeur>();
typesCollectionCombo.setTabIndex(tabIndex++);
typesCollectionCombo.setFieldLabel(i18nC.typeCollectionNcd());
typesCollectionCombo.setDisplayField("nom");
typesCollectionCombo.setForceSelection(true);
typesCollectionCombo.setValidator(new Validator() {
@Override
public String validate(Field<?> field, String value) {
String retour = null;
if (field.getRawValue().equals("")) {
field.setValue(null);
} else if (typesCollectionStore.findModel("nom", field.getRawValue()) == null) {
String contenuBrut = field.getRawValue();
field.setValue(null);
field.setRawValue(contenuBrut);
retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
}
return retour;
}
});
typesCollectionCombo.setTriggerAction(TriggerAction.ALL);
typesCollectionCombo.setStore(typesCollectionStore);
administratifFieldSet.add(typesCollectionCombo, new FormData(250, 0));
mediateur.obtenirListeValeurEtRafraichir(this, "typeCollectionNcd");
typeCollectionBotaStore = new ListStore<Valeur>();
typesCollectionBotaCombo = new ComboBox<Valeur>();
typesCollectionBotaCombo.setTabIndex(tabIndex++);
typesCollectionBotaCombo.setFieldLabel(i18nC.typeCollectionBotanique());
typesCollectionBotaCombo.setDisplayField("nom");
typesCollectionBotaCombo.setForceSelection(true);
typesCollectionBotaCombo.setValidator(new Validator() {
@Override
public String validate(Field<?> field, String value) {
String retour = null;
if (field.getRawValue().equals("")) {
field.setValue(null);
} else if (typeCollectionBotaStore.findModel("nom", field.getRawValue()) == null) {
String contenuBrut = field.getRawValue();
field.setValue(null);
field.setRawValue(contenuBrut);
retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
}
return retour;
}
});
typesCollectionBotaCombo.setTriggerAction(TriggerAction.ALL);
typesCollectionBotaCombo.setStore(typeCollectionBotaStore);
administratifFieldSet.add(typesCollectionBotaCombo, new FormData(250, 0));
mediateur.obtenirListeValeurEtRafraichir(this, "typeCollectionBota");
typeDepotStore = new ListStore<Valeur>();
typeDepotCombo = new ComboBox<Valeur>();
typeDepotCombo.setTabIndex(tabIndex++);
typeDepotCombo.setFieldLabel(i18nC.typeDepot());
typeDepotCombo.setDisplayField("nom");
typeDepotCombo.setForceSelection(true);
typeDepotCombo.setValidator(new Validator() {
@Override
public String validate(Field<?> field, String value) {
String retour = null;
if (field.getRawValue().equals("")) {
field.setValue(null);
} else if (typeDepotStore.findModel("nom", field.getRawValue()) == null) {
String contenuBrut = field.getRawValue();
field.setValue(null);
field.setRawValue(contenuBrut);
retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
}
return retour;
}
});
typeDepotCombo.setTriggerAction(TriggerAction.ALL);
typeDepotCombo.setStore(typeCollectionBotaStore);
administratifFieldSet.add(typeDepotCombo, new FormData(250, 0));
mediateur.obtenirListeValeurEtRafraichir(this, "typeDepot");
TextField<String> coteChp = new TextField<String>();
coteChp.setTabIndex(tabIndex++);
coteChp.setFieldLabel(i18nC.cote());
administratifFieldSet.add(coteChp, new FormData(450, 0));
NumberField nbreEchantillonChp = new NumberField();
nbreEchantillonChp.setFieldLabel(i18nC.nbreEchantillon());
nbreEchantillonChp.setToolTip(i18nC.nbreEchantillonInfo());
nbreEchantillonChp.setFormat(NumberFormat.getFormat("#"));
nbreEchantillonChp.setToolTip(i18nC.champNumerique());
administratifFieldSet.add(nbreEchantillonChp);
TextField<String> nomChp = new TextField<String>();
nomChp.setTabIndex(tabIndex++);
nomChp.setFieldLabel(i18nC.nomCollection());
nomChp.setAllowBlank(false);
nomChp.getMessages().setBlankText(i18nC.champObligatoire());
administratifFieldSet.add(nomChp, new FormData(450, 0));
ChampMultiValeurs nomsAlternatifsChp = new ChampMultiValeurs(i18nC.intituleAlternatifCollection());
administratifFieldSet.add(nomsAlternatifsChp);
ChampMultiValeurs codesAlternatifsChp = new ChampMultiValeurs(i18nC.codeAlternatifCollection());
administratifFieldSet.add(codesAlternatifsChp);
this.add(administratifFieldSet);
}
private void creerFieldsetDescription() {
// Fieldset DESCRIPTION
descriptionFieldSet = new FieldSet();
descriptionFieldSet.setHeading(i18nC.collectionDescriptionTitre());
descriptionFieldSet.setCollapsible(true);
descriptionFieldSet.setLayout(Formulaire.creerFormLayout(150, LabelAlign.LEFT));
 
TextArea descriptionChp = new TextArea();
descriptionChp.setFieldLabel(i18nC.description());
descriptionFieldSet.add(descriptionChp, new FormData(550, 0));
TextArea descriptionSpecialisteChp = new TextArea();
descriptionSpecialisteChp.setFieldLabel(i18nC.descriptionSpecialiste());
descriptionFieldSet.add(descriptionSpecialisteChp, new FormData(550, 0));
TextArea historiqueChp = new TextArea();
historiqueChp.setFieldLabel(i18nC.historique());
descriptionFieldSet.add(historiqueChp, new FormData(550, 0));
ChampMultiValeurs urlsChp = new ChampMultiValeurs(i18nC.urlsCollection());
descriptionFieldSet.add(urlsChp);
 
this.add(descriptionFieldSet);
}
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof ValeurListe) {
ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
rafraichirValeurListe(listeValeurs);
} else if (nouvellesDonnees instanceof ProjetListe) {
ProjetListe projets = (ProjetListe) nouvellesDonnees;
rafraichirComboBox(projets, projetsStore, projetsCombo);
} else if (nouvellesDonnees instanceof StructureListe) {
StructureListe structures = (StructureListe) nouvellesDonnees;
rafraichirComboBox(structures, structuresStore, structuresCombo);
} else if (nouvellesDonnees instanceof CollectionListe) {
CollectionListe collections = (CollectionListe) nouvellesDonnees;
rafraichirComboBox(collections, collectionsStore, collectionsCombo);
} else {
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
}
private void rafraichirValeurListe(ValeurListe listeValeurs) {
if (listeValeurs.getId().equals(config.getListeId("typeCollectionNcd"))) {
rafraichirComboBox(listeValeurs, typesCollectionStore, typesCollectionCombo);
} else if (listeValeurs.getId().equals(config.getListeId("typeCollectionBota"))) {
rafraichirComboBox(listeValeurs, typeCollectionBotaStore, typesCollectionBotaCombo);
} else if (listeValeurs.getId().equals(config.getListeId("typeDepot"))) {
rafraichirComboBox(listeValeurs, typeDepotStore, typeDepotCombo);
} else {
GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", null);
}
}
@SuppressWarnings({"unchecked"})
private void rafraichirComboBox(aDonneeListe<?> listeValeurs, ListStore store, ComboBox combo) {
List<?> liste = listeValeurs.toList();
if (liste.size() > 0) {
store.removeAll();
store.add(liste);
store.sort("nom", SortDir.ASC);
combo.setStore(store);
}
}
 
}
/trunk/src/org/tela_botanica/client/vues/FormulaireOnglet.java
New file
0,0 → 1,56
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.i18n.Constantes;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Configuration;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
 
public abstract class FormulaireOnglet extends TabItem implements Rafraichissable {
protected Formulaire formulaire = null;
protected Mediateur mediateur = null;
protected Constantes i18nC = null;
protected Configuration config = null;
protected String mode = null;
protected int tabIndex = 100;
public FormulaireOnglet() {
parametrer(this);
addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
actualiser();
}
});
}
public static void parametrer(TabItem onglet) {
onglet.setLayout(new FormLayout());
onglet.setStyleAttribute("padding", "10px");
onglet.setScrollMode(Scroll.AUTO);
onglet.setData("acces", false);
}
 
protected void initialiserOnglet(Formulaire formulaireCourrant) {
formulaire = formulaireCourrant;
mediateur = formulaire.mediateur;
i18nC = Mediateur.i18nC;
config = (Configuration) Registry.get(RegistreId.CONFIG);
mode = formulaire.mode;
tabIndex = formulaire.tabIndex;
}
public void actualiser() {
layout();
}
}
/trunk/src/org/tela_botanica/client/vues/CollectionForm.java
1,34 → 1,69
package org.tela_botanica.client.vues;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.composants.ChampMultiValeurs;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Collection;
import org.tela_botanica.client.modeles.CollectionListe;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.MenuApplicationId;
import org.tela_botanica.client.modeles.Projet;
import org.tela_botanica.client.modeles.ProjetListe;
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 org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.SortDir;
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.EventType;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.WidgetListener;
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.store.StoreListener;
import com.extjs.gxt.ui.client.widget.Component;
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.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.Text;
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.Field;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.HiddenField;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.form.NumberField;
import com.extjs.gxt.ui.client.widget.form.Radio;
import com.extjs.gxt.ui.client.widget.form.TextArea;
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.form.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.user.client.ui.Widget;
 
public class CollectionForm extends Formulaire implements Rafraichissable {
36,15 → 71,32
private Collection collection = null;
private Collection collectionCollectee = null;
 
private HashMap<String, Widget>champs = new HashMap<String, Widget>();
private HashMap<String,FieldSet> champsFs = new HashMap<String,FieldSet>();
private HashMap<String,LayoutContainer> champsLc = new HashMap<String,LayoutContainer>();
private HashMap<String,HiddenField<String>> champsHfs = new HashMap<String,HiddenField<String>>();
private HashMap<String,TextField<String>> champsTfs = new HashMap<String,TextField<String>>();
private HashMap<String,TextArea> champsTa = new HashMap<String,TextArea>();
private HashMap<String,ChampMultiValeurs> champsCmv = new HashMap<String,ChampMultiValeurs>();
private HashMap<String,Text> champsT = new HashMap<String,Text>();
private HashMap<String,ComboBox<Valeur>> champsCbv = new HashMap<String,ComboBox<Valeur>>();
private HashMap<String,ListStore<Valeur>> champsLsv = new HashMap<String,ListStore<Valeur>>();
private TabItem generalOnglet = null;
private TabItem auteurOnglet = null;
private TabItem publicationOnglet = null;
private TabItem descriptionOnglet = null;
private TabItem contenuOnglet = null;
private TabItem documentOnglet = null;
private TabItem inventaireOnglet = null;
private ListStore<Projet> projetsStore;
private ComboBox<Projet> projetsCombo;
private ListStore<Structure> structuresStore;
private ComboBox<Structure> structuresCombo;
private ListStore<Collection> collectionsStore;
private ComboBox<Collection> collectionsCombo;
 
 
public CollectionForm(Mediateur mediateurCourrant, String modeDeCreation) {
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.COLLECTION);
}
60,6 → 112,9
// Onlget formulaire AUTEUR
onglets.add(creerOngletAuteur());
// Onlget formulaire PUBLICATION
onglets.add(creerOngletPublication());
// Onlget formulaire DESCRIPTION
onglets.add(creerOngletDescription());
80,46 → 135,7
}
private TabItem creerOngletGeneral() {
generalOnglet = creerOnglet(i18nC.collectionGeneral(), "general");
generalOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletGeneral();
generalOnglet.layout();
}
});
//+-----------------------------------------------------------------------------------------------------------+
// Champs cachés
HiddenField<String> idCollectionChp = new HiddenField<String>();
champs.put("idCollectionChp", idCollectionChp);
//+-----------------------------------------------------------------------------------------------------------+
// Fieldset ADMINISTRATIF
FieldSet administratifFieldSet = new FieldSet();
administratifFieldSet.setHeading(i18nC.collectionGeneralTitre());
administratifFieldSet.setCollapsible(true);
administratifFieldSet.setLayout(creerFormLayout(120, LabelAlign.LEFT));
 
TextField<String> nomChp = new TextField<String>();
nomChp.setTabIndex(tabIndex++);
nomChp.setFieldLabel(i18nC.nomCollection());
nomChp.setAllowBlank(false);
nomChp.getMessages().setBlankText(i18nC.champObligatoire());
administratifFieldSet.add(nomChp, new FormData(450, 0));
generalOnglet.add(administratifFieldSet);
//+-----------------------------------------------------------------------------------------------------------+
// Fieldset DESCRIPTION
FieldSet descriptionFieldSet = new FieldSet();
descriptionFieldSet.setHeading(i18nC.collectionDescriptionTitre());
descriptionFieldSet.setCollapsible(true);
descriptionFieldSet.setLayout(creerFormLayout(120, LabelAlign.LEFT));
generalOnglet.add(descriptionFieldSet);
 
//+-----------------------------------------------------------------------------------------------------------+
// Retour
generalOnglet = new CollectionFormGeneral(this);
return generalOnglet;
}
135,6 → 151,18
return auteurOnglet;
}
private TabItem creerOngletPublication() {
publicationOnglet = creerOnglet(i18nC.collectionPublication(), "publication");
publicationOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletAuteur();
publicationOnglet.layout();
}
});
return publicationOnglet;
}
private TabItem creerOngletDescription() {
descriptionOnglet = creerOnglet(i18nC.collectionDescription(), "description");
descriptionOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
148,7 → 176,7
}
private TabItem creerOngletContenu() {
contenuOnglet = creerOnglet(i18nC.collectionDescription(), "contenu");
contenuOnglet = creerOnglet(i18nC.collectionContenu(), "contenu");
contenuOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletContenu();
160,7 → 188,7
}
private TabItem creerOngletDocument() {
documentOnglet = creerOnglet(i18nC.collectionDescription(), "document");
documentOnglet = creerOnglet(i18nC.collectionDocument(), "document");
documentOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletDocument();
172,7 → 200,7
}
private TabItem creerOngletInventaire() {
inventaireOnglet = creerOnglet(i18nC.collectionDescription(), "inventaire");
inventaireOnglet = creerOnglet(i18nC.collectionInventaire(), "inventaire");
inventaireOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletInventaire();
200,7 → 228,7
verifierApresRafraichissement();
}
 
public void rafraichirInformation(Information info) {
private void rafraichirInformation(Information info) {
if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
}
217,12 → 245,28
}
}
public void rafraichirValeurListe(ValeurListe listeValeurs) {
private void rafraichirValeurListe(ValeurListe listeValeurs) {
List<Valeur> liste = listeValeurs.toList();
 
// Test pour savoir si la liste contient des éléments
if (liste.size() > 0) {
String[] listesTraitables = {};
Boolean implemente = false;
for (int i = 0; i < listesTraitables.length; i++) {
String id = listesTraitables[i];
GWT.log(id, null);
if (listeValeurs.getId().equals(config.getListeId(id))) {
champsLsv.get(id).removeAll();
champsLsv.get(id).add(liste);
champsCbv.get(id).setStore(champsLsv.get(id));
implemente = true;
break;
}
}
if (implemente == false) {
GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", null);
}
}
}