/trunk/src/org/tela_botanica/client/Mediateur.java |
---|
17,6 → 17,7 |
import org.tela_botanica.client.modeles.MenuApplicationId; |
import org.tela_botanica.client.modeles.Utilisateur; |
import org.tela_botanica.client.modeles.Valeur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.modeles.collection.Collection; |
import org.tela_botanica.client.modeles.collection.CollectionACommentaire; |
import org.tela_botanica.client.modeles.collection.CollectionACommentaireAsyncDao; |
50,6 → 51,7 |
import org.tela_botanica.client.vues.NavigationVue; |
import org.tela_botanica.client.vues.PopupChargement; |
import org.tela_botanica.client.vues.StatutVue; |
import org.tela_botanica.client.vues.MenuVue; |
import org.tela_botanica.client.vues.accueil.AccueilVue; |
import org.tela_botanica.client.vues.collection.CollectionForm; |
import org.tela_botanica.client.vues.collection.CollectionListeVue; |
68,9 → 70,11 |
import com.extjs.gxt.ui.client.GXT; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.LayoutRegion; |
import com.extjs.gxt.ui.client.data.DataProxy; |
import com.extjs.gxt.ui.client.event.Listener; |
import com.extjs.gxt.ui.client.event.MessageBoxEvent; |
import com.extjs.gxt.ui.client.util.Margins; |
import com.extjs.gxt.ui.client.widget.Component; |
import com.extjs.gxt.ui.client.widget.Dialog; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
351,27 → 355,35 |
// Rafraichissement du panneau Nord |
panneauNord.rafraichir(info); |
// Rafraichissement du panneau Centre |
if (panneauCentre != null) { |
panneauCentre.rafraichir(info); |
} |
} |
public void modifierUtilisateur() { |
Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT); |
panneauNord.rafraichir(utilisateurCourant); |
modele.modifierUtilisateur(this, utilisateurCourant); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES VALEURS ET LISTES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void obtenirListeValeurEtRafraichir(Rafraichissable vueARafraichir, int listeId) { |
modele.obtenirListeValeurs(vueARafraichir, "identifiant", listeId); |
} |
public void obtenirListeValeurEtRafraichir(Rafraichissable vueARafraichir, String listeId) { |
modele.obtenirListeValeurs(vueARafraichir, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId)); |
} |
public void obtenirListeValeurEtRafraichir(Rafraichissable vueARafraichir, String nomListe, boolean pagination, String recherche, int start, int nbElements) { |
modele.obtenirListeValeurs(vueARafraichir, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(nomListe), pagination, recherche, start, nbElements); |
} |
public void obtenirValeurEtRafraichir(Rafraichissable vue, String listeId, String identifiantValeur) { |
modele.obtenirValeur(vue, "abv", ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId), identifiantValeur); |
} |
1007,7 → 1019,7 |
if (personne.getId() != null && !personne.getId().trim().equals("")) { |
modele.modifierPersonne(vue, personne); |
} else { |
modele.ajouterPersonne(vue, personne); |
modele.ajouterPersonne(vue, personne); |
} |
} |
1098,7 → 1110,7 |
modele.modifierPublication(vueARafraichir, publication); |
} |
public void supprimerPublication(Rafraichissable vueARafraichir, List<Publication> publicationsListe) { |
public void supprimerPublication(Rafraichissable vueARafraichir, List<Publication> publicationsListe) { |
if (publicationsListe != null && publicationsListe.size() > 0) { |
String idPublicationSeparesParVirgule = "" ; |
Iterator<Publication> it = publicationsListe.iterator(); |
1128,7 → 1140,7 |
modele.selectionPublicationAPersonne(vueARafraichir, publicationId, personnesId, roleId); |
} |
public void selectionnerPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, String personnesId, List<Valeur> roleId) { |
public void selectionnerPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, String personnesId, List<Valeur> roleId) { |
String roleIds = ""; |
Iterator<Valeur> itRole = roleId.iterator(); |
while (itRole.hasNext()) { |
1140,7 → 1152,7 |
modele.selectionPublicationAPersonne(vueARafraichir, publicationId, personnesId, roleIds); |
} |
public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, PublicationAPersonneListe personnesAjoutees, String roleId) { |
public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, PublicationAPersonneListe personnesAjoutees, String roleId) { |
if (personnesAjoutees != null && personnesAjoutees.size() > 0) { |
String idPublicationAPersonneSepareParVirgule = "" ; |
for (Iterator<String> it = personnesAjoutees.keySet().iterator(); it.hasNext();) { |
1150,10 → 1162,10 |
} |
} |
modele.ajouterPublicationAPersonne(vueARafraichir, publicationId, idPublicationAPersonneSepareParVirgule, roleId); |
} |
} |
} |
public void supprimerPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe personnesSupprimees) { |
public void supprimerPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe personnesSupprimees) { |
if (personnesSupprimees != null && personnesSupprimees.size() > 0) { |
String idPublicationAPersonneSepareParVirgule = "" ; |
for (Iterator<String> it = personnesSupprimees.keySet().iterator(); it.hasNext();) { |
1163,11 → 1175,11 |
} |
} |
modele.supprimerPublicationAPersonne(vueARafraichir, idPublicationAPersonneSepareParVirgule); |
} |
} |
} |
//Lier plusieurs publication à une personne |
public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe listePublications, String personneId, String roleId) { |
public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe listePublications, String personneId, String roleId) { |
if (listePublications!=null && listePublications.size()>0) { |
String idsPubli = ""; |
String rolesIds = ""; |
1181,7 → 1193,7 |
} |
} |
modele.ajouterPublicationAPersonne(vueARafraichir, idsPubli, personneId, rolesIds); |
} |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
/trunk/src/org/tela_botanica/client/http |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/http:r1136-1291 |
/trunk/src/org/tela_botanica/client/i18n |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/i18n:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/projet |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/projet:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/commentaire |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/commentaire:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/FenetreJournal.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FenetreJournal.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/MenuVue.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/MenuVue.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/BarrePaginationVue.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/BarrePaginationVue.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/accueil |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/accueil:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/publication |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/publication:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/ContenuVue.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/ContenuVue.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/FormulaireBarreValidation.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FormulaireBarreValidation.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/PopupChargement.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/PopupChargement.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/StatutVue.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/StatutVue.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/EnteteVue.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/EnteteVue.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/Formulaire.java |
---|
110,6 → 110,7 |
public SelectionListener<ButtonEvent> creerEcouteurValidation() { |
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
String code = ((Button) ce.getComponent()).getData("code"); |
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) { |
if (mediateur.getUtilisateur().isIdentifie()) { |
159,7 → 160,7 |
public void fermerFormulaire() { |
clicBoutonvalidation = false; |
panneauFormulaire.setEnabled(false); |
mediateur.clicMenu(menuIdCourant); |
mediateur.clicMenu(menuIdCourant); |
} |
/** Méthode simplifiant la création de FormLayout. |
282,7 → 283,6 |
// FIXME : éviter le chevauchement du texte des cases à cocher avec le label "Autre" sur les petits écrans |
LayoutContainer conteneur = new LayoutContainer(); |
conteneur.setLayout(creerFormLayout(50, LabelAlign.TOP)); |
autreChp.setId("autre-"+listeValeurs.getId()); |
autreChp.setFieldLabel("Autre"); |
autreChp.setLabelStyle("font-weight:normal;"); |
conteneur.add(autreChp, new FormData(500, 0)); |
/trunk/src/org/tela_botanica/client/vues/FiltreVue.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FiltreVue.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/personne/PersonneDetailVue.java |
---|
17,6 → 17,7 |
import org.tela_botanica.client.modeles.publication.Publication; |
import org.tela_botanica.client.modeles.publication.PublicationAPersonne; |
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe; |
import org.tela_botanica.client.util.Debug; |
import org.tela_botanica.client.vues.DetailVue; |
import com.extjs.gxt.ui.client.Registry; |
231,7 → 232,7 |
+ " <b>Boite postale: </b>{boitePostale}<br />" |
+ " <b>Code postal:</b>{codePostal} <br />" |
+ " <b>Région:</b>{region}<br />" |
+ " <span style='uppercase'>{pays}</span><br />" |
+ " <b>Pays :</b><span style='uppercase'>{pays}</span><br />" |
+ "</div>"; |
// Adresses : |
Params paramAdresseTpl = new Params(); |
246,9 → 247,9 |
paramAdresseTpl.set("ville", (String) personne |
.obtenirValeurChamp("ville")); |
paramAdresseTpl.set("region", (String) personne |
.obtenirValeurChamp("region")); |
paramAdresseTpl.set("pays", (String) personne |
.obtenirValeurChamp("pays")); |
.obtenirValeurChamp("ce_truk_region")); |
paramAdresseTpl.set("pays", construireTxtListeOntologie((String) personne |
.obtenirValeurChamp("ce_truk_pays"))); |
afficherOnglet(tabAdresseTpl, paramAdresseTpl, tabAdresse); |
tabAdresse.setStyleAttribute("padding", "15px"); |
/trunk/src/org/tela_botanica/client/vues/personne/PersonneForm.java |
---|
11,9 → 11,12 |
import org.tela_botanica.client.ComposantClass; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable; |
import org.tela_botanica.client.composants.ChampMultiValeurs; |
import org.tela_botanica.client.composants.ChampMultiValeursImage; |
import org.tela_botanica.client.composants.ChampMultiValeursMultiTypes; |
import org.tela_botanica.client.composants.ChampMultiValeursMultiTypesPaginable; |
import org.tela_botanica.client.composants.ChampMultiValeursPaginable; |
import org.tela_botanica.client.composants.HashMapComposants; |
import org.tela_botanica.client.configuration.Configuration; |
import org.tela_botanica.client.images.Images; |
34,9 → 37,13 |
import org.tela_botanica.client.util.UtilString; |
import org.tela_botanica.client.vues.Formulaire; |
import com.extjs.gxt.ui.client.data.ModelData; |
import com.extjs.gxt.ui.client.data.ModelType; |
import com.extjs.gxt.ui.client.data.PagingLoadResult; |
import com.extjs.gxt.ui.client.event.Events; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.Style.SortDir; |
import com.extjs.gxt.ui.client.Style.VerticalAlignment; |
import com.extjs.gxt.ui.client.binding.FieldBinding; |
55,6 → 62,10 |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import org.tela_botanica.client.composants.InfoLogger; |
import org.tela_botanica.client.composants.pagination.Proxy; |
import org.tela_botanica.client.composants.pagination.ProxyValeur; |
import org.tela_botanica.client.composants.pagination.TransformateurJSONaModelData; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.TabPanel; |
import com.extjs.gxt.ui.client.widget.Text; |
83,6 → 94,7 |
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.i18n.client.DateTimeFormat; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.Widget; |
631,20 → 643,31 |
FieldSet fsInfosNat = new FieldSet(); |
fsInfosNat.setLayout(fl); |
fsInfosNat.setTitle("Informations Naturaliste"); |
TextArea taBiographie = new TextArea(); |
taBiographie.setFieldLabel("Vie et renommée de l'auteur"); |
taBiographie.setWidth("400"); |
taBiographie.setName("biographie"); |
fsInfosNat.add(taBiographie, new FormData(800, 200)); |
ChampMultiValeurs specialite = new ChampMultiValeurs(i18nC.personneSpecialite()); |
fsInfosNat.add(specialite); |
hmInfosNat.put("specialite", specialite); |
ModelType typeTypes = new ModelType(); |
typeTypes.setRoot("valeurs"); |
typeTypes.setTotalName("nbElements"); |
typeTypes.addField("cmlv_nom"); |
typeTypes.addField("cmlv_id_valeur"); |
typeTypes.addField("cmlv_abreviation"); |
typeTypes.addField("cmlv_description"); |
ChampMultiValeursMultiTypes recolte = new ChampMultiValeursMultiTypes(i18nC.personneRecolte(), 200, 200); |
recolte.initialiserType("pays"); |
String displayNameTypes = "cmlv_nom"; |
String nomListeTypes = "pays"; |
ProxyValeur<ModelData> proxyTypes = new ProxyValeur<ModelData>(nomListeTypes); |
ChampMultiValeursMultiTypesPaginable recolte = new ChampMultiValeursMultiTypesPaginable(i18nC.personneRecolte(), 450, false, null, null, null, typeTypes, proxyTypes, displayNameTypes); |
hmInfosNat.put("recolte", recolte); |
fsInfosNat.add(recolte); |
tiInfosNat.add(fsInfosNat); |
772,18 → 795,15 |
// RAFRAICHISSEMENT DU PANNEAU |
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof PublicationAPersonneListe) { |
Information info = new Information(); |
info.setType("publication_liees"); |
info.setDonnee(0, (PublicationAPersonneListe) nouvellesDonnees); |
tiPubli.rafraichir(info); |
} else if (nouvellesDonnees instanceof ValeurListe) { |
} else if (nouvellesDonnees instanceof ValeurListe) { |
ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees; |
// Créer une liste de valeurs |
List<Valeur> liste = new ArrayList<Valeur>(); |
for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) { |
820,7 → 840,7 |
} else if (listeValeurs.getId().equals(config.getListeId("pays"))) { |
remplirCombobox("cbPays", liste, "hmAdresse"); |
} else if (listeValeurs.getId().equals(config.getListeId("region"))) { |
remplirCombobox("cbRegion", liste, "hmAdresse"); |
remplirCombobox("cbRegion", liste, "hmAdresse"); |
mettreAJourRegion(); |
hmAdresse.getComboBox("cbRegion").setVisible(true); |
961,7 → 981,7 |
} |
private void mettreAJourPersonne(Personne personne) { |
//Mise à jour de la personne |
//Personne personne = (Personne) nouvellesDonnees; |
ComboBox cbProjets = hmIdentite.getComboBox("cbProjets"); |
1045,6 → 1065,8 |
//Pays |
String strPays = personne.get("ce_truk_pays"); |
ComboBox<Valeur> cbPays = hmAdresse.getComboBoxValeur("cbPays"); |
cbPays.getStore().sort("nom", SortDir.ASC); |
if (cbPays.getStore().findModel("id_valeur", strPays) != null) { |
cbPays.setValue(cbPays.getStore().findModel("id_valeur", strPays)); |
cbPays.fireEvent(Events.OnChange); |
1077,8 → 1099,8 |
* -----------------------------------------------------*/ |
hmInfosNat.getChampMultiValeurs("specialite").peupler(personne.getString("ce_truk_specialite")); |
String tr = personne.getString("truk_recolte"); |
hmInfosNat.getChampMultiValeursMultiTypes("recolte").peupler(tr); |
String tr = personne.getString("truk_recolte"); |
hmInfosNat.getChampMultiValeursMultiTypesPaginable("recolte").peupler(tr); |
//Onglet publi |
tiPubli.mettreAJourPersonne(); |
1117,7 → 1139,7 |
mettreAJourPersonne(personneSauvegarde); |
mediateur.masquerPopinChargement(); |
} |
public void binderPersonne(Personne personne) { |
binding = new FormBinding(getFormulaire()); |
1130,7 → 1152,7 |
binding.bind(personneSelectionnee); |
layout(); |
} |
private String obtenirValeurCombo(String strComboName) { |
String strValeur = ""; |
Valeur valeur; |
1264,12 → 1286,13 |
personneSelectionnee.setNonDecedee(); |
} |
strValeur = obtenirValeurCombo("cbPays"); |
strValeur = obtenirValeurCombo("cbPays"); |
personneSelectionnee.set("ce_truk_pays", strValeur); |
strValeur = obtenirValeurCombo("cbRegion"); |
ComboBox<Valeur> cbRegions = hmAdresse.getComboBoxValeur("cbRegion"); |
if (cbRegions.getStore().findModel("id", strValeur) == null) { |
if (cbRegions.getStore().findModel("id_valeur", strValeur) == null) { |
strValeur = "AUTRE##" + strValeur; |
} |
personneSelectionnee.set("ce_truk_region", strValeur); |
1282,7 → 1305,7 |
personneSelectionnee.set("truk_url", hmIdentite.getChampMultiValeurs("sites").getValeurs()); |
//Infos Naturalistes |
String recolte = ((ChampMultiValeursMultiTypes) hmInfosNat.get("recolte")).getValeurs(); |
String recolte = ((ChampMultiValeursMultiTypesPaginable) hmInfosNat.get("recolte")).getValeurs(); |
personneSelectionnee.set("truk_recolte", recolte); |
String specialite = ((ChampMultiValeurs) hmInfosNat.get("specialite")).getValeurs(); |
/trunk/src/org/tela_botanica/client/vues/collection |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/collection:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/FenetreForm.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FenetreForm.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/FormulaireOnglet.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FormulaireOnglet.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/NavigationVue.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/NavigationVue.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/structure |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/structure:r1136-1291 |
/trunk/src/org/tela_botanica/client/vues/DetailVue.java |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/DetailVue.java:r1136-1291 |
/trunk/src/org/tela_botanica/client/interfaces |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/interfaces:r1136-1291 |
/trunk/src/org/tela_botanica/client/Modele.java |
---|
52,7 → 52,16 |
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue); |
lsDao.obtenirListe(id); |
} |
public void obtenirListeValeurs(Rafraichissable vue, String type, int id) { |
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue); |
lsDao.obtenirListe(type, String.valueOf(id)); |
} |
public void obtenirListeValeurs(Rafraichissable vue, Integer listId, boolean pagination, String recherche, int start, int nbElements) { |
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue); |
lsDao.obtenirListe(listId, pagination, recherche, start, nbElements); |
} |
public void obtenirListeRegion(Rafraichissable vue, Integer id, String region) { |
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue); |
/trunk/src/org/tela_botanica/client/composants/ChampComboBoxRechercheTempsReelPaginable.java |
---|
New file |
0,0 → 1,167 |
package org.tela_botanica.client.composants; |
import java.util.List; |
import org.tela_botanica.client.composants.pagination.ChargeurListe; |
import org.tela_botanica.client.composants.pagination.Proxy; |
import org.tela_botanica.client.composants.pagination.TransformateurJSONaModelData; |
import org.tela_botanica.client.modeles.Valeur; |
import org.tela_botanica.client.util.Debug; |
import com.extjs.gxt.ui.client.event.BaseEvent; |
import com.extjs.gxt.ui.client.event.Events; |
import com.extjs.gxt.ui.client.event.Listener; |
import com.extjs.gxt.ui.client.store.ListStore; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.VerticalPanel; |
import com.extjs.gxt.ui.client.widget.form.ComboBox; |
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig; |
import com.extjs.gxt.ui.client.data.LoadEvent; |
import com.extjs.gxt.ui.client.data.Loader; |
import com.extjs.gxt.ui.client.data.ModelData; |
import com.extjs.gxt.ui.client.data.ModelType; |
import com.extjs.gxt.ui.client.data.PagingLoadResult; |
public class ChampComboBoxRechercheTempsReelPaginable extends LayoutContainer { |
//-------------// |
// ATTRIBUTS // |
//-------------// |
private ListStore<ModelData> store = null; |
private ComboBox<ModelData> combo = null; |
private String recherche = ""; |
private Proxy<?> proxy = null; |
private TransformateurJSONaModelData<PagingLoadResult<ModelData>> reader = null; |
private ChargeurListe<PagingLoadResult<ModelData>> loader = null; |
private int start = 0; |
private int limit = 10; |
private int largeur = 200; |
private BasePagingLoadConfig plc = null; |
private ModelType modeltype = null; |
private String displayName = ""; |
//-------------// |
// METHODES // |
//-------------// |
/*-------------- |
Constructeur |
--------------*/ |
public ChampComboBoxRechercheTempsReelPaginable(Proxy<?> proxy, ModelType modeltype, String displayName) { |
this.modeltype = modeltype; |
this.proxy = proxy; |
this.displayName = displayName; |
plc = new BasePagingLoadConfig(); |
plc.setLimit(limit); |
plc.setOffset(start); |
reader = new TransformateurJSONaModelData<PagingLoadResult<ModelData>>(modeltype); |
loader = new ChargeurListe<PagingLoadResult<ModelData>>(proxy, reader); |
loader.setLimit(plc.getLimit()); |
loader.setOffset(plc.getOffset()); |
loader.addListener(Loader.BeforeLoad, new Listener<LoadEvent>() { |
public void handleEvent(LoadEvent be) { |
be.<ModelData> getConfig().set("start", be.<ModelData> getConfig().get("offset")); |
} |
}); |
loader.addListener(Loader.Load, new Listener<LoadEvent>() { |
public void handleEvent(LoadEvent be) { |
} |
}); |
loader.addListener(Loader.LoadException, new Listener<LoadEvent>() { |
public void handleEvent(LoadEvent be) { |
} |
}); |
combo = new ComboBox<ModelData>(); |
combo.setWidth(largeur); |
combo.setDisplayField(displayName); |
combo.setHideTrigger(false); |
combo.setPageSize(plc.getLimit()); |
store = new ListStore<ModelData>(loader); |
combo.setStore(store); |
loader.load(plc, recherche); |
combo.addListener(Events.KeyUp, new Listener<BaseEvent>() { |
public void handleEvent(BaseEvent be) { |
recherche = combo.getRawValue(); |
plc.setLimit(limit); plc.setOffset(start); |
loader.setLimit(limit); loader.setOffset(start); |
loader.load(plc, recherche); |
} |
}); |
VerticalPanel vp = new VerticalPanel(); |
vp.add(combo); |
add(vp); |
} |
/*------------ |
Accesseurs |
------------*/ |
public ComboBox<ModelData> getCombo() |
{ |
return this.combo; |
} |
public Valeur getValeur() |
{ |
return new Valeur(combo.getSelection().get(0)); |
} |
public ListStore<?> getStore() |
{ |
return combo.getStore(); |
} |
public void setWidth(int largeur) |
{ |
this.largeur = largeur; |
this.combo.setWidth(largeur); |
} |
/*----------------------------- |
Gestion du contenu du champ |
-----------------------------*/ |
public List<ModelData> collecterValeursDuChamp() |
{ |
return combo.getSelection(); |
} |
public void peuplerChamp(List<ModelData> selection) |
{ |
combo.setSelection(selection); |
} |
/*---------------- |
Méthode privées |
-----------------*/ |
} |
/trunk/src/org/tela_botanica/client/composants/HashMapComposants.java |
---|
32,10 → 32,18 |
return (ChampMultiValeurs) get(name); |
} |
public ChampMultiValeursPaginable getChampMultiValeursPaginable(String name) { |
return (ChampMultiValeursPaginable) get(name); |
} |
public ChampMultiValeursMultiTypes getChampMultiValeursMultiTypes(String name) { |
return (ChampMultiValeursMultiTypes) get(name); |
} |
public ChampMultiValeursMultiTypesPaginable getChampMultiValeursMultiTypesPaginable(String name) { |
return (ChampMultiValeursMultiTypesPaginable) get(name); |
} |
public ChampMultiValeursImage getChampMultiValeursImage(String name) { |
return (ChampMultiValeursImage) get(name); |
} |
/trunk/src/org/tela_botanica/client/composants/ChampMultiValeursMultiTypesPaginable.java |
---|
New file |
0,0 → 1,281 |
package org.tela_botanica.client.composants; |
import java.util.HashMap; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.composants.pagination.Proxy; |
import org.tela_botanica.client.configuration.Configuration; |
import org.tela_botanica.client.images.Images; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
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.util.Debug; |
import org.tela_botanica.client.vues.Formulaire; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.data.ModelData; |
import com.extjs.gxt.ui.client.data.ModelType; |
import com.extjs.gxt.ui.client.event.ButtonEvent; |
import com.extjs.gxt.ui.client.event.Events; |
import com.extjs.gxt.ui.client.event.FieldEvent; |
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.Component; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
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.HiddenField; |
import com.extjs.gxt.ui.client.widget.form.LabelField; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; |
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.RowLayout; |
public class ChampMultiValeursMultiTypesPaginable extends ChampMultiValeursPaginable implements Rafraichissable { |
//-------------// |
// ATTRIBUTS // |
//-------------// |
// Elements pour le champ 'types' |
ColumnData colonneChampTypes = null; |
ChampComboBoxRechercheTempsReelPaginable champTypesComboBox = null; |
int largeurChampTypes = 200; |
String displayNameChampTypes = "nom"; |
// Elements pour gérer le type de valeurs que contient le champ |
Proxy proxyChampTypes = null; |
ModelType modeltypeChampTypes = null; |
// Variables de traitement |
HashMap<Integer, String> tempMapValeurs = null; |
//-------------// |
// METHODES // |
//-------------// |
/*-------------- |
Constructeur |
--------------*/ |
public ChampMultiValeursMultiTypesPaginable(String label, int largeurTotale, boolean estCombobox, ModelType modeltypeChampValeur, Proxy proxyChampValeur, String displayNameChampValeur, ModelType modeltypeChampTypes, Proxy proxyChampTypes, String displayNameChampTypes) { |
super(label, largeurTotale, estCombobox, modeltypeChampValeur, proxyChampValeur, displayNameChampValeur); |
this.proxyChampTypes = proxyChampTypes; |
this.modeltypeChampTypes = modeltypeChampTypes; |
this.displayNameChampTypes = displayNameChampTypes; |
initialiserChampMultiValeursMultiTypesPaginable(label); |
} |
/*------------ |
Accesseurs |
------------*/ |
//------------// |
// Get //------------------------------------------------------------ |
public ChampComboBoxRechercheTempsReelPaginable getChampTypesComboBox() { |
return this.champTypesComboBox; |
} |
//------------// |
// Set //------------------------------------------------------------ |
@Override |
public void setLargeurTotale(int largeurTotale) { |
this.largeurTotale = largeurTotale; |
largeurChampValeur = largeurTotale - largeurBouton - largeurChampTypes; |
} |
/*------------------------------------------- |
Méthodes protégées et méthodes publiques |
--------------------------------------------*/ |
@Override |
public void rafraichir(Object nouvellesDonnees) { |
super.rafraichir(nouvellesDonnees); |
if (nouvellesDonnees instanceof ValeurListe) { |
Valeur v = ((ValeurListe)nouvellesDonnees).toList().get(0); |
ajouterValeur(tempMapValeurs.get(Integer.parseInt(v.getId())), v.getNom(), v.getId()); |
} |
} |
@Override |
protected void ajouterValeur(final String texte, final String type, final String id) { |
LayoutContainer colonneConteneur = new LayoutContainer(); |
colonneConteneur.setLayout(new ColumnLayout()); |
valeurs.put(id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte, colonneConteneur); |
Text champType = new Text(); |
champType.setText(type + " : "); |
champType.setWidth(largeurChampTypes); |
colonneConteneur.add(champType, new ColumnData(largeurChampTypes)); |
Text champValeur = new Text(); |
champValeur.setText(texte); |
champValeur.setWidth(largeurChampTypes); |
colonneConteneur.add(champValeur, new ColumnData(largeurChampTypes)); |
Button supprimerBouton = new Button(); |
supprimerBouton.setIcon(Images.ICONES.supprimer()); |
supprimerBouton.setText(boutonSupprimerLabel); |
supprimerBouton.setData("valeur", id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte); |
supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
String valeur = ce.getComponent().getData("valeur"); |
LayoutContainer valeurLayout = valeurs.get(valeur); |
principalLayout.remove(valeurLayout); |
valeurs.remove(valeur); |
supprimerValeurDuRecapitulatif(valeur); |
actualiserLayoutGlobal(); |
} |
}); |
colonneConteneur.add(supprimerBouton, new ColumnData(largeurBouton)); |
// Ajout du layout de la valeur au layout principal |
principalLayout.add(colonneConteneur); |
// Ajout de la valeur au champ récapitulatif des valeurs ajoutées |
if (champValeurEstComboBox && champValeurComboBox!=null && champValeurComboBox.getValeur()!=null) { |
// FIXME |
// je comprends pas la raison d'être de cette ligne |
ajouterValeurAuRecapitulatif(champValeurComboBox.getValeur().getId(), id); |
} else { |
ajouterValeurAuRecapitulatif(texte, id); |
} |
reinitialiserChamp(); |
actualiserLayoutGlobal(); |
} |
@Override |
public void peupler(String chaineExistante) { |
if (valeurs.size() > 0) { |
reinitialiser(); |
} |
if (chaineExistante != null && !chaineExistante.trim().equals("")) { |
String[] valeurs = chaineExistante.split(aDonnee.SEPARATEUR_VALEURS); |
for (int i = 0; i < valeurs.length; i++) { |
String[] idEtValeur = valeurs[i].split(aDonnee.SEPARATEUR_TYPE_VALEUR); |
String idType = idEtValeur[0]; |
String idValeur = idEtValeur[1]; |
// Champ Valeur |
tempMapValeurs.put(Integer.parseInt(idType), idValeur); |
// Champ Types |
mediateur.obtenirListeValeurEtRafraichir(this, Integer.parseInt(idType)); |
} |
} |
} |
/*------------------ |
Méthodes privées |
------------------*/ |
private void initialiserChampMultiValeursMultiTypesPaginable(String label) { |
setLargeurTotale(largeurTotale); |
tempMapValeurs = new HashMap<Integer,String>(); |
creerChampMultiValeursMultiTypes(); |
} |
private void creerChampMultiValeursMultiTypes() { |
/* Creation du champ Types */ |
champTypesComboBox = new ChampComboBoxRechercheTempsReelPaginable(proxyChampTypes, modeltypeChampTypes, displayNameChampTypes); |
champTypesComboBox.setWidth(largeurChampTypes); |
champTypesComboBox.getCombo().setEmptyText("Type..."); |
champTypesComboBox.addListener(Events.Select, new Listener<FieldEvent>() { |
public void handleEvent(FieldEvent fe) { |
} |
}); |
/* Placement des éléments dans le conteneur */ |
// le champ "types" doit être graphiquement placé avant les autres champs, |
// on doit donc retirer ces derniers avant d'insérer le champ "types" |
colonneConteneur.removeAll(); |
colonneConteneur.setWidth(largeurTotale); |
colonneChampTypes = new ColumnData(largeurChampTypes); |
colonneChampTypes.setWidth(largeurChampTypes); |
colonneConteneur.add(champTypesComboBox, colonneChampTypes); |
if (champValeurEstComboBox) { |
champValeurComboBox.setWidth(largeurChampValeur); |
colonneChampValeur.setWidth(largeurChampValeur); |
colonneConteneur.add(champValeurComboBox, colonneChampValeur); |
} else { |
champValeurTxt.setWidth(largeurChampValeur); |
colonneChampValeur.setWidth(largeurChampValeur); |
colonneConteneur.add(champValeurTxt, colonneChampValeur); |
} |
ajouterBouton.setWidth(largeurBouton); |
colonneBoutonAjouter.setWidth(largeurBouton); |
colonneConteneur.add(ajouterBouton, colonneBoutonAjouter); |
/* Modification de l'écouteur du bouton Ajouter */ |
ajouterBouton.removeAllListeners(); |
ajouterBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
// récupération de la valeur du champ "Valeur" |
String valeurChamp = ""; |
if (champValeurEstComboBox) { |
if (champValeurComboBox.getValeur() != null) { |
valeurChamp = champValeurComboBox.getValeur().getNom(); |
} |
} else { |
valeurChamp = champValeurTxt.getValue(); |
} |
// validation de la valeur avant ajout |
if ((valeurChamp == null) || valeurChamp.trim().equals("") || valeurChamp.trim().equals(valeurParDefaut)) { |
MessageBox.alert(titreErreur, valeurVideMsg, null); |
} else if (valeurs.get(valeurChamp) != null){ |
MessageBox.alert(titreErreur, valeurIdentiqueMsg, null); |
} else { |
if (validationMasque != null && !valeurChamp.matches(validationMasque)) { |
MessageBox.alert(titreErreur, valeurNonValideMsg, null); |
} else { |
String type = ""; |
String id = ""; |
Valeur valeur = champTypesComboBox.getValeur(); |
if (valeur != null) { |
type = valeur.getNom(); |
id = valeur.getId(); |
} else { |
type = champTypesComboBox.getCombo().getRawValue(); |
id = type; |
} |
if (type.trim().equals("")) { |
MessageBox.alert(Mediateur.i18nM.titreErreurSaisie(), Mediateur.i18nM.typeChampMulti(), null); |
} else { |
ajouterValeur(valeurChamp, type, id); |
} |
} |
} |
} |
}); |
} |
private void ajouterValeurAuRecapitulatif(String texte, String id) { |
String texteRecapitulatif = ""; |
if (champRecapitulatif.getValue() != null) { |
texteRecapitulatif = champRecapitulatif.getValue(); |
} |
texteRecapitulatif += id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte + aDonnee.SEPARATEUR_VALEURS; |
champRecapitulatif.setValue(texteRecapitulatif); |
} |
} |
/trunk/src/org/tela_botanica/client/composants/ChampMultiValeursPaginable.java |
---|
New file |
0,0 → 1,348 |
package org.tela_botanica.client.composants; |
import java.util.HashMap; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.composants.pagination.Proxy; |
import org.tela_botanica.client.composants.pagination.ProxyValeur; |
import org.tela_botanica.client.images.Images; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Valeur; |
import org.tela_botanica.client.modeles.aDonnee; |
import org.tela_botanica.client.util.Debug; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.data.ModelData; |
import com.extjs.gxt.ui.client.data.ModelType; |
import com.extjs.gxt.ui.client.event.ButtonEvent; |
import com.extjs.gxt.ui.client.event.Events; |
import com.extjs.gxt.ui.client.event.FieldEvent; |
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.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
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.HiddenField; |
import com.extjs.gxt.ui.client.widget.form.LabelField; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction; |
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.FormLayout; |
import com.extjs.gxt.ui.client.widget.layout.RowLayout; |
public class ChampMultiValeursPaginable extends LayoutContainer implements Rafraichissable { |
//TODO : changer le champRecapitulatif par une hashMap |
//TODO : autoriser la modification des champs saisis |
//-------------// |
// ATTRIBUTS // |
//-------------// |
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR); |
String idChampCache = null; |
String titreErreur = null; |
String valeurVideMsg = null; |
String valeurIdentiqueMsg = null; |
String valeurNonValideMsg = null; |
String valeurParDefaut = ""; |
String validationMasque = null; |
String exempleValidation = null; |
boolean champValeurEstComboBox = false; |
// Elements pour le champ 'valeurs' |
Field<String> champValeurTxt = null; |
ChampComboBoxRechercheTempsReelPaginable champValeurComboBox = null; |
HiddenField<String> champRecapitulatif = null; |
HashMap<String, LayoutContainer> valeurs = null; |
// Elements pour gérer le type de valeurs que contient le champ |
Proxy proxyChampValeur = null; |
ModelType modeltypeChampValeur = null; |
String displayNameChampValeur = "nom"; |
// Elements pour l'UI |
LayoutContainer principalLayout = null; |
LayoutContainer colonneConteneur = null; |
ColumnData colonneChampValeur = null; |
ColumnData colonneBoutonAjouter = null; |
Button ajouterBouton = null; |
int largeurTotale = 500; |
int largeurBouton = 20; |
int largeurChampValeur = 200; |
String boutonSupprimerLabel = ""; |
String nomLabelChampTxt = ""; |
//-------------// |
// METHODES // |
//-------------// |
/*-------------- |
Constructeur |
--------------*/ |
// Usage : Si champValeurEstComboBox est FAUX alors modeltype, proxy et displayName doivent être à Null. |
// Sinon ils doivent impérativement être non nuls. |
public ChampMultiValeursPaginable(String label, int largeurTotale, boolean champValeurEstComboBox, ModelType modeltype, Proxy proxy, String displayName) { |
this.champValeurEstComboBox = champValeurEstComboBox; |
if (champValeurEstComboBox) { |
if ((proxy == null) || (modeltype == null) || (displayName == null)) { |
MessageBox.alert("[ERREUR]","Constructeur de ChampMultiValeursPaginable - paramètre Null",null); |
} |
else { |
this.proxyChampValeur = proxy; |
this.modeltypeChampValeur = modeltype; |
this.displayNameChampValeur = displayName; |
} |
} |
initialiserChampMultiValeursPaginable(label, largeurTotale); |
} |
/*------------ |
Accesseurs |
------------*/ |
//------------// |
// Get //------------------------------------------------------------ |
public ChampComboBoxRechercheTempsReelPaginable getChampValeurComboBox() { |
if (champValeurEstComboBox) return this.champValeurComboBox; |
else return null; |
} |
public Field getChampValeurTxt() { |
if (!champValeurEstComboBox) return this.champValeurTxt; |
else return null; |
} |
public String getLabel() { |
return this.nomLabelChampTxt; |
} |
public String getValeurs() { |
String texteRecapitulatif = ""; |
if (champRecapitulatif.getValue() != null) { |
texteRecapitulatif = champRecapitulatif.getValue(); |
texteRecapitulatif = texteRecapitulatif.replaceAll("(.*)"+aDonnee.SEPARATEUR_VALEURS+"$", "$1"); |
} |
return texteRecapitulatif; |
} |
//------------// |
// Set //------------------------------------------------------------ |
public void setLabel(String label) { |
if (label == null) { |
label = ""; |
} |
nomLabelChampTxt = label; |
} |
public void setLargeurTotale(int largeur) { |
this.largeurTotale = largeur; |
largeurChampValeur = largeurTotale - largeurBouton; |
} |
public void setValidation (String validation, String exempleValidation) { |
this.validationMasque = validation; |
this.exempleValidation = exempleValidation; |
this.valeurNonValideMsg = Mediateur.i18nM.valeurNonValideMsg(exempleValidation); |
} |
public void setValeurParDefaut(String valeur) { |
this.valeurParDefaut = valeur; |
champValeurTxt.setValue(valeur); |
} |
public void setValeurBoutonSupprimer(String valeur) { |
this.boutonSupprimerLabel = valeur; |
} |
/*------------------ |
Méthodes publiques |
-------------------*/ |
public void peupler(String chaineExistante) { |
if (valeurs.size()>0) { |
reinitialiser(); |
} |
if (chaineExistante != null && !chaineExistante.trim().equals("")) { |
String[] valeurs = chaineExistante.split(aDonnee.SEPARATEUR_VALEURS); |
for (int i = 0; i < valeurs.length; i++) { |
ajouterValeur(valeurs[i]); |
} |
} |
} |
@Override |
public void rafraichir(Object nouvellesDonnees) { |
} |
/*------------------- |
Méthodes protégées |
--------------------*/ |
protected void ajouterValeur(final String texte, final String strValeur, final String id) { |
//Implémenté dans classe inférieure |
} |
protected void ajouterValeur(final String texte) { |
LayoutContainer colonneLayout = new LayoutContainer(); |
colonneLayout.setLayout(new ColumnLayout()); |
valeurs.put(texte, colonneLayout); |
Text champTxt = new Text(); |
champTxt.setText(texte); |
colonneLayout.add(champTxt, new ColumnData(largeurChampValeur)); |
Button supprimerBouton = new Button(); |
supprimerBouton.setIcon(Images.ICONES.supprimer()); |
supprimerBouton.setText(boutonSupprimerLabel); |
supprimerBouton.setData("valeur", texte); |
supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
String valeur = ce.getComponent().getData("valeur"); |
LayoutContainer valeurLayout = valeurs.get(valeur); |
principalLayout.remove(valeurLayout); |
valeurs.remove(valeur); |
supprimerValeurDuRecapitulatif(valeur); |
actualiserLayoutGlobal(); |
} |
}); |
colonneLayout.add(supprimerBouton, new ColumnData(largeurBouton)); |
// Ajout du layout de la valeur au layout principal |
principalLayout.add(colonneLayout); |
// Ajout de la valeur au champ récapitulatif des valeurs ajoutées |
ajouterValeurAuRecapitulatif(texte); |
reinitialiserChamp(); |
actualiserLayoutGlobal(); |
} |
protected void reinitialiserChamp() { |
if (champValeurEstComboBox) { |
champValeurComboBox.getCombo().clear(); |
} else { |
champValeurTxt.setValue(valeurParDefaut); |
} |
} |
protected void actualiserLayoutGlobal() { |
layout(); |
} |
protected void ajouterValeurAuRecapitulatif(String texte) { |
String texteRecapitulatif = ""; |
if (champRecapitulatif.getValue() != null) { |
texteRecapitulatif = champRecapitulatif.getValue(); |
} |
texteRecapitulatif += texte + aDonnee.SEPARATEUR_VALEURS; |
champRecapitulatif.setValue(texteRecapitulatif); |
} |
protected void supprimerValeurDuRecapitulatif(String texte) { |
if (champRecapitulatif.getValue() != null) { |
String texteRecapitulatif = champRecapitulatif.getValue(); |
texteRecapitulatif = texteRecapitulatif.replace(texte + aDonnee.SEPARATEUR_VALEURS, ""); |
champRecapitulatif.setValue(texteRecapitulatif); |
} |
} |
protected void reinitialiser() { |
//TODO : pourrait etre mieux fait si les valeurs étaient enregistrées dans un |
// layout particulier. Il suffirait alors d'enlever les valeurs de ce layout. |
principalLayout.removeAll(); |
initialiserChampMultiValeursPaginable(nomLabelChampTxt, largeurTotale); |
} |
/*------------------ |
Méthodes privées |
-------------------*/ |
private void initialiserChampMultiValeursPaginable(String label, int largeurTotale) { |
setLabel(label); |
setLargeurTotale(largeurTotale); |
titreErreur = Mediateur.i18nC.erreurSaisieTitre(); |
valeurVideMsg = Mediateur.i18nC.demanderValeur(); |
valeurIdentiqueMsg = Mediateur.i18nC.valeurDejaPresente(); |
valeurs = new HashMap<String, LayoutContainer>(); |
champRecapitulatif = new HiddenField<String>(); |
champRecapitulatif.setValue(""); |
setLayout(new FormLayout()); |
creerChampMultiValeurs(); |
} |
private void creerChampMultiValeurs() { |
principalLayout = new LayoutContainer(); |
principalLayout.setLayout(new RowLayout()); |
/* Creation du champ Valeur */ |
LabelField label = new LabelField(nomLabelChampTxt + ":"); |
label.setWidth("95%"); |
principalLayout.add(label); |
colonneConteneur = new LayoutContainer(); |
colonneConteneur.setLayout(new ColumnLayout()); |
colonneChampValeur = new ColumnData(largeurChampValeur); |
if (champValeurEstComboBox) { |
champValeurComboBox = new ChampComboBoxRechercheTempsReelPaginable(proxyChampValeur, modeltypeChampValeur, displayNameChampValeur); |
champValeurComboBox.setWidth(largeurChampValeur); |
champValeurComboBox.getCombo().setEmptyText("Valeur..."); |
colonneConteneur.add(champValeurComboBox, colonneChampValeur); |
} else { |
champValeurTxt = new TextField<String>(); |
champValeurTxt.setWidth(largeurChampValeur); |
champValeurTxt.setEmptyText("Valeur..."); |
colonneConteneur.add(champValeurTxt, colonneChampValeur); |
} |
/* Creation du bouton Ajouter */ |
ajouterBouton = new Button(); |
ajouterBouton.setWidth(largeurBouton); |
ajouterBouton.setIcon(Images.ICONES.ajouter()); |
ajouterBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
// récupération de la valeur du champ "Valeur" |
String valeurChamp = ""; |
if (champValeurEstComboBox) { |
if (champValeurComboBox.getValeur() != null) { |
valeurChamp = champValeurComboBox.getValeur().getNom(); |
} |
} else { |
valeurChamp = champValeurTxt.getValue(); |
} |
// validation de la valeur avant ajout |
if ((valeurChamp == null) || valeurChamp.trim().equals("") || valeurChamp.trim().equals(valeurParDefaut)) { |
MessageBox.alert(titreErreur, valeurVideMsg, null); |
} else if (valeurs.get(valeurChamp) != null){ |
MessageBox.alert(titreErreur, valeurIdentiqueMsg, null); |
} else { |
if (validationMasque != null && !valeurChamp.matches(validationMasque)) { |
MessageBox.alert(titreErreur, valeurNonValideMsg, null); |
} else { |
ajouterValeur(valeurChamp); |
} |
} |
} |
}); |
colonneBoutonAjouter = new ColumnData(largeurBouton); |
colonneConteneur.add(ajouterBouton, colonneBoutonAjouter); |
principalLayout.add(champRecapitulatif); |
principalLayout.add(colonneConteneur); |
add(principalLayout); |
} |
} |
/trunk/src/org/tela_botanica/client/composants/pagination/ProxyValeur.java |
---|
New file |
0,0 → 1,73 |
package org.tela_botanica.client.composants.pagination; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
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.ValeurListe; |
import org.tela_botanica.client.modeles.ValeurListeAsyncDao; |
import org.tela_botanica.client.util.Debug; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig; |
import com.extjs.gxt.ui.client.data.BasePagingLoadResult; |
import com.extjs.gxt.ui.client.data.DataReader; |
import com.extjs.gxt.ui.client.data.MemoryProxy; |
import com.extjs.gxt.ui.client.data.ModelData; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.user.client.rpc.AsyncCallback; |
public class ProxyValeur<D> extends Proxy { |
private String nomListe = ""; |
public ProxyValeur(String nomListe) { |
super(); |
this.nomListe = nomListe; |
} |
@Override |
public void load(TransformateurJSONaModelData reader, Object loadConfig, AsyncCallback callback, String recherche) { |
this.reader = reader; |
this.callback = callback; |
this.loadConfig = loadConfig; |
BasePagingLoadConfig lc = (BasePagingLoadConfig)loadConfig; |
mediateur.obtenirListeValeurEtRafraichir(this, nomListe, true, recherche, lc.getOffset(), lc.getLimit()); |
} |
@Override |
@SuppressWarnings("unchecked") |
public void rafraichir(Object nouvellesDonnees) { |
try |
{ |
data = nouvellesDonnees; |
D d = null; |
if (reader != null) |
{ |
d = (D) reader.read(loadConfig, data); |
} |
else |
{ |
d = (D) data; |
if (d instanceof List) |
{ |
d = (D) new ArrayList((List) d); |
} |
} |
callback.onSuccess(d); |
} |
catch (Exception e) |
{ |
callback.onFailure(e); |
} |
} |
} |
/trunk/src/org/tela_botanica/client/composants/pagination/ChargeurListe.java |
---|
New file |
0,0 → 1,62 |
package org.tela_botanica.client.composants.pagination; |
import com.extjs.gxt.ui.client.data.BasePagingLoader; |
import com.extjs.gxt.ui.client.data.LoadEvent; |
import com.extjs.gxt.ui.client.data.PagingLoadResult; |
import com.google.gwt.user.client.rpc.AsyncCallback; |
public class ChargeurListe<D extends PagingLoadResult<?>> extends BasePagingLoader<D> { |
private String recherche = ""; |
@SuppressWarnings("unchecked") |
public ChargeurListe(Proxy proxy, TransformateurJSONaModelData reader) { |
super(proxy, reader); |
} |
public boolean load(Object loadConfig, String recherche) { |
if (fireEvent(BeforeLoad, new LoadEvent(this, loadConfig))) { |
lastConfig = loadConfig; |
this.recherche = recherche; |
loadData(loadConfig, recherche); |
return true; |
} |
else return false; |
} |
public boolean load(Object loadConfig) { |
if (fireEvent(BeforeLoad, new LoadEvent(this, loadConfig))) { |
lastConfig = loadConfig; |
loadData(loadConfig, recherche); |
return true; |
} |
return false; |
} |
public void load(int offset, int limit) { |
this.offset = offset; |
this.limit = limit; |
load(); |
} |
public boolean load() { |
Object config = (reuseConfig && lastConfig != null) ? lastConfig : newLoadConfig(); |
config = prepareLoadConfig(config); |
return load(config); |
} |
@SuppressWarnings("unchecked") |
protected void loadData(final Object config, String recherche) { |
AsyncCallback<D> callback = new AsyncCallback<D>() { |
public void onFailure(Throwable caught) { |
onLoadFailure(config, caught); |
} |
public void onSuccess(D result) { |
onLoadSuccess(config, result); |
} |
}; |
((Proxy)proxy).load((TransformateurJSONaModelData)reader, config, callback, recherche); |
} |
} |
/trunk/src/org/tela_botanica/client/composants/pagination/Proxy.java |
---|
New file |
0,0 → 1,55 |
package org.tela_botanica.client.composants.pagination; |
import java.util.ArrayList; |
import java.util.List; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.util.Debug; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig; |
import com.extjs.gxt.ui.client.data.DataReader; |
import com.extjs.gxt.ui.client.data.MemoryProxy; |
import com.google.gwt.user.client.rpc.AsyncCallback; |
public abstract class Proxy<D> extends MemoryProxy<D> implements Rafraichissable { |
protected Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR); |
protected DataReader<D> reader = null; |
protected Object loadConfig = null; |
protected AsyncCallback<D> callback = null; |
protected static Object data; |
public Proxy() { |
super(data); |
} |
public abstract void load(TransformateurJSONaModelData<D> reader, Object loadConfig, AsyncCallback<D> callback, String recherche); |
@Override |
@SuppressWarnings("unchecked") |
public void rafraichir(Object nouvellesDonnees) { |
try { |
data = nouvellesDonnees; |
D d = null; |
if (reader != null) { |
d = reader.read(loadConfig, data); |
} else { |
d = (D) data; |
if (d instanceof List) { |
d = (D) new ArrayList((List) d); |
} |
} |
callback.onSuccess(d); |
} catch (Exception e) { |
callback.onFailure(e); |
} |
} |
} |
/trunk/src/org/tela_botanica/client/composants/pagination/TransformateurJSONaModelData.java |
---|
New file |
0,0 → 1,133 |
package org.tela_botanica.client.composants.pagination; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.List; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.util.Debug; |
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig; |
import com.extjs.gxt.ui.client.data.BasePagingLoadResult; |
import com.extjs.gxt.ui.client.data.DataField; |
import com.extjs.gxt.ui.client.data.DataReader; |
import com.extjs.gxt.ui.client.data.JsonPagingLoadResultReader; |
import com.extjs.gxt.ui.client.data.JsonReader; |
import com.extjs.gxt.ui.client.data.ListLoadResult; |
import com.extjs.gxt.ui.client.data.ModelData; |
import com.extjs.gxt.ui.client.data.ModelType; |
import com.extjs.gxt.ui.client.data.PagingLoadConfig; |
import com.extjs.gxt.ui.client.data.PagingLoadResult; |
import com.google.gwt.core.client.JavaScriptObject; |
import com.google.gwt.i18n.client.DateTimeFormat; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONNumber; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
public class TransformateurJSONaModelData<D> extends JsonPagingLoadResultReader<D> { |
private ModelType modelType = null; |
public TransformateurJSONaModelData(ModelType modelType) { |
super(modelType); |
this.modelType = modelType; |
} |
@SuppressWarnings("unchecked") |
@Override |
protected Object createReturnData(Object loadConfig, List<ModelData> records, int totalCount) { |
ListLoadResult<?> result = (ListLoadResult<?>) super.createReturnData(loadConfig, records, totalCount); |
if (result instanceof PagingLoadResult) { |
PagingLoadResult<?> r = (PagingLoadResult<?>) result; |
r.setTotalLength(totalCount); |
if (loadConfig instanceof PagingLoadConfig) { |
PagingLoadConfig config = (PagingLoadConfig) loadConfig; |
r.setOffset(config.getOffset()); |
} |
} |
return result; |
} |
@Override |
protected BasePagingLoadResult<ModelData> newLoadResult(Object loadConfig, List<ModelData> models) { |
return new BasePagingLoadResult<ModelData>(models); |
} |
@SuppressWarnings("unchecked") |
public D read(Object loadConfig, Object data) { |
JSONObject jsonRoot = null; |
if (data instanceof JSONObject) { |
jsonRoot = (JSONObject) data; |
} |
JSONArray root = (JSONArray) jsonRoot.get(modelType.getRoot()); |
int size = root.size(); |
ArrayList<ModelData> models = new ArrayList<ModelData>(); |
for (int i = 0; i < size; i++) { |
JSONObject obj = (JSONObject) root.get(i); |
ModelData model = newModelInstance(); |
for (int j = 0; j < modelType.getFieldCount(); j++) { |
DataField field = modelType.getField(j); |
String name = field.getName(); |
Class type = field.getType(); |
String map = field.getMap() != null ? field.getMap() : field.getName(); |
JSONValue value = obj.get(map); |
if (value == null) continue; |
if (value.isArray() != null) { |
// nothing |
} else if (value.isBoolean() != null) { |
model.set(name, value.isBoolean().booleanValue()); |
} else if (value.isNumber() != null) { |
if (type != null) { |
Double d = value.isNumber().doubleValue(); |
if (type.equals(Integer.class)) { |
model.set(name, d.intValue()); |
} else if (type.equals(Long.class)) { |
model.set(name, d.longValue()); |
} else if (type.equals(Float.class)) { |
model.set(name, d.floatValue()); |
} else { |
model.set(name, d); |
} |
} else { |
model.set(name, value.isNumber().doubleValue()); |
} |
} else if (value.isObject() != null) { |
// nothing |
} else if (value.isString() != null) { |
String s = value.isString().stringValue(); |
if (type != null) { |
if (type.equals(Date.class)) { |
if ("timestamp".equals(field.getFormat())) { |
Date d = new Date(Long.parseLong(s) * 1000); |
model.set(name, d); |
} else { |
DateTimeFormat format = DateTimeFormat.getFormat(field.getFormat()); |
Date d = format.parse(s); |
model.set(name, d); |
} |
} |
} else { |
model.set(name, s); |
} |
} else if (value.isNull() != null) { |
model.set(name, null); |
} |
} |
models.add(model); |
} |
int totalCount = models.size(); |
if (modelType.getTotalName() != null) { |
totalCount = getTotalCount(jsonRoot); |
} |
return (D) createReturnData(loadConfig, models, totalCount); |
} |
} |
/trunk/src/org/tela_botanica/client/configuration |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/configuration:r1136-1291 |
/trunk/src/org/tela_botanica/client/modeles/aDonnee.java |
---|
430,20 → 430,20 |
* Renvoie une chaîne de caractère formatée et encodée pour POST avec toutes les propriétés du modèle |
* */ |
public String obtenirChainePOST() { |
String post = ""; |
FastMap<?> proprietees = (FastMap<?>) getProperties(); |
Collection<String> cles = proprietees.keySet(); |
Iterator<String> it = cles.iterator(); |
System.out.println(cles); |
while (it.hasNext()) { |
String cle = it.next(); |
//Les Radio Box couplées à la fonction autobind créer des variables gxt.RadioGroup.X, qu'il ne faut pas mettre dans la requête |
//Les Radio Box couplées à la fonction autobind créent des variables gxt.RadioGroup.X, qu'il ne faut pas mettre dans la requête |
if (!cle.startsWith("gxt.")&&!cle.matches("^_.+_$")) { |
//Si, et seulement si, la valeur diffère de la valeur initiale OU la clé est dans les champs obligatoire |
if (Arrays.asList(getChampsObligatoires()).contains(getPrefixe() + "_" + cle) || ((valeursInitiales.get(cle) != null&& !valeursInitiales.get(cle).equals(get(cle)))||valeursInitiales.get(cle) == null)) { |
if (Arrays.asList(getChampsObligatoires()).contains(getPrefixe() + "_" + cle) || ((valeursInitiales.get(cle) != null && !valeursInitiales.get(cle).equals(get(cle))) || valeursInitiales.get(cle) == null)) { |
post += getPrefixe() + "_" + cle + "=" + URL.encodeComponent(renvoyerValeurCorrecte(cle)); |
if (it.hasNext()) { |
post += "&"; |
451,6 → 451,7 |
} |
} |
} |
return post; |
} |
/trunk/src/org/tela_botanica/client/modeles/personne/PersonneAsyncDao.java |
---|
27,7 → 27,6 |
} |
public void selectionner(String personneId, String projetId, String nomComplet, final int pageCourante, final int nbElements) { |
String[] parametres = {personneId, projetId, nomComplet}; |
HashMap<String, String> restrictions = new HashMap<String, String>(); |
52,8 → 51,7 |
personnes = new PersonneListe(reponse); |
} else { |
personnes = new PersonneListe(reponse.get(1).isArray(), reponse.get(0).isNumber(), vueARafraichir); |
} |
} |
personnes.setTaillePage(nbElements); |
personnes.setPageCourante(pageCourante); |
info.setDonnee(0, personnes); |
67,11 → 65,9 |
}); |
} |
public void ajouter(Personne personne) { |
public void ajouter(Personne personne) { |
String postDonneesEncodees = personne.obtenirChainePOST(); |
postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId; |
postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId; |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM); |
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() { |
@Override |
89,7 → 85,7 |
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} |
}); |
}); |
} |
public void modifier(Personne personne) { |
/trunk/src/org/tela_botanica/client/modeles/collection/CollectionAsyncDao.java |
---|
101,8 → 101,7 |
} |
public void modifier(Collection collection) { |
String postDonneesEncodees = construirePost(collection.getId(), collection); |
String postDonneesEncodees = construirePost(collection.getId(), collection); |
String[] parametres = {collection.getId()}; |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres); |
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() { |
/trunk/src/org/tela_botanica/client/modeles/structure/StructureAPersonneAsyncDao.java |
---|
57,7 → 57,7 |
}); |
} |
public void ajouter(String structureId, StructureAPersonne personnel) { |
public void ajouter(String structureId, StructureAPersonne personnel) { |
String postDonneesEncodees = construirePost(structureId, personnel); |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM); |
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() { |
72,7 → 72,7 |
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} |
}); |
}); |
} |
public void modifier(StructureAPersonne personnel) { |
/trunk/src/org/tela_botanica/client/modeles/structure/Structure.java |
---|
253,7 → 253,7 |
return renvoyerValeurCorrecte("longitude"); |
} |
public void setLongitude(String longitude) { |
if (longitude != null) { |
if (longitude != null) { |
longitude = longitude.replace(".", ","); |
} |
this.set("longitude", longitude); |
265,8 → 265,8 |
} |
public void setTelephone(String tel) { |
this.set("truk_telephone", tel); |
} |
} |
// TELEPHONE FIXE |
public String getTelephoneFixe() { |
return getInfoDenormaliseParType(renvoyerValeurCorrecte("truk_telephone"), Personne.TELEPHONE_FIXE); |
282,6 → 282,7 |
public void setFax(String fax) { |
modifierChaineDenormaliseParType("truk_telephone", Personne.TELEPHONE_FAX, fax); |
} |
// COURRIEL |
public String getCourriel() { |
/trunk/src/org/tela_botanica/client/modeles/ValeurListeAsyncDao.java |
---|
5,9 → 5,12 |
import org.tela_botanica.client.http.JsonRestRequestBuilder; |
import org.tela_botanica.client.http.JsonRestRequestCallback; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.util.Debug; |
import org.tela_botanica.client.util.UtilDAO; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONBoolean; |
import com.google.gwt.json.client.JSONNumber; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
14,49 → 17,190 |
public class ValeurListeAsyncDao { |
private static HashMap<String, ValeurListe> ontologieCache = new HashMap<String, ValeurListe>(); |
private static HashMap<String, Object> ontologieCache = new HashMap<String, Object>(); |
private static HashMap<String, HashMap<Integer, Object>> pagedOntologieCache = new HashMap<String, HashMap<Integer, Object>>(); |
private static final String SERVICE_NOM = "CoelValeurListe"; |
private Rafraichissable vueARafraichir = null; |
private static ValeurListe tempListe = new ValeurListe(); |
private int cptPage = 0; |
private int limiteJREST = 150; |
public ValeurListeAsyncDao(Rafraichissable vueCourante) { |
vueARafraichir = vueCourante; |
} |
public void obtenirListe(Integer cle) { |
selectionner("id", cle, null, null); |
public static HashMap<String, Object> getOntologieCache() { |
return ontologieCache; |
} |
public void chargerListe(boolean nextPage, String type, Integer cle, String abv, String idValeur, boolean pagination, String recherche, int start, int nbElements) { |
/** Si nextpage est VRAI, alors cela signifie que la liste est plus grande |
que la limite du JREST et l'on doit relancer une requete pour obtenir |
la page suivante **/ |
if (nextPage) { |
cptPage++; |
selectionner(type, cle, abv, idValeur, pagination, recherche, cptPage*limiteJREST, limiteJREST); |
} |
/** Sinon cela signifie que le chargement de la liste est terminé et on peut |
la mettre en cache et retourner la réponse au demandeur **/ |
else { |
// on met en cache |
String id = String.valueOf(cle); |
String abreviationStr = ""; |
if (abv != null) { |
abreviationStr = abv; |
int indexPoint = abreviationStr.indexOf(".", 0); |
abreviationStr = abreviationStr.substring(0, indexPoint); |
id = id+abreviationStr; |
} |
// réinitialiser le compteur |
cptPage = 0; |
// et on met à jour le demandeur des données |
if (ontologieCache.get(id) != null) { |
vueARafraichir.rafraichir(ontologieCache.get(id)); |
} |
} |
} |
public void obtenirListe(Integer cle) { |
selectionner("id", cle, null, null, false, null, -1, -1); |
} |
public void obtenirListe(String type, String identifiantValeur) { |
selectionner(type, null, null, identifiantValeur, false, null, -1, -1); |
} |
public void obtenirListe(Integer cle, boolean pagination, String recherche, int start, int limit) { |
selectionner("nom", cle, null, null, pagination, recherche, start, limit); |
} |
public void selectionner(String type, Integer cle, String abv, String idValeur) { |
selectionner(type, cle, abv, idValeur, false, null, -1, -1); |
} |
public void selectionner(final String type, final Integer cle, final String abv, final String idValeur, final boolean pagination, final String recherche, final int start, final int limit) { |
// La cleParent en Integer est insuffisante pour les liste valeurs comme Région qui on plusieurs sections sur leur liste |
// (ex : on ne sélectionne que les régions FR.__ puis les régions ES.__ sur la liste 1078 .... |
final String cleParent = cle + (abv == null ? "" : abv); |
final String cleParentPourCache = cle + (abv == null ? "" : abv); |
final String cleParent = cle+""; |
if (ontologieCache.containsKey(cleParent)) { |
vueARafraichir.rafraichir(ontologieCache.get(cleParent)); |
} else { |
String paramAbv = (type.equals("id") ? null : abv); |
String[] parametres = {type, cleParent.toString(), paramAbv, idValeur}; |
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres); |
rb.envoyerRequete(null, new JsonRestRequestCallback() { |
String nom = ""; |
if ( (recherche == null) || (recherche.equals("")) ) nom = ""; |
else { |
nom = recherche+"%"; |
} |
String abreviation = ""; |
String paramAbv = ""; |
if (type.equals("ab") || type.equals("abv")) { |
int positionPoint = abv.indexOf("."); |
if (positionPoint != -1) abreviation = abv.substring(0, positionPoint)+"%"; |
else abreviation=abv+"%"; |
} |
paramAbv = abreviation; |
String[] parametres = {type, cleParent, paramAbv, idValeur, nom}; |
HashMap<String, String> restrictions = new HashMap<String, String>(); |
if (pagination) { |
restrictions.put("limit", String.valueOf(limit)); |
restrictions.put("start", String.valueOf(start)); |
restrictions.put("orderby", "cmlv_nom"); |
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions); |
rb.envoyerRequete(null, new JsonRestRequestCallback() |
{ |
@Override |
public void surReponse(JSONValue responseValue) { |
if (responseValue.isObject() != null) { |
final JSONObject reponse = responseValue.isObject(); |
JSONString listeId = reponse.get("id").isString(); |
JSONArray listeValeurs = reponse.get("valeurs").isArray(); |
if (listeId != null) { |
// Transformation du tableau JSON réponse en Liste |
ValeurListe liste = new ValeurListe(listeId, listeValeurs); |
// Stockage en cache |
ontologieCache.put(cleParent, liste); |
// et on met à jour le demandeur des données |
vueARafraichir.rafraichir(liste); |
} |
} |
public void surReponse(JSONValue responseValue) |
{ |
vueARafraichir.rafraichir(responseValue); |
} |
}); |
} |
} |
else |
{ |
boolean nextPage = (start > 0); |
if (nextPage) |
{ |
restrictions.put("start", String.valueOf(start)); |
restrictions.put("limit", String.valueOf(limit)); |
restrictions.put("orderby", "cmlv_nom"); |
} |
else |
{ |
restrictions.put("orderby", "cmlv_nom"); |
} |
// si l'on est pas dans un processus de récupération d'une liste |
// et si le cache contient déjà la liste recherchée |
if (ontologieCache.containsKey(cleParentPourCache) && !nextPage) |
{ |
vueARafraichir.rafraichir(ontologieCache.get(cleParentPourCache)); |
} |
else |
{ |
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions); |
rb.envoyerRequete(null, new JsonRestRequestCallback() |
{ |
@Override |
public void surReponse(JSONValue responseValue) |
{ |
if (responseValue.isObject() != null) |
{ |
/** Récuperation des différents paramètres de la réponse JSON **/ |
final JSONObject reponse = responseValue.isObject(); |
JSONString listeId = reponse.get("id").isString(); |
JSONArray listeValeurs = reponse.get("valeurs").isArray(); |
JSONNumber nbElements = reponse.get("nbElements").isNumber(); |
JSONBoolean getNextPage = reponse.get("getNextPage").isBoolean(); |
/** Gestion de l'abreviation (pour la liste des régions) **/ |
String abreviationStr = ""; |
if (reponse.get("abreviation") != null) { |
abreviationStr = reponse.get("abreviation").isString().stringValue(); |
int a = abreviationStr.indexOf("%", 1); |
abreviationStr = abreviationStr.substring(1, a); |
} |
else { |
abreviationStr = ""; |
} |
/** si l'on a bien reçu une liste de valeurs **/ |
if (listeId != null) |
{ |
/** Transformation du tableau JSON réponse en ValeurListe **/ |
String id = listeId.stringValue(); |
ValeurListe liste = new ValeurListe(new JSONString(id), abreviationStr, listeValeurs, nbElements); |
/** Si la liste existe deja en cache **/ |
String identifiantCache = (abreviationStr=="") ? id : (id+abreviationStr); |
if (ontologieCache.get(id) != null) |
{ |
/** Alors on concatène la liste existante avec celle qu'on vient de recevoir **/ |
((ValeurListe)ontologieCache.get(identifiantCache)).concatenerListe(liste); |
} |
/** Sinon on l'insère simplement dans le cache **/ |
else { |
ontologieCache.put(identifiantCache,liste); |
} |
/** Appel à la méthode qui gère le retour à l'appelant ou la suite du chargement **/ |
chargerListe(getNextPage.booleanValue(), type, liste.getId(), abv, idValeur, pagination, recherche, start, limit); |
} |
} |
} |
}); |
} |
} |
} |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/publication/PublicationAsyncDao.java |
---|
82,8 → 82,6 |
String postDonneesEncodees = publication.obtenirChainePOST()+"&cmhl_ce_modifier_par="+utilisateurId; |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM); |
Debug.log("|> PublicationAsyncDao.ajouter(Publication publication) : postDonneesEncodees="+postDonneesEncodees); |
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() { |
@Override |
/trunk/src/org/tela_botanica/client/modeles/publication/PublicationAPersonneListe.java |
---|
20,8 → 20,7 |
public PublicationAPersonneListe(JSONArray auteurs) { |
super(auteurs.size()) ; |
final int taillemax = auteurs.size(); |
final int taillemax = auteurs.size(); |
for (int i = 0; i < taillemax; i++) { |
JSONObject publicationAPersonneCourante = auteurs.get(i).isObject() ; |
/trunk/src/org/tela_botanica/client/modeles/publication/PublicationAPersonneAsyncDao.java |
---|
29,18 → 29,8 |
} |
public void selectionner(String publicationId, String personnesId, String roleId) { |
Debug.log("|> BEGIN PublicationAPersonneAsyncDAO.selectionner(String publicationId, String personnesId, String roleId)"); |
Debug.log("|--> Requete, publicationId="+publicationId+", personnesId="+personnesId+", roleId="+roleId); |
String[] parametres = {publicationId, personnesId, roleId}; |
Debug.log("|--> Requete, SERVICE_NOM ="+SERVICE_NOM); |
Debug.log("|--> Requete, parametres ="+parametres); |
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres); |
rb.envoyerRequete(null, new JsonRestRequestCallback() { |
@Override |
public void surReponse(JSONValue responseValue) { |
49,53 → 39,30 |
if (responseValue.isObject() != null) { |
final JSONObject reponse = responseValue.isObject(); |
// Transformation du tableau JSON réponse en ListeInstitution |
PublicationAPersonne publicationAPersonne = new PublicationAPersonne(reponse); |
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : publicationAPersonne="+publicationAPersonne.toString()); |
PublicationAPersonne publicationAPersonne = new PublicationAPersonne(reponse); |
// et on met à jour le demandeur des données |
vueARafraichir.rafraichir(publicationAPersonne); |
} else if (responseValue.isArray() != null) { |
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : responseValue.isArray()"); |
} else if (responseValue.isArray() != null) { |
final JSONArray reponse = responseValue.isArray(); |
PublicationAPersonneListe publicationsAPersonneListe = new PublicationAPersonneListe(reponse); |
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : publicationsAPersonneListe="+publicationsAPersonneListe.toString()); |
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : appel à rafraichir(publicationsAPersonneListe)"); |
vueARafraichir.rafraichir(publicationsAPersonneListe); |
} else { |
GWT.log("La réponse n'est pas un objet ou un tableau JSON et vaut : "+responseValue.toString(), null); |
} |
} else { |
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : ELSE"); |
} else { |
// Dans le cas, où nous demandons toutes les publication et qu'il n'y en a pas, nous retournons un objet vide |
PublicationAPersonneListe publicationAPersonneListe = new PublicationAPersonneListe(0); |
vueARafraichir.rafraichir(publicationAPersonneListe); |
} |
} |
}); |
Debug.log("|> END PublicationAPersonneAsyncDAO.selectionner(String publicationId, String personnesId, String roleId)"); |
}); |
} |
public void ajouter(String publicationId, String personnesId, String roleId) { |
Debug.log("<8-8> BEGIN PublicationAPersonneAsyncDao.ajouter()"); |
Debug.log("<8-8> Service_nom="+SERVICE_NOM); |
String postDonneesEncodees = "cpuap_id_publication="+URL.encodeComponent(publicationId) |
+"&cpuap_id_auteur="+URL.encodeComponent(personnesId) |
+"&cpuap_id_role="+URL.encodeComponent(roleId) |
+"&cmhl_ce_modifier_par="+utilisateurId; |
Debug.log("<8-8> postDonneesEncodees="+postDonneesEncodees); |
+"&cmhl_ce_modifier_par="+utilisateurId; |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM); |
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() { |
@Override |
103,8 → 70,6 |
traiterReponse(reponseValeur, "ajout_publication_a_personne"); |
} |
}); |
Debug.log("<8-8> END PublicationAPersonneAsyncDao.ajouter()"); |
} |
public void modifier(String publicationId, String personnesId, String roleId) { |
125,11 → 90,7 |
public void supprimer(String idPublicationAPersonne) { |
String[] parametres = {utilisateurId, idPublicationAPersonne}; |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres); |
Debug.log("888> BEGIN PublicationAPersonneAsyncDao.supprimer()"); |
Debug.log("888> idPublicationAPersonne="+idPublicationAPersonne); |
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres); |
rb.envoyerRequeteSuppression(new JsonRestRequestCallback() { |
@Override |
public void surReponse(JSONValue responseValue) { |
142,8 → 103,6 |
} |
} |
}); |
Debug.log("888> END PublicationAPersonneAsyncDao.supprimer()"); |
} |
private void traiterReponse(JSONValue reponseValeur, String type) { |
/trunk/src/org/tela_botanica/client/modeles/Valeur.java |
---|
3,6 → 3,9 |
import java.util.Iterator; |
import java.util.Set; |
import org.tela_botanica.client.util.Debug; |
import com.extjs.gxt.ui.client.data.ModelData; |
import com.google.gwt.json.client.JSONObject; |
public class Valeur extends aDonnee { |
44,6 → 47,17 |
this.set("description", description); |
} |
public Valeur(ModelData model) |
{ |
Debug.log("id_valeur = "+model.get("cmlv_id_valeur")); |
Debug.log("nom = "+model.get("cmlv_nom")); |
this.set("id_valeur", model.get("cmlv_id_valeur")); |
this.set("nom", model.get("cmlv_nom")); |
this.set("abreviation", model.get("cmlv_abreviation")); |
this.set("description", model.get("cmlv_description")); |
} |
@Override |
protected String getPrefixe() { |
return PREFIXE; |
/trunk/src/org/tela_botanica/client/modeles/ValeurListe.java |
---|
1,6 → 1,19 |
package org.tela_botanica.client.modeles; |
import java.util.ArrayList; |
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.interfaces.ListePaginable; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.util.Debug; |
import com.extjs.gxt.ui.client.Registry; |
import com.google.gwt.i18n.client.Dictionary; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONNumber; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONString; |
18,7 → 31,13 |
*/ |
private static final long serialVersionUID = 7784635999621813450L; |
private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR); |
private int nbElementsTotal; |
// Id de la meta-liste dans la base de données |
private int id = 0; |
private String abv = ""; |
/** |
* Constructeur sans paramètres |
49,7 → 68,16 |
this.constuireObjet(listeValeurs); |
} |
private void constuireObjet(JSONArray liste) { |
public ValeurListe(JSONString listeId, String abv, JSONArray listeValeurs, JSONNumber nbElements) { |
super(listeValeurs.size()); |
this.setId(Integer.parseInt(listeId.stringValue())); |
this.abv = abv; |
this.setNbElementsTotal(nbElements.toString()); |
this.constuireObjet(listeValeurs); |
} |
protected void constuireObjet(JSONArray liste) { |
final int taillemax = liste.size(); |
for (int i = 0; i < taillemax; i++) { |
68,6 → 96,10 |
public void setId(int id) { |
this.id = id; |
} |
public void setNbElementsTotal(String nbElements) { |
this.nbElementsTotal = Integer.parseInt(nbElements); |
} |
/** |
* @return l'identifiant de la liste |
76,7 → 108,34 |
return id; |
} |
public String getFullId() { |
return (id+abv); |
} |
public void ajouter(Valeur val) { |
this.put(val.getId(), val); |
} |
public ValeurListe cloner() |
{ |
ValeurListe l = new ValeurListe(); |
Iterator i = this.keySet().iterator(); |
while (i.hasNext()) |
{ |
String clef = (String)i.next(); |
Valeur valeur = this.get(clef); |
l.put(clef, valeur); |
} |
return l; |
} |
public void concatenerListe(ValeurListe lv) { |
this.putAll(lv); |
this.setId(lv.getId()); |
} |
} |
/trunk/src/org/tela_botanica/client/modeles |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/modeles:r1136-1291 |