15,7 → 15,6 |
import org.tela_botanica.client.vues.observation.ListeObservationVue; |
import org.tela_botanica.client.vues.observation.MenuObservationVue; |
import org.tela_botanica.client.vues.observation.PanneauFiltresObservationVues; |
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; |
23,13 → 22,9 |
import org.tela_botanica.client.vues.observation.indicateurs.NuageMotsClesVue; |
|
import com.google.gwt.core.client.GWT; |
import com.google.gwt.core.client.JavaScriptObject; |
import com.google.gwt.maps.client.geom.LatLng; |
import com.google.gwt.user.client.DOM; |
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; |
36,27 → 31,21 |
import com.gwtext.client.core.RegionPosition; |
import com.gwtext.client.data.Record; |
import com.gwtext.client.data.Tree; |
import com.gwtext.client.dd.DragData; |
import com.gwtext.client.widgets.BoxComponent; |
import com.gwtext.client.widgets.Component; |
import com.gwtext.client.widgets.Container; |
import com.gwtext.client.widgets.Panel; |
import com.gwtext.client.widgets.TabPanel; |
import com.gwtext.client.widgets.event.ContainerListener; |
import com.gwtext.client.widgets.event.ContainerListenerAdapter; |
import com.gwtext.client.widgets.event.PanelListener; |
import com.gwtext.client.widgets.event.PanelListenerAdapter; |
import com.gwtext.client.widgets.event.TabPanelListenerAdapter; |
import com.gwtext.client.widgets.grid.GridDragData; |
import com.gwtext.client.widgets.layout.BorderLayout; |
import com.gwtext.client.widgets.layout.BorderLayoutData; |
import com.gwtext.client.widgets.layout.FitLayout; |
import com.gwtext.client.widgets.layout.RowLayout; |
import com.gwtext.client.widgets.layout.RowLayoutData; |
import com.gwtext.client.widgets.map.LatLonPoint; |
import com.gwtext.client.widgets.menu.BaseItem; |
import com.gwtext.client.widgets.menu.Item; |
import com.gwtext.client.widgets.menu.Menu; |
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter; |
import com.gwtext.client.widgets.tree.TreeEditor; |
import com.gwtext.client.widgets.tree.TreeNode; |
|
|
82,7 → 71,6 |
* |
* |
*/ |
|
private CarnetEnLigneMediateur carnetEnLigneMediateur = null ; |
|
|
128,8 → 116,6 |
|
private LienExterneVue liExtVue = null; |
|
private ArbreMotsClesObservationVue arbreMotsClesVue = null ; |
|
/** |
* panneau conteneur pour le panneau des filtres |
*/ |
187,23 → 173,19 |
|
final BorderLayoutData regionCentre = new BorderLayoutData( |
RegionPosition.CENTER); |
regionCentre.setSplit(true); |
|
|
final BorderLayoutData regionEst = new BorderLayoutData( |
RegionPosition.EAST); |
regionEst.setSplit(true); |
|
|
if (GWT.isScript()) { // FIXME : ne fonctionne pas en mode hosted |
regionEst.setSplit(true); |
} |
|
final BorderLayoutData regionOuest = new BorderLayoutData( |
RegionPosition.WEST); |
|
if (GWT.isScript()) { // FIXME : ne fonctionne pas en mode hosted |
regionOuest.setSplit(true); |
} |
|
|
panneauPrincipalObservation.setLayout(new BorderLayout()) ; |
|
// on ajoute un panneau supplémentaire pour contenir le formulaire, pour éviter un bug de taille |
422,6 → 404,7 |
private void initialiserArbres() { |
getPanneauFiltres().getArbreDateObservationFiltreVue().initialiser(); |
getPanneauFiltres().getArbreEntiteGeographiqueObservationFiltreVue().initialiser(); |
getPanneauFiltres().getArbreMotsClesObservationVue().initialiser(); |
} |
|
|
438,6 → 421,8 |
|
carnetEnLigneMediateur.donneesObsVersImages(listeObservation.getCacheListeObservation()); |
observationModele.rafraichirCacheObservation(listeObservation.getCacheListeObservation()); |
|
filtres.getArbreMotsClesObservationVue().cocherMotsCles(new String[0]); |
} |
|
/** |
489,7 → 474,7 |
|
observationModele.obtenirLiaisonImage(mvz, ordreObservation) ; |
|
//observationModele.obtenirMotsClesId(filtres.getArbreMotsClesObservationVue(), ordreObservation); |
filtres.getArbreMotsClesObservationVue().rafraichir(obs.getMotsCles(), false); |
|
observationModele.obtenirInformationCommune(cartoObservationVue, obs.getLocalite(), obs.getIdentifiantLocalite()); |
|
594,6 → 579,9 |
// U du CRUD |
public void modifierObservation(Observation obs) { |
|
// On prend soin de récupérer les mots clés de l'observation |
Observation obsMod = obtenirCacheObservation().get(obs.getNumeroOrdre()); |
obs.setMotsCles(obsMod.getMotsCles()); |
|
// On rafraichit la liste d'observation |
observationModele.modifierObservation(listeObservation, obs) ; |
681,6 → 669,8 |
|
String[] filtresTaxon = filtres.getRechercheLibreVue().renvoyerValeursAFiltrer(); |
|
String[] filtresMotsCles = filtres.getArbreMotsClesObservationVue().renvoyerValeursAFiltrer(); |
|
String chaineNomsFiltres = "" ; |
String chaineValFiltres = "" ; |
|
699,6 → 689,11 |
chaineValFiltres += filtresTaxon[1]; |
} |
|
if(!filtresMotsCles[0].trim().equals("") && !filtresMotsCles[1].trim().equals("")) { |
chaineNomsFiltres += filtresMotsCles[0]; |
chaineValFiltres += filtresMotsCles[1]; |
} |
|
String[] nomsFiltres = chaineNomsFiltres.split(",") ; |
String[] valsFiltres = chaineValFiltres.split(",") ; |
|
776,7 → 771,7 |
{ |
ExtElement masked = Ext.get(details.getId()); |
|
if (details.isVisible() && masked != null && !masked.isMasked()) { |
if (details.isVisible() && masked != null) { |
informationRepartitionVue.raz() ; |
imageGeneriqueVue.raz() ; |
masked.mask("Chargement", true); |
789,7 → 784,7 |
{ |
ExtElement masked = Ext.get(details.getId()); |
|
if (details.isVisible() && masked != null && masked.isMasked()) { |
if (details.isVisible() && masked != null) { |
masked.unmask() ; |
} |
} |
918,59 → 913,96 |
} |
} |
|
/** |
* Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du |
* mot clé |
* |
* @param text |
* le texte du mot clé |
* @param id |
* l'identifiant du mot clé |
*/ |
public void mettreAjourMotsClesId(String text, String id) { |
|
public void montrerContextMenuArbre(final TreeNode n, EventObject e, |
TreeEditor te) { |
Menu mn = new Menu(); |
final com.gwtext.client.widgets.menu.Item ajoutN = new Item( |
"Ajouter mot cle"); |
final com.gwtext.client.widgets.menu.Item suppN = new Item( |
"Supprimer mot cle"); |
observationModele.mettreAjourMotsClesId(text, id); |
|
mn.addItem(ajoutN); |
mn.addItem(suppN); |
} |
|
mn.addListener(new MenuListenerAdapter() { |
public boolean gererDDObsSurMotCle(TreeNode NoeudMotCle, DragData dragData) { |
|
public void onItemClick(BaseItem item, EventObject e) { |
if (item.equals(suppN)) { |
arbreMotsClesVue |
.supprimerNoeud(n); |
if(dragData instanceof GridDragData) { |
// TODO : reporter cette logique dans le médiateur ! |
GridDragData gdd = ((GridDragData)dragData); |
|
String idMotCle = ((String[])NoeudMotCle.getUserObject())[1]; |
|
Record[] obsALier = gdd.getSelections(); |
|
String idObsALier[] = new String[obsALier.length]; |
String idObsALierString = ""; |
|
for(int i = 0; i < obsALier.length; i++) { |
if(i != 0) { |
idObsALierString += ", "; |
} |
if (item.equals(ajoutN)) { |
arbreMotsClesVue.ajouterNoeud( |
n); |
idObsALierString += obsALier[i].getAsString("ordre_observation"); |
idObsALier[i] = obsALier[i].getAsString("ordre_observation"); |
|
} |
|
String message = "Lier les observations "; |
|
if(idObsALier.length == 1) { |
message = "Lier l'observation "; |
} |
}); |
|
mn.showAt(e.getXY()); |
if(Window.confirm(message+idObsALierString+" au projet "+NoeudMotCle.getText()+" ?")) { |
mettreAjourMotsCles(idMotCle, idObsALier); |
|
return true; |
} else { |
return false; |
} |
} else { |
return false; |
} |
} |
|
public void gererDDMotCleSurObs(String idObs, String IdMC) { |
|
/** |
* Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du |
* mot clé |
* |
* @param text |
* le texte du mot clé |
* @param id |
* l'identifiant du mot clé |
*/ |
public void mettreAjourMotsClesId(String text, String id) { |
Observation obs = obtenirCacheObservation().get(idObs); |
|
observationModele.mettreAjourMotsClesId(text, id); |
if(obs == null) { |
return; |
} |
|
if(observationAvoirMotCle(IdMC, idObs)) { |
if(Window.confirm("Voulez vous supprimer la liaison entre l'observation et le mot clé ?")) { |
String nouveauMotsCles = obs.getMotsCles().replace(IdMC, ""); |
nouveauMotsCles = nouveauMotsCles.replace(";;", ";"); |
|
obs.setMotsCles(nouveauMotsCles); |
|
observationModele.modifierObservation(listeObservation, obs); |
} |
} |
} |
|
public String gererOverDDMotCleSurObs(String idObs, String IdMC) { |
|
if(observationAvoirMotCle(IdMC, idObs)) { |
return "x-dd-drop-unlink"; |
} else { |
return "x-dd-drop-nodrop"; |
} |
} |
/** |
* Récupère les identifiants des images selectionnés et appelle le modèle |
* pour qu'il mette à jour les associations mots clés/images |
* Récupère les identifiants des obs selectionnézs et appelle le modèle |
* pour qu'il mette à jour les associations mots clés/obs |
* |
* @param motsClesEnCours |
* les mots clés à associer aux images selectionnés séparés par |
* une ',' |
* un ';' |
* @param arbreMC |
* l'arbre des mots clés à mettre à jour |
*/ |
1049,7 → 1081,20 |
|
} |
|
public boolean observationAvoirMotCle(String idMotCle, String idObs) { |
Observation obs = obtenirCacheObservation().get(idObs); |
if(obs == null) { |
return false; |
} |
|
if(obs.getMotsCles().contains(idMotCle)) { |
return true; |
} |
|
return false; |
} |
|
|
public void obtenirArbreMotsCles(Rafraichissable r) { |
|
observationModele.obtenirArbreMotsCles(r); |
1144,7 → 1189,11 |
|
public void redimensionnerPanneaux(int adjHeight, int adjWidth) { |
|
listeObservation.doLayout(); |
formulaireSaisieObservationVue.setHeight(300); |
|
//if(listeObservation.getHeight() > centre.getHeight()) { |
listeObservation.setHeight(adjHeight/2); |
//} |
centre.doLayout(); |
|
} |