Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 637 → Rev 638

/trunk/src/org/tela_botanica/client/vues/CollectionForm.java
New file
0,0 → 1,292
package org.tela_botanica.client.vues;
 
import java.util.HashMap;
import java.util.List;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Collection;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.MenuApplicationId;
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.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
 
import com.extjs.gxt.ui.client.event.ButtonEvent;
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.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
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.Radio;
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.Widget;
 
public class CollectionForm extends Formulaire implements Rafraichissable {
 
private Collection collection = null;
private Collection collectionCollectee = null;
 
private HashMap<String, Widget>champs = new HashMap<String, Widget>();
private TabItem generalOnglet = null;
private TabItem auteurOnglet = null;
private TabItem descriptionOnglet = null;
private TabItem contenuOnglet = null;
private TabItem documentOnglet = null;
private TabItem inventaireOnglet = null;
 
public CollectionForm(Mediateur mediateurCourrant, String modeDeCreation) {
super(mediateurCourrant, modeDeCreation);
menuIdCourant = MenuApplicationId.COLLECTION;
creerOnglets();
add(panneauFormulaire);
}
protected void creerOnglets() {
onglets = new TabPanel();
// NOTE : pour faire apparaître les scrollBar il faut définir la hauteur du panneau d'onglets à 100% (autoHeight ne semble pas fonctionner)
onglets.setHeight("100%");
// Onlget formulaire GENERAL
onglets.add(creerOngletGeneral());
// Onlget formulaire AUTEUR
onglets.add(creerOngletAuteur());
// Onlget formulaire DESCRIPTION
onglets.add(creerOngletDescription());
// Onlget formulaire CONTENU
onglets.add(creerOngletContenu());
// Onlget formulaire DOCUMENT
onglets.add(creerOngletDocument());
// Onlget formulaire INVENTAIRE
onglets.add(creerOngletInventaire());
// Sélection de l'onglet par défaut
//onglets.setSelection(personnelOnglet);
// Ajout des onglets au formulaire général
panneauFormulaire.add(onglets);
}
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 fieldSetIdentite = new FieldSet();
fieldSetIdentite.setHeading(i18nC.collectionGeneralTitre());
fieldSetIdentite.setCollapsible(true);
fieldSetIdentite.setLayout(creerFormLayout(120, LabelAlign.LEFT));
 
return generalOnglet;
}
private TabItem creerOngletAuteur() {
auteurOnglet = creerOnglet(i18nC.collectionAuteur(), "auteur");
auteurOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletAuteur();
auteurOnglet.layout();
}
});
return auteurOnglet;
}
private TabItem creerOngletDescription() {
descriptionOnglet = creerOnglet(i18nC.collectionDescription(), "description");
descriptionOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletDescription();
descriptionOnglet.layout();
}
});
return descriptionOnglet;
}
private TabItem creerOngletContenu() {
contenuOnglet = creerOnglet(i18nC.collectionDescription(), "contenu");
contenuOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletContenu();
contenuOnglet.layout();
}
});
return contenuOnglet;
}
private TabItem creerOngletDocument() {
documentOnglet = creerOnglet(i18nC.collectionDescription(), "document");
documentOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletDocument();
documentOnglet.layout();
}
});
return documentOnglet;
}
private TabItem creerOngletInventaire() {
inventaireOnglet = creerOnglet(i18nC.collectionDescription(), "inventaire");
inventaireOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
//peuplerOngletInventaire();
inventaireOnglet.layout();
}
});
return inventaireOnglet;
}
public void rafraichir(Object nouvellesDonnees) {
try {
if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
rafraichirInformation(info);
} else if (nouvellesDonnees instanceof ValeurListe) {
ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
rafraichirValeurListe(listeValeurs);
} else {
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
} catch (Exception e) {
GWT.log("rafraichir()", e);
}
verifierApresRafraichissement();
}
 
public void rafraichirInformation(Information info) {
if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
}
if (info.getType().equals("modif_structure")) {
Info.display("Modification d'une collection", info.toString());
} else if (info.getType().equals("selection_collection")) {
Info.display("Modification d'une collection", info.toString());
if (info.getDonnee(0) != null) {
collection = (Collection) info.getDonnee(0);
}
actualiserPeuplementOnglet();
actualiserTitrePanneau();
}
}
public void rafraichirValeurListe(ValeurListe listeValeurs) {
List<Valeur> liste = listeValeurs.toList();
 
// Test pour savoir si la liste contient des éléments
if (liste.size() > 0) {
}
}
private void actualiserPeuplementOnglet() {
onglets.setSelection(onglets.getSelectedItem());
}
 
private void actualiserTitrePanneau() {
String titre = i18nC.titreModifFormCollection();
// Composition du titre
titre += " - ID : "+collection.getId();
panneauFormulaire.setHeading(titre);
}
 
@Override
protected SelectionListener<ButtonEvent> creerEcouteurBoutonFormulaire(final String code) {
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
if (code.equals(Formulaire.CODE_BOUTON_VALIDER)) {
soumettreFormulaire();
clicBoutonvalidation = true;
} else if (code.equals(Formulaire.CODE_BOUTON_APPLIQUER)) {
soumettreFormulaire();
} else if (code.equals(Formulaire.CODE_BOUTON_ANNULER)) {
mediateur.clicMenu(menuIdCourant);
} else if (code.equals(Formulaire.CODE_BOUTON_REINITIALISER)) {
if (mode.equals(StructureForm.MODE_MODIFIER)) {
mediateur.afficherFormCollection(collection.getId());
} else {
mediateur.afficherFormCollection(null);
}
}
}
};
return ecouteur;
}
protected void soumettreFormulaire() {
// Vérification de la validité des champs du formulaire
if (verifierFormulaire()) {
// Collecte des données du formulaire
Collection collection = collecterCollection();
if (mode.equals(MODE_AJOUTER)) {
mediateur.ajouterCollection(this, collection);
} else if (mode.equals(MODE_MODIFIER)) {
if (collection == null) {
Info.display("Modification d'une collection", "Rien n'a été enregistré car le formulaire n'a pas été modifié.");
} else {
mediateur.modifierCollection(this, collection);
}
}
}
}
private Collection collecterCollection() {
collectionCollectee = (Collection) collection.cloner(new Collection());
collecterOngletGeneral();
Collection collectionARetourner = null;
if (!collectionCollectee.comparer(collection)) {
collectionARetourner = collection = collectionCollectee;
}
return collectionARetourner;
}
private void collecterOngletGeneral() {
if (generalOnglet.getData("acces").equals(true)) {
}
}
private Boolean verifierFormulaire() {
return true;
}
 
@Override
protected void afficherChampSupplementaire(Radio radioBtn) {
// TODO Auto-generated method stub
}
}