Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 317 → Rev 318

/trunk/src/org/tela_botanica/client/modeles/MotsClesObsAsynchronesDAO.java
File deleted
/trunk/src/org/tela_botanica/client/modeles/ObservationAsynchroneDAO.java
115,6 → 115,7
+ "&station="+ URL.encodeComponent(obs.getStation())
+"&milieu="+ URL.encodeComponent(obs.getMilieu())
+"&commentaire="+URL.encodeComponent(""+obs.getCommentaire())
+"&mots_cles="+URL.encodeComponent(""+obs.getMotsCles())
+"&coord_x="+URL.encodeComponent(""+obs.getCoordonneeX())
+"&coord_y="+URL.encodeComponent(""+obs.getCoordonneeY());
/trunk/src/org/tela_botanica/client/modeles/MotsClesAsynchroneDAO.java
31,14 → 31,18
private ObservationModele oModele = null ;
private String identifiant = "" ;
private String mode = "";
 
public MotsClesAsynchroneDAO(ImageModele im) {
iModele = im;
mode = "images";
identifiant = im.getIdentifiant();
}
public MotsClesAsynchroneDAO(ObservationModele om) {
oModele = om;
mode = "obs";
identifiant = om.getIdentifiant();
}
63,7 → 67,7
public void obtenirListeMotsCles(final Rafraichissable r) {
// on demande tous les mots clés associés à l'utilisateur
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
+ "/InventoryKeyWordList/" + identifiant);
+ "/InventoryKeyWordList/"+mode+"/"+identifiant+"/");
 
try {
rb.sendRequest(null, new RequestCallback() {
75,9 → 79,10
 
public void onResponseReceived(Request request,
Response response) {
 
final JSONValue responseValue = JSONParser.parse(response
.getText());
// si la requête est un succès on reçoit un tableau
if (responseValue.isArray() != null) {
 
103,7 → 108,7
*/
public void ajouterBaseDeDonnees(String motcle) {
if (!motcle.equals("")) {
String postData = motcle;
String postData = motcle+"&mode="+mode;
 
// on fait un post asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
150,6 → 155,7
 
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
+ "/InventoryKeyWordList/"
+ mode
+ identifiant
+ "/"
+ motcle);
190,10 → 196,10
if (!motcle.equals("")) {
 
String postData = "";
postData += "&action=modification" + motcle;
postData += "&action=modification"+motcle;
 
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
+ "/InventoryKeyWordList/" + identifiant);
+ "/InventoryKeyWordList/"+mode+"/"+ identifiant);
try {
rb.sendRequest(postData, new RequestCallback() {
 
228,10 → 234,10
if (!motcle.equals("")) {
 
String postData = "";
postData += "&action=deplacement" + motcle;
postData += "&action=deplacement"+motcle;
 
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
+ "/InventoryKeyWordList/" + identifiant);
+ "/InventoryKeyWordList/"+mode+"/"+identifiant);
try {
rb.sendRequest(postData, new RequestCallback() {
 
/trunk/src/org/tela_botanica/client/modeles/Configuration.java
27,6 → 27,12
private static String cleGoogleMaps ;
 
private static String lienEfloreBaseUrl;
private static String refTax;
private static String refTaxVersion;
 
/**
* Constructeur sans argument
*/
51,15 → 57,30
"referentielGeo");
cleGoogleMaps = Dictionary.getDictionary("configuration").get(
"referentielGeo");
"cleGoogleMaps");
lienEfloreBaseUrl = Dictionary.getDictionary("configuration").get(
"lienEfloreBaseUrl");
refTax = Dictionary.getDictionary("configuration").get(
"refTax");
refTaxVersion = Dictionary.getDictionary("configuration").get(
"refTaxVersion");
}
else
{
serviceBaseUrl = "http://localhost/jrest";
suiviBugUrl = "http://www.tela-botanica.org/suivi/index.php?do=newtask&project=2";
serviceBaseUrl = "http://162.38.234.9/jrest";
suiviBugUrl = "http://www.tela-botanica.net/suivi/index.php?do=newtask&project=2";
aideBaseUrl = "http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=AideCEL";
imageBaseUrl = "http://localhost/Documents/images_serveur/";
imageBaseUrl = "http://162.38.234.9/Documents/images_serveur/";
referentielGeo = "WGS84";
cleGoogleMaps = "ABQIAAAADBUAHF9l14gI02QVAbUYJBQYIbFcBI1ENnSUwK1SMsxOkt3ljBTFFxjHcCePFsiX1MX5_m2r1MnSOw";
refTax = "BDNFF";
refTaxVersion = "4.02";
lienEfloreBaseUrl = "www.tela-botanica.org/eflore";
}
}
 
117,4 → 138,19
return cleGoogleMaps ;
}
 
public static String getLienEfloreBaseUrl() {
return lienEfloreBaseUrl;
}
public static String getRefTax() {
return refTax;
}
public static String getRefTaxVersion() {
return refTaxVersion;
}
 
}
/trunk/src/org/tela_botanica/client/modeles/ListeObservationAsynchroneDAO.java
54,7 → 54,7
for (int i = 0; i < criteres.length; i++) {
if(!criteres[i][1].equals("") && criteres[i][1] != null)
if(criteres[i][1] != null && !criteres[i][1].equals(""))
{
if(i!= 0)
{
/trunk/src/org/tela_botanica/client/modeles/NombreObservationAsynchroneDAO.java
49,8 → 49,8
{
// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
for (int i = 0; i < criteres.length; i++) {
if(criteres[i][1] != null && !criteres[i][1].equals(""))
 
if(criteres[i][1] != null && !criteres[i][1].equals(""))
{
if(i!= 0)
{
/trunk/src/org/tela_botanica/client/observation/ObservationMediateur.java
18,6 → 18,7
import org.tela_botanica.client.vues.observation.filtres.ArbreMotsClesObservationVue;
import org.tela_botanica.client.vues.observation.indicateurs.ImageGeneriqueVue;
import org.tela_botanica.client.vues.observation.indicateurs.InformationRepartitionVue;
import org.tela_botanica.client.vues.observation.indicateurs.LienExterneVue;
import org.tela_botanica.client.vues.observation.indicateurs.MiniZoomImageVue;
import org.tela_botanica.client.vues.observation.indicateurs.NuageMotsClesVue;
 
28,6 → 29,7
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.ExtElement;
99,7 → 101,7
/**
* liste détaillée des Observations
*/
private ListeObservationVue listeObservation = null ;
public ListeObservationVue listeObservation = null ;
/**
* Saisie des Observations
122,15 → 124,12
* panneau conteneur pour le panneau des informations lies à l'observation
*/
private Panel details = new Panel("Détails");
private Panel details = new Panel("Details");
 
private Panel panelMotsCles = new Panel("Mots Clés");
private LienExterneVue liExtVue = null;
private ArbreMotsClesObservationVue arbreMotsClesVue = null ;
private TabPanel detailsEtMotsCles = new TabPanel();
 
 
/**
* panneau conteneur pour le panneau des filtres
*/
228,10 → 227,10
conteneurFormulaire.addListener(
new PanelListenerAdapter() {
public void onCollapse(Panel panel) {
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
}
public void onExpand(Panel panel) {
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
}
});
275,15 → 274,16
centre.addListener(
new PanelListenerAdapter() {
public void onCollapse(Panel panel) {
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
}
public void onExpand(Panel panel) {
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
}
public void onResize(BoxComponent component, int adjWidth,
int adjHeight, int rawWidth, int rawHeight) {
ObservationMediateur.fireResize();
ongletsSaisieCarto.doLayout();
listeObservation.doLayout();
}
public void onAfterLayout(Container self) {
310,45 → 310,38
centre.add(listeObservation, listeLayoutData);
centre.add(ongletsSaisieCarto, formLayoutData);
Panel conteneurDetailsMotsCles = new Panel("Détails");
 
// Redimensionnement global sur collapse/expand
conteneurDetailsMotsCles.addListener(
details.addListener(
new PanelListenerAdapter() {
public void onCollapse(Panel panel) {
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
}
public void onExpand(Panel panel) {
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
}
});
// on initialise le volet qui contient les details
conteneurDetailsMotsCles.setWidth("10%");
conteneurDetailsMotsCles.setTitleCollapse(true);
conteneurDetailsMotsCles.setCollapsible(true);
details.setWidth("10%");
details.setTitleCollapse(true);
details.setCollapsible(true);
conteneurDetailsMotsCles.add(detailsEtMotsCles);
conteneurDetailsMotsCles.setLayout(new FitLayout());
details.setAutoScroll(true);
details.setLayout(new RowLayout());
details.setWidth("100%");
arbreMotsClesVue = new ArbreMotsClesObservationVue(this) ;
panelMotsCles.add(arbreMotsClesVue);
// Lien vers eflore
liExtVue = new LienExterneVue(this);
liExtVue.setHeight("20px");
details.add(liExtVue);
// Information de repartition
informationRepartitionVue=new InformationRepartitionVue(this);
details.add(informationRepartitionVue, new RowLayoutData("33%"));
details.add(informationRepartitionVue, new RowLayoutData("30%"));
// Image generique
imageGeneriqueVue=new ImageGeneriqueVue(this);
details.add(imageGeneriqueVue, new RowLayoutData("33%"));
details.add(imageGeneriqueVue, new RowLayoutData("30%"));
mvz = new MiniZoomImageVue(this) ;
366,31 → 359,20
filtres.addListener(
new PanelListenerAdapter() {
public void onCollapse(Panel panel) {
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
}
public void onExpand(Panel panel) {
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
}
});
detailsEtMotsCles.add(details);
//detailsEtMotsCles.add(panelMotsCles);
panneauPrincipalObservation.add(details,regionEst);
panelMotsCles.hide();
panneauPrincipalObservation.add(conteneurDetailsMotsCles,regionEst);
panneauPrincipalObservation.add(filtres,regionOuest);
panneauPrincipalObservation.add(centre,regionCentre);
}
 
public static native void fireResize() /*-{
$wnd.Ext.EventManager.fireResize();
}-*/;
/**
* Retourne une instance de manière unique
* @return l'instance unique du médiateur
500,17 → 482,17
formulaireSaisieObservationVue.rafraichir(obs, false) ;
}
// Affichage de l'image correspondante
liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
observationModele.obtenirLiaisonImage(mvz, ordreObservation) ;
observationModele.obtenirMotsClesId(arbreMotsClesVue, ordreObservation);
//observationModele.obtenirMotsClesId(filtres.getArbreMotsClesObservationVue(), ordreObservation);
observationModele.obtenirInformationCommune(cartoObservationVue, obs.getLocalite(), obs.getIdentifiantLocalite());
//arbreMotsClesVue.cocherMotsCles(motsClesIds);
 
 
}
public void obtenirImageInformationExternes(String numeroNomenclaturalSaisiObservation) {
776,7 → 758,7
public void masquerChargementInfosObservations()
{
ExtElement masked = Ext.get(detailsEtMotsCles.getId());
ExtElement masked = Ext.get(details.getId());
 
if (details.isVisible() && masked != null && !masked.isMasked()) {
informationRepartitionVue.raz() ;
789,7 → 771,7
public void deMasquerChargementInfosObservations()
{
ExtElement masked = Ext.get(detailsEtMotsCles.getId());
ExtElement masked = Ext.get(details.getId());
 
if (details.isVisible() && masked != null && masked.isMasked()) {
masked.unmask() ;
976,10 → 958,10
* @param arbreMC
* l'arbre des mots clés à mettre à jour
*/
public void mettreAjourMotsCles(String motsClesEnCours, Tree arbreMC) {
 
public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
String[] ids = listeObservation.getIdSelectionnees();
observationModele.mettreAjourMotsCles(ids, motsClesEnCours, arbreMC);
observationModele.mettreAjourMotsCles(motsClesEnCours, idsObsALier);
 
}
 
994,7 → 976,7
*/
public void ajouterMotCleDansArbre(TreeNode n, Tree arbreMC) {
observationModele.ajouterMotCleDansArbre(n, arbreMC);
getPanneauFiltres().getArbreMotsClesFiltreVue().rafraichir(n, false);
getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
 
}
 
1010,7 → 992,7
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
 
observationModele.supprimerMotCleDansArbre(n, arbreMC);
getPanneauFiltres().getArbreMotsClesFiltreVue().rafraichir(n.getId(), false);
getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n.getId(), false);
 
}
 
1026,7 → 1008,7
public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
 
observationModele.modifierMotCleDansArbre(n, arbreMC);
getPanneauFiltres().getArbreMotsClesFiltreVue().rafraichir(n, false);
getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(n, false);
 
}
 
1042,14 → 1024,12
public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
 
observationModele.deplacerMotCleDansArbre(n, arbreMC);
getPanneauFiltres().getArbreMotsClesFiltreVue().rafraichir(n, false);
}
 
 
public void rafraichirArbreMotsCles(Tree arbreMotsCles) {
arbreMotsClesVue.rafraichir(arbreMotsCles, false);
getPanneauFiltres().getArbreMotsClesFiltreVue().rafraichir(arbreMotsCles, false);
getPanneauFiltres().getArbreMotsClesObservationVue().rafraichir(arbreMotsCles, false);
}
 
1137,7 → 1117,20
filtres.getArbreDateObservationFiltreVue().raz() ;
filtres.getArbreEntiteGeographiqueObservationFiltreVue().raz() ;
filtres.getArbreMotsClesFiltreVue().raz();
filtres.getArbreMotsClesObservationVue().raz();
filtres.getRechercheLibreVue().raz();
}
 
public Component getListeObservation() {
return listeObservation;
}
 
public void redimensionnerPanneaux(int adjHeight, int adjWidth) {
listeObservation.doLayout();
centre.doLayout();
}
 
}
/trunk/src/org/tela_botanica/client/observation/ObservationModele.java
22,7 → 22,6
import org.tela_botanica.client.modeles.ListeReferentielCommuneAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeReferentielNomAsynchroneDAO;
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
import org.tela_botanica.client.modeles.MotsClesObsAsynchronesDAO;
import org.tela_botanica.client.modeles.NomRetenuAsynchroneDao;
import org.tela_botanica.client.modeles.NombreObservationAsynchroneDAO;
import org.tela_botanica.client.modeles.Observation;
33,6 → 32,7
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.user.client.Window;
import com.gwtext.client.data.Node;
import com.gwtext.client.data.Tree;
import com.gwtext.client.widgets.map.LatLonPoint;
132,7 → 132,6
// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
NombreObservationAsynchroneDAO noaDAO = new NombreObservationAsynchroneDAO(this) ;
noaDAO.obtenirNombreObservation(r, observationMediateur.getIdentifiant(), criteres) ;
370,25 → 369,6
}
 
public void obtenirNuageMotsCles(Rafraichissable r) {
MotsClesObsAsynchronesDAO mcoaDAO = new MotsClesObsAsynchronesDAO(this);
mcoaDAO.obtenirMotsClesObservations(r);
}
 
 
 
public void ajouterMotsCles(Rafraichissable r,
String numObsApl, String motsAAjouter) {
MotsClesObsAsynchronesDAO moadDAO = new MotsClesObsAsynchronesDAO(this);
moadDAO.ajouterMotsCles(r,numObsApl,motsAAjouter);
}
 
 
 
public void analyserHistorique(Rafraichissable r,String anum) {
NomRetenuAsynchroneDao nraDAO = new NomRetenuAsynchroneDao(this);
426,9 → 406,9
if (taillemax == 0) {
// on crée un arbre vide
TreeNode root = new TreeNode();
root.setId("racine");
root.setId("racine_obs");
root.setText("Tags");
String[] usObj = { "Tags", "racine" };
String[] usObj = { "Tags", "racine_obs" };
root.setUserObject(usObj);
arbreMotsCles.setRootNode(root);
}
450,7 → 430,7
 
// et on construit l'arbre à partir de la racine (qui est
// toujoursl e premier élément)
if (id_noeud.equals("racine")) {
if (id_noeud.equals("racine_obs")) {
TreeNode root = new TreeNode();
root.setId(id_noeud);
root.setText(mot_cle);
470,8 → 450,9
}
}
}
// enfin on met à jour l'arbre des mots clés contenu dans le modèle
rafraichirArbreMotsCles(arbreMotsCles);
//rafraichirArbreMotsCles(arbreMotsCles);
// et on notifie le médiateur de la mise à jour en lui passant une
// copie des données
observationMediateur.rafraichirArbreMotsCles(arbreMotsCles);
486,7 → 467,6
* le nouvel arbre de mots clés
*/
public void rafraichirArbreMotsCles(Object o) {
observationMediateur.transmettreDonnees(o);
arbreMotsCles = (com.gwtext.client.data.Tree) o;
}
 
530,11 → 510,10
* @param arbreMC
* l'arbre de mots clés en cours
*/
public void mettreAjourMotsCles(String[] ids, String motsClesEnCours,
com.gwtext.client.data.Tree arbreMC) {
for (int i = 0; i < ids.length; i++) {
if (cacheObservation.containsKey(ids[i])) {
Observation o = (Observation) cacheObservation.get(ids[i]);
public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
for (int i = 0; i < idsObsALier.length; i++) {
if (cacheObservation.containsKey(idsObsALier[i])) {
Observation o = (Observation) cacheObservation.get(idsObsALier[i]);
o.setMotsCles(motsClesEnCours);
 
ObservationAsynchroneDAO oDao = new ObservationAsynchroneDAO(this);
541,8 → 520,6
oDao.modifier(this,observationMediateur.getIdentifiant(),o);
}
}
 
rafraichirArbreMotsCles(arbreMC);
}
/**
569,7 → 546,7
} else {
parentId = "racine";
}
 
rafraichirArbreMotsCles(arbreMC);
 
String nouveauMotCle = "&identifiant=" + getIdentifiant() + "&motcle="
592,6 → 569,8
 
String[] usObj = (String[]) n.getUserObject();
String id = usObj[1];
rafraichirArbreMotsCles(arbreMC);
 
MCDao.supprimerBaseDeDonnees(id);
 
652,7 → 631,7
} else {
parentId = "racine";
}
 
rafraichirArbreMotsCles(arbreMC);
 
String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
/trunk/src/org/tela_botanica/client/CarnetEnLigneMediateur.java
205,7 → 205,8
@Override
public void onResize(BoxComponent component, int adjWidth,
int adjHeight, int rawWidth, int rawHeight) {
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
observationMediateur.redimensionnerPanneaux(adjHeight, adjWidth);
}
});
415,4 → 416,9
observationMediateur.obtenirCacheObservation(r) ;
}
 
 
public static native void fireResize() /*-{
$wnd.Ext.EventManager.fireResize();
}-*/;
 
}
/trunk/src/org/tela_botanica/client/vues/ListeUtilisateurAdminVue.java
47,7 → 47,7
private final int KEY_UP = 38;
public ListeUtilisateurAdminVue(CarnetEnLigneMediateur cMed) {
super("Choisissez un utilisateur") ;
super("Choisir un utilisateur") ;
this.cMediateur = cMed;
Property changes:
Modified: svn:mergeinfo
Merged /branches/v1.0-beche/src/org/tela_botanica/client/vues/ListeUtilisateurAdminVue.java:r315-316
Added: svn:ignore
+.project
+tomcat
/trunk/src/org/tela_botanica/client/vues/observation/filtres/ArbreMotsClesObservationVue.java
1,24 → 1,47
package org.tela_botanica.client.vues.observation.filtres;
import org.tela_botanica.client.interfaces.Filtrable;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.observation.ObservationMediateur;
import org.tela_botanica.client.vues.observation.ListeObservationVue;
 
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.data.Node;
import com.gwtext.client.data.NodeTraversalCallback;
import com.gwtext.client.data.Record;
import com.gwtext.client.data.Tree;
import com.gwtext.client.dd.DD;
import com.gwtext.client.dd.DragData;
import com.gwtext.client.dd.DragDrop;
import com.gwtext.client.dd.DragSource;
import com.gwtext.client.dd.DropTarget;
import com.gwtext.client.dd.DropTargetConfig;
import com.gwtext.client.widgets.BoxComponent;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Container;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.grid.GridDragData;
import com.gwtext.client.widgets.grid.GridView;
import com.gwtext.client.widgets.layout.VerticalLayout;
import com.gwtext.client.widgets.tree.DropNodeCallback;
import com.gwtext.client.widgets.tree.MultiSelectionModel;
import com.gwtext.client.widgets.tree.TreeDragData;
import com.gwtext.client.widgets.tree.TreeDropZone;
import com.gwtext.client.widgets.tree.TreeDropZoneConfig;
import com.gwtext.client.widgets.tree.TreeEditor;
import com.gwtext.client.widgets.tree.TreeNode;
import com.gwtext.client.widgets.tree.TreePanel;
import com.gwtext.client.widgets.tree.event.TreeNodeListenerAdapter;
import com.gwtext.client.widgets.tree.event.TreePanelListener;
import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;
 
public class ArbreMotsClesObservationVue extends Panel implements Rafraichissable {
public class ArbreMotsClesObservationVue extends Panel implements Rafraichissable, Filtrable {
 
/**
* Le médiateur associé à la vue
40,7 → 63,7
/**
* Bouton de validation
*/
private Button valider = null;
private Button ajouterMotCle = null;
/**
* Une string permettant connaitre les mots clés cochés en cours séparés par
* des virgules
66,10 → 89,19
* Booléen d'instanciation du conteneur
*/
private boolean arbreCharge = false;
/**
* Booléen nécessaire pour l'affichage
*
*/
private boolean estInstancie = false;
/**
* Booléen d'évènement qui sert à savoir si les mots clés ont bien été reçu
*/
private boolean motsCleInitialises;
private Component livue = null;
 
/**
* Constructeur sans paramètre (privé car interdit d'utilisation)
88,58 → 120,90
public ArbreMotsClesObservationVue(ObservationMediateur om) {
// on crée le panel
super("Mots clés");
this.setLayout(new VerticalLayout());
oMediateur = om;
setBorder(false);
setCollapsible(true);
setTitleCollapse(true);
 
// on crée le conteneur de l'arbre
arbreMotsCles = new TreePanel();
// on permet le drag and drop dans l'arbre
arbreMotsCles.setEnableDD(true);
arbreMotsCles.setId("x-view-tree-keyword-obs");
// on ajoute les listeners
ajouterListenersPanel();
 
// on crée une racine pour l'arbre
TreeNode root = new TreeNode("Tags");
root.setId("racine_obs");
String[] usObject = { "Mots clés", "racine" };
root.setUserObject(usObject);
root.setExpandable(true);
arbreMotsCles.setRootNode(root);
arbreMotsCles.setRootVisible(true);
arbreMotsCles.setBorder(false);
// arbreMotsCles.setWidth(500);
arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() {
public void onClick(Node node, EventObject e) {
if(!arbreCharge) {
expand();
}
}
}
/**
* Ajoute les listeners pour le rendu du panel
*/
private void ajouterListenersPanel() {
this.addListener(new PanelListenerAdapter() {
 
public void onExpand(Node node) {
if(!arbreCharge) {
obtenirArbreMotsCles();
arbreCharge = true;
}
}
});
// on instancie réellement les composants au moment du rendu pour
// accélérer l'affichage
// et éviter des bugs
public void onRender(Component component) {
livue = oMediateur.getListeObservation();
// on crée le conteneur de l'arbre
arbreMotsCles = new TreePanel();
// on permet le drag and drop dans l'arbre
//arbreMotsCles.setEnableDD(true);
arbreMotsCles.setId("x-view-tree-keyword-obs");
MultiSelectionModel msModel = new MultiSelectionModel();
arbreMotsCles.setSelectionModel(msModel);
 
// on crée l'éditeur pour l'arbre
tfEdit = new TextField();
te = new TreeEditor(arbreMotsCles, tfEdit);
valider = new Button("Appliquer");
arbreMotsCles.add(te);
// on crée une racine pour l'arbre
TreeNode root = new TreeNode("Tags");
root.setId("racine_obs");
String[] usObject = { "Mots clés", "racine_obs" };
root.setUserObject(usObject);
root.setExpandable(true);
arbreMotsCles.setRootNode(root);
// on crée l'éditeur pour l'arbre
tfEdit = new TextField();
te = new TreeEditor(arbreMotsCles, tfEdit);
ajouterMotCle = new Button("Nouveau mot clé");
arbreMotsCles.add(te);
arbreMotsCles.getRootNode().addListener(new TreeNodeListenerAdapter() {
public void onClick(Node node, EventObject e) {
if(!arbreCharge) {
expand();
}
}
 
// on met en forme le layout
this.add(arbreMotsCles);
this.add(valider);
public void onExpand(Node node) {
if(!arbreCharge) {
obtenirArbreMotsCles();
arbreCharge = true;
}
}
});
 
this.setBorder(false);
this.setCollapsible(true);
this.setTitleCollapse(true);
// on ajoute les listeners
ajouterListeners();
// on interdit le drag and drop dans l'arbre
arbreMotsCles.setRootVisible(true);
arbreMotsCles.setBorder(false);
// on met en forme le layout
add(arbreMotsCles);
add(ajouterMotCle);
 
// enfin on considère le composant comme instancié
estInstancie = true;
configDragAndDrop();
// on ajoute les listeners d'évenements
ajouterListeners();
}
 
});
}
 
/**
190,7 → 254,11
public void onClick(TreeNode node, EventObject e) {
 
e.stopEvent();
gererClicNoeud(node);
boolean multi = false;
if(e.hasModifier()) {
multi = true;
}
gererClicNoeud(node,multi);
}
 
// gestion du clic droit sur un noeud
250,54 → 318,85
getOMediateur().deplacerMotCleDansArbre(node,
getArbreMotsCles().getTree());
}
public boolean doBeforeNodeDrop(TreePanel treePanel,
TreeNode target, DragData dragData,
String point, DragDrop source,
TreeNode dropNode,
DropNodeCallback dropNodeCallback) {
if(dragData instanceof GridDragData) {
Record[] obsALier = ((GridDragData)dragData).getSelections();
String idObsALier[] = new String[obsALier.length];
String idMotCle = ((String[])target.getUserObject())[1];
String idObsALierString = "";
for(int i = 0; i < obsALier.length; i++) {
idObsALierString += obsALier[i].getAsString("ordre_observation")+", ";
idObsALier[i] = obsALier[i].getAsString("ordre_observation");
}
if(Window.confirm("lier les observations "+idObsALierString+" seront liées au mot clé "+target.getText()+" ?")) {
oMediateur.mettreAjourMotsCles(idMotCle, idObsALier);
}
}
return true;
}
 
 
public void onNodeDrop(TreePanel treePanel,
TreeNode target, DragData dragData,
String point, DragDrop source, TreeNode dropNode) {
}
 
});
 
// gestion de la validation
valider.addListener(new ButtonListenerAdapter() {
ajouterMotCle.addListener(new ButtonListenerAdapter() {
 
// lors du clic
public void onClick(Button button, EventObject e) {
 
// on vide les mots clés en cours
motsClesEnCours = "";
// pour chaque noeud à partir de la racine
getArbreMotsCles().getRootNode().cascade(
new NodeTraversalCallback() {
 
// on éxécute une fonction
public boolean execute(Node node) {
 
// on récupère le mot clé associé au noeud et
// ses infos
TreeNode tn = getArbreMotsCles().getNodeById(
node.getId());
 
String[] usObject = (String[]) tn
.getUserObject();
getOMediateur().mettreAjourMotsClesId(
usObject[0], usObject[1]);
 
if (tn.getUI().isChecked()) {
// et les concatène à la string des mots
// clés en cours
motsClesEnCours += usObject[1] + ",";
}
 
return true;
}
 
});
 
// enfin on notifie le médiateur et on lui passe l'arbre et la
// liste des mots clés ainsi obtenue
getOMediateur().mettreAjourMotsCles(motsClesEnCours,
arbreMotsCles.getTree());
ajouterNoeud(arbreMotsCles.getRootNode());
}
});
 
}
/**
* Configure le drag 'n drop pour la liste
*/
private void configDragAndDrop()
{
 
// on fabrique la nouvelle configuration
// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
arbreMotsCles.setDdGroup("ObsMotsClesGroup");
//arbreMotsCles.setEnableDD(true);
arbreMotsCles.setEnableDrag(true);
arbreMotsCles.setEnableDrop(true);
DropTargetConfig dtc = new DropTargetConfig();
dtc.setdDdGroup("ObsMotsClesGroup");
DropTarget tg = new DropTarget(livue, dtc) {
public boolean notifyDrop(DragSource source, EventObject e,
DragData data) {
return true;
}
public String notifyOver(DragSource source, EventObject e,
DragData data) {
return "x-dd-drop-ok";
}
};
}
 
/**
* Envoie une demande au médiateur pour obtenir l'arbre des mots clés
*/
343,7 → 442,6
// on crée un nouveau noeud vide
TreeNode nd = new TreeNode("");
nd.setCls("x-view-treenode-keyword");
nd.setChecked(true);
// on associe un objet au noeud qui contient des infos
String[] usObject = new String[2];
// l'objet contient le nom du noeud
364,16 → 462,13
}
 
/**
* Coche le noeud s'il est décoché, le décoche sinon
* Fonction de gestion sur le clic sur le noeud
*
* @param node
*/
public void gererClicNoeud(TreeNode node) {
if (node.getUI().isChecked()) {
node.getUI().toggleCheck(false);
} else {
node.getUI().toggleCheck(true);
}
public void gererClicNoeud(TreeNode node, boolean multi) {
((MultiSelectionModel)arbreMotsCles.getSelectionModel()).select(node, multi);
}
 
/**
393,8 → 488,8
// pour chaque noeud
public boolean execute(Node node) {
 
getArbreMotsCles().getNodeById(node.getId())
.getUI().toggleCheck(false);
//getArbreMotsCles().getNodeById(node.getId())
//.getUI().toggleCheck(false);
// on parcourt le tableau des mots clés
for (int i = 0; i < motsClesIds.length; i++) {
405,8 → 500,8
String nodeId = usObject[1];
 
if (nodeId.equals(motsClesIds[i])) {
getArbreMotsCles().getNodeById(nodeId+"_obs")
.getUI().toggleCheck(true);
//getArbreMotsCles().getNodeById(nodeId+"_obs")
// .getUI().toggleCheck(true);
return true;
}
452,6 → 547,7
arbreCharge = true;
}
 
/*
// s'il y a des mots clés en attente (lors du premier rendering)
if (motsCleInitialises == false && motsClesEnAttente != null) {
// on les coche
461,11 → 557,11
if(motsClesEnAttente.length > 0) {
cocherMotsCles(motsClesEnAttente);
}
}*/
}
 
// Si on reçoit un tableau de String (cas ou l'on séléectionne une
// nouvelle image)
// nouvelle obs)
if (nouvelleDonnees instanceof String[]) {
// et que l'arbre est instancié
if (arbreCharge) {
505,8 → 601,7
 
String[] usObj = (String[]) ndNodeFils[i].getUserObject();
TreeNode child = new TreeNode(usObj[0]);
child.setId(usObj[1] +"_obs");
child.setChecked(false);
child.setId(usObj[1]);
child.setUserObject(usObj);
ndPereCopie.appendChild(child);
 
517,4 → 612,28
}
}
}
public void raz() {
}
 
public boolean renvoyerEtatFiltre() {
// TODO Auto-generated method stub
return false;
}
 
public String renvoyerNomFiltre() {
// TODO Auto-generated method stub
return null;
}
 
public String[] renvoyerValeursAFiltrer() {
// TODO Auto-generated method stub
return null;
}
 
public void valider() {
// TODO Auto-generated method stub
}
}
/trunk/src/org/tela_botanica/client/vues/observation/indicateurs/LienExterneVue.java
New file
0,0 → 1,68
package org.tela_botanica.client.vues.observation.indicateurs;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.observation.ObservationMediateur;
 
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.widgets.Panel;
 
public class LienExterneVue extends Panel implements Rafraichissable {
private ObservationMediateur oMediateur = null;
private String refTax = "";
private String refTaxVersion = "";
private String numTax = "";
private String efloreBaseUrl = "";
private Label titreLien = new Label("Voir la fiche eflore");
public LienExterneVue(ObservationMediateur om) {
oMediateur = om;
refTax = Configuration.getRefTax();
refTaxVersion = Configuration.getRefTaxVersion();
efloreBaseUrl = Configuration.getLienEfloreBaseUrl();
titreLien.setVisible(false);
setBorder(false);
titreLien.addClickListener(new ClickListener() {
 
public void onClick(Widget sender) {
if(!numTax.trim().equals("")) {
Window.open("http://"+efloreBaseUrl+"/"+refTax+"/"+refTaxVersion+"/nn/"+numTax,"","");
}
}
});
titreLien.setStyleName("lien_actif");
add(titreLien);
}
public void rafraichir(Object nouvelleDonnees,
boolean repandreRaffraichissement) {
if(nouvelleDonnees instanceof String && !((String)nouvelleDonnees).trim().equals("")) {
if(!titreLien.isVisible()) {
titreLien.setVisible(true);
}
numTax = (String)nouvelleDonnees;
} else {
titreLien.setVisible(false);
}
}
 
}
/trunk/src/org/tela_botanica/client/vues/observation/ListeObservationVue.java
24,6 → 24,10
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
import com.gwtext.client.dd.DragData;
import com.gwtext.client.dd.DragSource;
import com.gwtext.client.dd.DropTarget;
import com.gwtext.client.dd.DropTargetConfig;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Panel;
36,6 → 40,7
import com.gwtext.client.widgets.grid.CellMetadata;
import com.gwtext.client.widgets.grid.ColumnConfig;
import com.gwtext.client.widgets.grid.ColumnModel;
import com.gwtext.client.widgets.grid.GridDragData;
import com.gwtext.client.widgets.grid.GridPanel;
import com.gwtext.client.widgets.grid.Renderer;
import com.gwtext.client.widgets.grid.event.GridListenerAdapter;
142,6 → 147,8
this.observationMediateur = obs;
setId("x-list-obs");
setHeader(true);
297,6 → 304,11
this.getView().setAutoFill(true);
this.getView().setForceFit(true) ;
//Enable drag and drop
this.setEnableDragDrop(true);
//You need to set the same group for both grids
this.setDdGroup("ObsMotsClesGroup");
// on crée un masque de chargement qui s'affichera lors des mises à jour
this.setLoadMask("Chargement");
303,7 → 315,8
// on ajoute les listeners
ajouterListeners();
configDragAndDrop();
 
}
 
 
374,11 → 387,54
this.addListener(new PanelListenerAdapter() {
public void onBodyResize(Panel panel, java.lang.String width, java.lang.String height) {
setHeight("50%");
doLayout();
}
});
}
/**
* Configure le drag 'n drop pour la liste
*/
private void configDragAndDrop()
{
 
// on fabrique la nouvelle configuration
// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
this.setDdGroup("ObsMotsClesGroup");
DropTargetConfig dtc = new DropTargetConfig();
dtc.setdDdGroup("ObsMotsClesGroup");
 
//La drop target permet de gérer l'évenement onDrop sur l'élement courant
@SuppressWarnings("unused")
DropTarget tg = new DropTarget(this, dtc)
{
public boolean notifyDrop(DragSource source, EventObject e, DragData data){
// si on reçoit des données provenant d'une grille
if(data instanceof GridDragData)
{
// on la convertit
GridDragData gdd = (GridDragData)data ;
// et on vérifie que les données ne viennent pas de l'élément courant
if(gdd.getGrid().getId().equals("x-list-obs"))
{
Window.alert("on a recu du grid : "+data.toString());
return true ;
// on appelle le médiateur
//return iMediateur.lierImagesDD(source, e, data) ;
}
}
return true ;
}
public String notifyOver(DragSource source, EventObject e, DragData data){
return "x-dd-drop-ok";
}
};
}
 
/**
* Méthode héritée de l'interface VueListable
* Sélectionne les observations dans la liste suivant les identifiants donnés en paramètres
/trunk/src/org/tela_botanica/client/vues/observation/FormulaireSaisieObservationVue.java
5,6 → 5,7
import java.util.Date;
import java.util.Iterator;
 
import org.tela_botanica.client.CarnetEnLigneMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.modeles.EntiteGeographiqueObservation;
379,7 → 380,7
latitude.focus();
}
ObservationMediateur.fireResize();
CarnetEnLigneMediateur.fireResize();
}
}) ;
537,6 → 538,8
htmlCommunePanel.doLayout();
htmlPanel.doLayout();
doLayout();
}});
// on ajoute les listeners
1819,4 → 1822,9
public boolean communeInitialisee() {
return communeModifiee;
}
public void redimensionnerFormulaire() {
doLayout();
//panneauIntermediaire.doLayout();
}
}
/trunk/src/org/tela_botanica/client/vues/observation/PanneauFiltresObservationVues.java
4,6 → 4,7
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
import org.tela_botanica.client.vues.observation.filtres.ArbreDateObservationFiltreVue;
import org.tela_botanica.client.vues.observation.filtres.ArbreEntiteGeographiqueObservationFiltreVue;
import org.tela_botanica.client.vues.observation.filtres.ArbreMotsClesObservationVue;
import org.tela_botanica.client.vues.observation.filtres.RechercheLibreVue;
 
import com.gwtext.client.core.Ext;
36,7 → 37,7
*/
private ArbreDateObservationFiltreVue arbreDateObservationFiltreVue = null;
private ArbreMotsClesFiltreVue arbreMotsClesFiltreVue = null ;
private ArbreMotsClesObservationVue arbreMotsClesObservationVue = null ;
private RechercheLibreVue rechercheLibreVue = null;
90,14 → 91,13
arbreDateObservationFiltreVue.setWidth("100%") ;
arbreDateObservationFiltreVue.setBorder(false);
arbreMotsClesFiltreVue = new ArbreMotsClesFiltreVue(observationMediateur);
add(arbreMotsClesFiltreVue, new RowLayoutData());
arbreMotsClesFiltreVue.setWidth("100%") ;
arbreMotsClesFiltreVue.setTitle("Mots Clés");
arbreMotsClesFiltreVue.setTitleCollapse(true);
arbreMotsClesFiltreVue.setCollapsible(true);
arbreMotsClesFiltreVue.setBorder(false);
arbreMotsClesFiltreVue.hide();
arbreMotsClesObservationVue = new ArbreMotsClesObservationVue(observationMediateur);
add(arbreMotsClesObservationVue, new RowLayoutData());
arbreMotsClesObservationVue.setWidth("100%") ;
arbreMotsClesObservationVue.setTitle("Mots Clés");
arbreMotsClesObservationVue.setTitleCollapse(true);
arbreMotsClesObservationVue.setCollapsible(true);
arbreMotsClesObservationVue.setBorder(false);
}
 
115,8 → 115,8
return arbreDateObservationFiltreVue;
}
public ArbreMotsClesFiltreVue getArbreMotsClesFiltreVue() {
return arbreMotsClesFiltreVue;
public ArbreMotsClesObservationVue getArbreMotsClesObservationVue() {
return arbreMotsClesObservationVue;
}
public RechercheLibreVue getRechercheLibreVue() {
143,7 → 143,7
public String[][] renvoyerValeursAFiltrer() {
String[][] filtres = { arbreEntiteGeographiqueObservationFiltreVue.renvoyerValeursAFiltrer(),
arbreDateObservationFiltreVue.renvoyerValeursAFiltrer(),
arbreMotsClesFiltreVue.renvoyerValeursAFiltrer(),
arbreMotsClesObservationVue.renvoyerValeursAFiltrer(),
rechercheLibreVue.renvoyerValeursAFiltrer()
};
/trunk/src/org/tela_botanica/client/vues/image/PanneauFiltresImagesVues.java
4,6 → 4,7
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
 
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
63,7 → 64,7
public PanneauFiltresImagesVues(ImageMediateur im) {
super("Filtres");
iMediateur = im;
 
this.setCollapsible(true);
setLayout(new VerticalLayout());