Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1957 → Rev 1958

/trunk/src/org/tela_botanica/client/cel2.java
1,9 → 1,11
package org.tela_botanica.client;
 
import org.tela_botanica.client.modeles.objets.Configuration;
 
import com.google.gwt.ajaxloader.client.AjaxLoader;
import com.google.gwt.ajaxloader.client.AjaxLoader.AjaxLoaderOptions;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.RootPanel;
import com.gwtext.client.core.Ext;
import com.gwtext.client.widgets.Viewport;
 
17,14 → 19,35
*/
@Override
public void onModuleLoad() {
CarnetEnLigneMediateur carnetEnLigneMediateur= CarnetEnLigneMediateur.Instance();
if(GWT.isScript()) { // Nav
new Viewport(carnetEnLigneMediateur.getPanneauPrincipalCarnetEnLigne()) ;
} else { // Hosted
RootPanel.get().add(carnetEnLigneMediateur.getPanneauPrincipalCarnetEnLigne());
}
// A décommenter + compiler en detailed dans le cas d'une erreur
// survernant uniquement sur le serveur
/*GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void onUncaughtException(Throwable e) {
Window.alert("uncaught: " + e.getMessage());
String s = buildStackTrace(e, "RuntimeException:\n");
Window.alert(s);
e.printStackTrace();
}
});*/
Configuration config = new Configuration();
AjaxLoaderOptions optAj = AjaxLoaderOptions.newInstance();
optAj.setOtherParms("key="+Configuration.getCleGoogleMaps()+"&sensor=false");
Runnable callback = new Runnable() {
public void run() {
initialiserCel();
};
};
AjaxLoader.loadApi("maps", "3", callback, optAj);
}
private void initialiserCel() {
CarnetEnLigneMediateur carnetEnLigneMediateur= CarnetEnLigneMediateur.Instance();
new Viewport(carnetEnLigneMediateur.getPanneauPrincipalCarnetEnLigne()) ;
carnetEnLigneMediateur.getEtatUtilisateur() ;
 
Timer t = new Timer() {
36,4 → 59,29
t.schedule(3000);
}
private String buildStackTrace(Throwable t, String log) {
if (t != null) {
log += t.getClass().toString();
log += t.getMessage();
//
StackTraceElement[] stackTrace = t.getStackTrace();
if (stackTrace != null) {
StringBuffer trace = new StringBuffer();
for (int i = 0; i < stackTrace.length; i++) {
trace.append(stackTrace[i].getClassName() + "." + stackTrace[i].getMethodName() + "("
+ stackTrace[i].getFileName() + ":" + stackTrace[i].getLineNumber());
}
log += trace.toString();
}
//
Throwable cause = t.getCause();
if (cause != null && cause != t) {
log += buildStackTrace(cause, "CausedBy:\n");
}
}
return log;
}
}
/trunk/src/org/tela_botanica/client/modeles/dao/ImageGeneriqueVueAsynchroneDAO.java
61,22 → 61,26
public void onResponseReceived(Request request,
Response response) {
JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse;
String urlImage=null;
String urlImageMax=null;
 
if ((reponse = responseValue.isArray()) != null) {
// Url Image
urlImage= ((JSONString)reponse.get(0)).stringValue();
urlImageMax= ((JSONString)reponse.get(1)).stringValue();
try {
JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse;
String urlImage=null;
String urlImageMax=null;
if ((reponse = responseValue.isArray()) != null) {
// Url Image
urlImage= ((JSONString)reponse.get(0)).stringValue();
urlImageMax= ((JSONString)reponse.get(1)).stringValue();
}
else {
urlImage="";
urlImageMax="";
}
r.rafraichir(new String[]{urlImage,urlImageMax},true);
} catch (Exception e) {
// TODO: handle exception
}
else {
urlImage="";
urlImageMax="";
}
r.rafraichir(new String[]{urlImage,urlImageMax},true);
}
}) ;
 
/trunk/src/org/tela_botanica/client/observation/ObservationMediateur.java
24,7 → 24,6
import org.tela_botanica.client.vues.observation.indicateurs.MiniZoomImageVue;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventObject;
210,6 → 209,7
fenetreCarto = new com.gwtext.client.widgets.Window();
fenetreCarto.setConstrain(true);
fenetreCarto.setModal(true);
fenetreCarto.setCloseAction(com.gwtext.client.widgets.Window.HIDE);
fenetreCarto.add(cartoObservationVue);
1127,8 → 1127,8
carnetEnLigneMediateur.donneesObsVersImages(o);
}
public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
observationModele.obtenirInformationCoord(r,coord);
public void obtenirInformationCoord(Rafraichissable r, double lat, double lng) {
observationModele.obtenirInformationCoord(r, lat, lng);
}
public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
1135,8 → 1135,8
observationModele.obtenirInformationCommune(r,nomCommune, codePostal);
}
 
public void obtenirInformationCoord(LatLng coord) {
observationModele.obtenirInformationCoord(cartoObservationVue,coord);
public void obtenirInformationCoord(double lat, double lng) {
observationModele.obtenirInformationCoord(cartoObservationVue, lat, lng);
}
 
public void obtenirInformationCommune(String nomCommune,
1202,14 → 1202,14
} else {
if(formulaireSaisieObservationVue.coordonneesValides() != null) {
LatLng coords = LatLng.newInstance(coordsTab[0],coordsTab[1]);
obtenirInformationCoord(coords);
obtenirInformationCoord(coordsTab[0],coordsTab[1]);
} else if (formulaireSaisieObservationVue.communeInitialisee()) {
String nomCommune = formulaireSaisieObservationVue.getCommune();
String dptCommune = formulaireSaisieObservationVue.getDepartement();
obtenirInformationCommune(nomCommune, dptCommune);
} else {
obtenirInformationCoord(cartoObservationVue.getCentreFrance());
double[] coordsCentreFrance = cartoObservationVue.getCoordsCentreFrance();
obtenirInformationCoord(coordsCentreFrance[0], coordsCentreFrance[1]);
}
}
}
/trunk/src/org/tela_botanica/client/observation/ObservationModele.java
30,7 → 30,6
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso.TypesReferentiels;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.maps.client.geom.LatLng;
import com.gwtext.client.data.Node;
import com.gwtext.client.data.Tree;
import com.gwtext.client.widgets.tree.TreeNode;
737,8 → 736,8
infocommune.obtenirInfosCommune(r, nomCommune, codePostal);
}
public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
public void obtenirInformationCoord(Rafraichissable r, double lat, double lng) {
InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
infocommune.obtenirCommunePlusProche(r, coord.getLongitude(), coord.getLatitude());
infocommune.obtenirCommunePlusProche(r, lng, lat);
}
}
/trunk/src/org/tela_botanica/client/vues/observation/FormulaireSaisieObservationVue.java
26,14 → 26,11
import org.tela_botanica.client.util.FormulaireSaisieChampEtendu;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.PopupPanel;
import com.gwtext.client.core.EventCallback;
import com.gwtext.client.core.EventObject;
45,7 → 42,6
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.MemoryProxy;
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.SimpleStore;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
import com.gwtext.client.widgets.BoxComponent;
803,7 → 799,7
if(!rechercheCommuneEnCours && coord != null && (longModifiee || latModifiee)) {
rechercheCommuneEnCours = true;
Ext.get(lienSelectionCommune.getElement()).mask("recherche");
observationMediateur.obtenirInformationCoord(r,LatLng.newInstance(coord[0], coord[1]));
observationMediateur.obtenirInformationCoord(r,coord[0], coord[1]);
}
}
 
2099,11 → 2095,10
 
private void obtenirInformationCoord() {
if(coordonneesValides() != null) {
observationMediateur.obtenirInformationCoord(LatLng.newInstance(coordonneesValides()[0],coordonneesValides()[1]));
observationMediateur.obtenirInformationCoord(coordonneesValides()[0],coordonneesValides()[1]);
} else {
observationMediateur.afficherFenetreCarto();
}
 
}
 
private void obtenirInformationCommune() {
/trunk/src/org/tela_botanica/client/vues/observation/CartographieObservationVue.java
1,25 → 1,10
package org.tela_botanica.client.vues.observation;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation;
import org.tela_botanica.client.observation.ObservationMediateur;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.maps.client.InfoWindow;
import com.google.gwt.maps.client.InfoWindowContent;
import com.google.gwt.maps.client.MapType;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.Maps;
import com.google.gwt.maps.client.control.LargeMapControl;
import com.google.gwt.maps.client.event.MapClickHandler;
import com.google.gwt.maps.client.event.MapZoomEndHandler;
import com.google.gwt.maps.client.event.MarkerClickHandler;
import com.google.gwt.maps.client.event.MarkerDragEndHandler;
import com.google.gwt.maps.client.event.MarkerDragStartHandler;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.overlay.Marker;
import com.google.gwt.maps.client.overlay.MarkerOptions;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventCallback;
33,6 → 18,17
import com.gwtext.client.widgets.layout.FitLayout;
import com.gwtext.client.widgets.layout.RowLayout;
import com.gwtext.client.widgets.layout.RowLayoutData;
import com.google.maps.gwt.client.GoogleMap;
import com.google.maps.gwt.client.GoogleMap.ClickHandler;
import com.google.maps.gwt.client.GoogleMap.ZoomChangedHandler;
import com.google.maps.gwt.client.InfoWindow;
import com.google.maps.gwt.client.InfoWindowOptions;
import com.google.maps.gwt.client.LatLng;
import com.google.maps.gwt.client.MapOptions;
import com.google.maps.gwt.client.MapTypeId;
import com.google.maps.gwt.client.Marker;
import com.google.maps.gwt.client.MarkerOptions;
import com.google.maps.gwt.client.MouseEvent;
 
public class CartographieObservationVue extends Panel implements Rafraichissable {
 
41,10 → 37,11
private ObservationMediateur oMediateur = null;
Panel panneauCarto = null;
private MapWidget map;
GoogleMap map = null;
Marker nmk = null;
private boolean carteAjoutee = false;
private boolean requeteEnCours = false;
private boolean infoOuverte = false;
String valeurCommune = "Bourges";
LatLng centreFrance = null;
58,8 → 55,6
 
private InfoWindow info;
 
private boolean listenerInitialise = false;
 
public CartographieObservationVue(ObservationMediateur om) {
oMediateur = om;
73,41 → 68,21
 
setLayout(new RowLayout());
 
panneauCarto.setAutoHeight(true);
add(panneauExplication, new RowLayoutData(12));
add(panneauCarto, new RowLayoutData());
if(!carteAjoutee) {
Maps.loadMapsApi(Configuration.getCleGoogleMaps(), "2", false, new Runnable() {
@Override
public void run() {
initialiserCarte(false);
}
});
}
addListener(new ContainerListenerAdapter() {
@Override
public void onAfterLayout(Container c) {
if(carteAjoutee) {
panneauCarto.setHeight("100%");
if((panneauCarto.getHeight() - 20) > map.getSize().getHeight()) {
map.setSize(map.getSize().getWidth()+"px", (panneauCarto.getHeight() - 20)+"px");
}
panneauCarto.doLayout();
panneauCarto.expand();
}
initialiserCarte(false);
}
});
panneauCarto.setAutoHeight(true);
}
public void setTailleCarte(int hauteur, int largeur) {
map.setSize(largeur+"px", (hauteur+"px"));
setSize(largeur, hauteur);
}
public void masquerChargement(boolean masquer) {
122,72 → 97,88
}
public void obtenirInfosCommunes(LatLng coord) {
oMediateur.obtenirInformationCoord(this, coord);
oMediateur.obtenirInformationCoord(this, coord.lat(), coord.lng());
}
 
public void mettreAJourInfos(final LatLng pointNouvelleCommune, String infosComplementaires, int zoom) {
 
if (!carteAjoutee) {
initialiserCarte(true);
GoogleMap mapNulle = null;
if(nmk != null) {
nmk.setMap(mapNulle);
}
 
pointCommune = pointNouvelleCommune;
map.clearOverlays();
Marker nmk = fabriquerMarqueur(pointCommune, infosComplementaires);
map.addOverlay(nmk);
nmk = fabriquerMarqueur(pointCommune, infosComplementaires);
nmk.setMap(map);
afficherInfoMarker(nmk);
recentrerCarte();
}
 
public void initialiserCarte(boolean commune) {
private void initialiserCarte(boolean commune) {
centreFrance = LatLng.newInstance(47.0504, 2.2347);
panneauCarto.clear();
centreFrance = LatLng.create(47.0504, 2.2347);
pointCommune = centreFrance;
map = new MapWidget(pointCommune, niveauZoom);
panneauCarto.add(map);
panneauCarto.doLayout();
info = map.getInfoWindow();
MapOptions options = MapOptions.create();
options.setCenter(centreFrance);
options.setZoom(6) ;
options.setMapTypeId(MapTypeId.HYBRID);
options.setDraggable(true);
options.setMapTypeControl(true);
options.setScaleControl(true) ;
options.setScrollwheel(true) ;
map = GoogleMap.create(panneauCarto.getElement(), options ) ;
InfoWindowOptions infopts = InfoWindowOptions.create();
info = InfoWindow.create();
info.setOptions(infopts);
info.addCloseClickListener(new InfoWindow.CloseClickHandler() {
@Override
public void handle() {
infoOuverte = false;
}
});
if(!commune) {
fabriquerMarqueurIndication();
}
map.setZoomLevel(6);
map.checkResizeAndCenter();
map.setUIToDefault();
map.addControl(new LargeMapControl());
map.setCurrentMapType(MapType.getHybridMap());
carteAjoutee = true;
panneauCarto.doLayout();
map.addMapClickHandler(new MapClickHandler() {
 
map.addClickListener(new ClickHandler() {
@Override
public void onClick(MapClickEvent event) {
//TODO : quoi faire du double clic ?
public void handle(MouseEvent event) {
obtenirInfosCommunes(event.getLatLng());
}
});
map.addMapZoomEndHandler(new MapZoomEndHandler() {
 
map.addZoomChangedListener(new ZoomChangedHandler() {
@Override
public void onZoomEnd(MapZoomEndEvent event) {
niveauZoom = event.getNewZoomLevel();
public void handle() {
niveauZoom = (int)map.getZoom();
}
});
panneauCarto.doLayout();
panneauCarto.expand();
panneauCarto.setHeight("100%");
panneauCarto.setWidth("100%");
expand();
}
public void fabriquerMarqueurIndication() {
Marker marker = fabriquerMarqueur(pointCommune,"");
map.addOverlay(marker);
info.open(marker, new InfoWindowContent("<div id=\"info_contenu\">"+
GoogleMap mapNulle = null;
if(nmk != null) {
nmk.setMap(mapNulle);
}
nmk = fabriquerMarqueur(pointCommune,"");
nmk.setMap(map);
info.setContent("<div id=\"info_contenu\">"+
"Déplacez ce marqueur pour localiser votre observation (commune et coordonnées)<br />"
+"longitude="
+ marker.getLatLng().getLongitude() + "<br />latitude="
+ marker.getLatLng().getLatitude() + "</div>"));
+ nmk.getPosition().lng() + "<br />latitude="
+ nmk.getPosition().lat() + "</div>");
infoOuverte = true;
info.open(map,nmk);
}
 
public void AfficherMessageAucuneInfos() {
202,7 → 193,6
private void ajouterListenerBouton(final String idBouton) {
final ExtElement bouton = Ext.get(idBouton);
if(bouton == null) {
Timer t = new Timer() {
@Override
209,23 → 199,22
public void run() {
ajouterListenerBouton(idBouton);
}
};
t.schedule(500);
return;
} else {
bouton.addListener("click", new EventCallback() {
@Override
public void execute(EventObject e) {
EntiteGeographiqueObservation infosCommune = new EntiteGeographiqueObservation(codeCommune,valeurCommune,null,null);
infosCommune.setLat(pointCommune.lat()+"");
infosCommune.setLon(pointCommune.lng()+"");
oMediateur.rafraichirSaisieCommuneObservation(infosCommune);
}
});
bouton.focus();
}
bouton.addListener("click", new EventCallback() {
@Override
public void execute(EventObject e) {
EntiteGeographiqueObservation infosCommune = new EntiteGeographiqueObservation(codeCommune,valeurCommune,null,null);
infosCommune.setLat(pointCommune.getLatitude()+"");
infosCommune.setLon(pointCommune.getLongitude()+"");
oMediateur.rafraichirSaisieCommuneObservation(infosCommune);
}
});
bouton.focus();
}
 
@Override
254,7 → 243,7
}
LatLng coord = LatLng.newInstance(lat, lon);
LatLng coord = LatLng.create(lat, lon);
valeurCommune = infos.getZoneGeo();
codeCommune = Util.convertirChaineZoneGeoVersDepartement(infos.getIdZoneGeo());
268,49 → 257,52
public Marker fabriquerMarqueur(LatLng pointMarqueur, final String texte) {
// ajout de marqueurs déplacables, qui affichent une bulle d'information
MarkerOptions options = MarkerOptions.newInstance();
MarkerOptions options = MarkerOptions.create();
options.setDraggable(true);
final Marker marker = new Marker(pointMarqueur, options);
options.setPosition(pointMarqueur);
final Marker marker = Marker.create(options);
marker.addMarkerDragEndHandler(new MarkerDragEndHandler() {
marker.addDragEndListener(new Marker.DragEndHandler() {
@Override
public void onDragEnd(MarkerDragEndEvent event) {
masquerChargement(true);
obtenirInfosCommunes(marker.getLatLng());
public void handle(MouseEvent event) {
obtenirInfosCommunes(event.getLatLng());
}
 
});
 
marker.addMarkerDragStartHandler(new MarkerDragStartHandler() {
marker.addDragStartListener(new Marker.DragStartHandler() {
@Override
public void onDragStart(MarkerDragStartEvent event) {
info.setVisible(false);
public void handle(MouseEvent event) {
info.close();
}
});
marker.addMarkerClickHandler(new MarkerClickHandler() {
 
marker.addClickListener(new Marker.ClickHandler() {
@Override
public void onClick(MarkerClickEvent event) {
if(info.isVisible()) {
public void handle(MouseEvent event) {
if(infoOuverte) {
info.close();
infoOuverte = false;
} else {
afficherInfoMarker(marker);
infoOuverte = true;
}
}
}
});
return marker;
}
 
public void recentrerCarte() {
if(this.getWidth() > 12 && this.getHeight() > 24) {
map.setSize((this.getWidth() - 12)+"px" , (this.getHeight() - 24)+"px");
if(this.getWidth() > 12 && this.getHeight() > 24) {
panneauCarto.setSize((this.getWidth() - 12)+"px" , (this.getHeight() - 12)+"px");
}
map.setCenter(pointCommune, niveauZoom);
map.checkResizeAndCenter();
panneauCarto.doLayout();
panneauCarto.expand();
panneauCarto.setHeight("100%");
panneauCarto.setWidth("100%");
expand();
}
 
public boolean isCarteAjoutee() {
317,16 → 309,15
return carteAjoutee;
}
public void afficherInfoMarker(Marker marker) {
public void afficherInfoMarker(Marker marker) {
final String htmlBoutonOk = "<br /><button id=\"okMap\" class=\"x-btn-text\" type=\"button\">OK</button>";
 
String contenuMarker = "";
if(valeurCommune == null || valeurCommune.trim().equals("")) {
if(marker.getLatLng().getLongitude() == 0 && marker.getLatLng().getLatitude() == 0) {
if(marker.getPosition().lng() == 0 && marker.getPosition().lat() == 0) {
LatLng point = centreFrance;
marker.setLatLng(point);
marker.setPosition(point);
niveauZoom = 6;
}
contenuMarker = "<div id=\"info_contenu\">"+
333,26 → 324,31
"Aucune commune française trouvée à cet emplacement <br />"
+"Déplacez ce marqueur pour localiser votre observation (commune et coordonnées)<br />"
+"longitude="
+ marker.getLatLng().getLongitude() + "<br />latitude="
+ marker.getLatLng().getLatitude() + "</div>";
+ marker.getPosition().lng() + "<br />latitude="
+ marker.getPosition().lat() + "</div>";
} else {
contenuMarker = ""
+valeurCommune+" ("+codeCommune+")<br />"
+"longitude="
+ marker.getLatLng().getLongitude() + "<br />latitude="
+ marker.getLatLng().getLatitude() ;
+ marker.getPosition().lng() + "<br />latitude="
+ marker.getPosition().lat() ;
}
info.open(marker, new InfoWindowContent(""
+ contenuMarker
+ htmlBoutonOk));
info.setContent(contenuMarker+ htmlBoutonOk);
info.open(map, marker);
info.addDomReadyListenerOnce(new InfoWindow.DomReadyHandler() {
@Override
public void handle() {
ajouterListenerBouton("okMap");
}
});
recentrerCarte();
ajouterListenerBouton("okMap");
}
public LatLng getCentreFrance() {
return LatLng.newInstance(47.0504, 2.2347);
 
public double[] getCoordsCentreFrance() {
double[] coords = {47.0504, 2.2347};
return coords;
}
 
}