6,6 → 6,7 |
import java.util.Iterator; |
|
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.EntiteGeographiqueObservation; |
import org.tela_botanica.client.modeles.ListeObservation; |
import org.tela_botanica.client.modeles.ListeReferentielCommune; |
import org.tela_botanica.client.modeles.ListeReferentielNom; |
15,10 → 16,13 |
import org.tela_botanica.client.observation.ObservationMediateur; |
|
import com.google.gwt.core.client.JavaScriptObject; |
import com.google.gwt.maps.client.geom.LatLng; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HTML; |
import com.gwtext.client.core.EventCallback; |
import com.gwtext.client.core.EventObject; |
import com.gwtext.client.core.Ext; |
import com.gwtext.client.core.ExtElement; |
import com.gwtext.client.core.ListenerConfig; |
import com.gwtext.client.core.Position; |
import com.gwtext.client.data.ArrayReader; |
34,6 → 38,7 |
import com.gwtext.client.widgets.Container; |
import com.gwtext.client.widgets.DatePicker; |
import com.gwtext.client.widgets.Panel; |
import com.gwtext.client.widgets.ToolTip; |
import com.gwtext.client.widgets.Toolbar; |
import com.gwtext.client.widgets.Viewport; |
import com.gwtext.client.widgets.event.BoxComponentListenerAdapter; |
46,9 → 51,11 |
import com.gwtext.client.widgets.form.DateField; |
import com.gwtext.client.widgets.form.Field; |
import com.gwtext.client.widgets.form.FormPanel; |
import com.gwtext.client.widgets.form.MultiFieldPanel; |
import com.gwtext.client.widgets.form.TextArea; |
import com.gwtext.client.widgets.form.TextField; |
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter; |
import com.gwtext.client.widgets.form.event.TextFieldListenerAdapter; |
import com.gwtext.client.widgets.layout.AnchorLayoutData; |
import com.gwtext.client.widgets.layout.ColumnLayout; |
import com.gwtext.client.widgets.layout.ColumnLayoutData; |
177,7 → 184,21 |
private Panel panneauSecondeColonne; |
|
private boolean masseModification =false ; |
|
private TextField longitude; |
|
private TextField latitude; |
|
private MultiFieldPanel coordPanel; |
|
private TextField coordonnees; |
|
private HTML accesformulaire; |
|
private HTML basculerverscarto; |
|
private boolean longlatAjoutee; |
|
/** |
* Constructeur sans argument (privé car ne doit pas être utilisé) |
*/ |
246,20 → 267,107 |
commune.setLoadingText("Recherche..."); |
|
commune.setHideTrigger(true); |
commune.setTabIndex(1); |
//commune.setTabIndex(1); |
|
panneauPremierColonne.add(commune, new AnchorLayoutData("95%")); |
|
station = new TextField("Station", "station"); |
station.setAllowBlank(true); |
station.setTabIndex(3); |
//station.setTabIndex(3); |
panneauPremierColonne.add(station, new AnchorLayoutData("95%")); |
|
longitude = new TextField("X", "x", 100); |
longitude.setAllowBlank(true); |
|
latitude = new TextField("Y", "y", 100); |
latitude.setAllowBlank(true); |
|
// Panneau de type plusieurs champs de formulaire sur une meme ligne, où seront renseignés X/Y |
coordPanel = new MultiFieldPanel(); |
coordPanel.setVisible(false); |
coordPanel.addToRow(longitude, new ColumnLayoutData(0.5)); |
coordPanel.addToRow(latitude, new ColumnLayoutData(0.5)); |
coordPanel.setBorder(false); |
|
//création du champs coordonnées |
|
coordonnees = new TextField("Coordonnées", "", 0); |
coordonnees.setMaxLength(0); |
coordonnees.setReadOnly(true); |
coordonnees.setCls("fieldname"); |
|
//création du lien "saisie X/Y" dans le formulaire |
|
accesformulaire = new HTML("<a id=\"lien_coord\" href=\"#\" tabindex=\"7\">Saisie X/Y</a>"); |
accesformulaire.addStyleName("lien"); |
|
//création info bulle sur le lien "saisie X/Y" |
ToolTip tip1 = new ToolTip(); |
tip1.setHtml("X / Y sont les longitudes / latitudes, à remplir en degrés décimaux"); |
tip1.applyTo(accesformulaire.getElement()); |
|
//ajout d'un listener sur le lien "saisie X/Y" |
|
coordPanel.addListener(new PanelListenerAdapter() { |
|
public void onAfterLayout(Container c) { |
ExtElement lienCoord = Ext.get("lien_coord"); |
lienCoord.removeAllListeners(); |
lienCoord.addListener("click", new EventCallback() { |
public void execute(EventObject e) { |
coordPanel.setVisible(!coordPanel.isVisible()); |
} |
}) ; |
|
ExtElement lienCarto = Ext.get("lien_carto"); |
lienCarto.removeAllListeners(); |
lienCarto.addListener("click", new EventCallback() { |
|
public void execute(EventObject e) { |
|
if(coordonneesValides() == null) { |
if(commune.getValue() != null && !commune.getValue().equals("")) { |
obtenirInformationCommune(); |
longlatAjoutee = true; |
|
} else { |
Window.alert("Veuillez renseigner au moins une commune ou des coordonnées pour la géolocalisation"); |
} |
} else { |
obtenirInformationCoord(); |
} |
} |
}); |
} |
|
}); |
|
|
//création du lien "Accès carto" dans le formulaire |
basculerverscarto = new HTML(" <a id=\"lien_carto\" href=\"#\" tabindex=\"6\">Selection depuis la carto</a>"); |
basculerverscarto.addStyleName("lien"); |
|
//création info bulle sur le lien "accès carto" |
ToolTip tip2 = new ToolTip(); |
tip2.setHtml("Via une carte, obtenez les coordonnées (longitude/latitude) de votre observation "); |
tip2.applyTo(basculerverscarto.getElement()); |
|
//Sur une meme ligne, ajout de plusieurs champs |
final MultiFieldPanel htmlPanel = new MultiFieldPanel(); |
htmlPanel.addToRow(coordonnees, 100); |
htmlPanel.addToRow(basculerverscarto, new ColumnLayoutData(0.5)); |
htmlPanel.addToRow(accesformulaire, new ColumnLayoutData(0.5)); |
htmlPanel.setBorder(false); |
htmlPanel.setId("x-coord-panel"); |
|
panneauPremierColonne.add(htmlPanel); |
panneauPremierColonne.add(coordPanel); |
|
date = new DateField("Date", "date", 100); |
date.setAllowBlank(true); |
formatDate = "d/m/Y"; |
date.setFormat(formatDate) ; |
date.setTabIndex(5); |
//date.setTabIndex(5); |
panneauPremierColonne.add(date, new AnchorLayoutData("60%")); |
|
|
277,25 → 385,25 |
espece.setLoadingText("Recherche..."); |
|
espece.setHideTrigger(true); |
espece.setTabIndex(6); |
//espece.setTabIndex(6); |
|
panneauPremierColonne.add(espece, new AnchorLayoutData("95%")); |
|
lieudit = new TextField("Lieu-dit", "lieudit"); |
lieudit.setAllowBlank(true); |
lieudit.setTabIndex(2); |
//lieudit.setTabIndex(2); |
panneauSecondeColonne.add(lieudit, new AnchorLayoutData("95%")); |
|
|
milieu = new TextField("Milieu", "milieu"); |
milieu.setAllowBlank(true); |
milieu.setTabIndex(4); |
//milieu.setTabIndex(4); |
panneauSecondeColonne.add(milieu, new AnchorLayoutData("95%")); |
|
comment = new TextArea("Notes", "comment"); |
comment.setAllowBlank(true); |
comment.setHeight(50); |
comment.setTabIndex(7); |
//comment.setTabIndex(7); |
panneauSecondeColonne.add(comment, new AnchorLayoutData("95%") ); |
|
|
376,6 → 484,8 |
|
ajouterListeners() ; |
|
saisieTabindex(); |
|
} |
|
private void ajouterListeners() |
803,6 → 913,7 |
store.load() ; |
|
commune.setStore(store); |
commune.expand(); |
} |
|
// si l'on a reçu une liste du référentiel nom (complétion referentiel nom) |
873,11 → 984,44 |
espece.setValue(anumNom[0]); |
setModification("false"); |
} |
|
if(nouvelleDonnees instanceof EntiteGeographiqueObservation) |
{ |
EntiteGeographiqueObservation infosComm = (EntiteGeographiqueObservation)nouvelleDonnees ; |
rafraichirCommuneEtCoord(infosComm); |
} |
|
} |
|
|
private void rafraichirCommuneEtCoord(EntiteGeographiqueObservation infosCom) { |
|
String nCommune = ""; |
|
|
if(infosCom.getLocation() != null && !infosCom.getLocation().equals("")) { |
nCommune += infosCom.getLocation(); |
} |
|
if(infosCom.getIdLocation() != null && !infosCom.getIdLocation().equals("")) { |
nCommune += " ("+infosCom.getIdLocation()+")"; |
departement = infosCom.getIdLocation(); |
} |
|
commune.setValue(nCommune); |
|
if(infosCom.getLat() != null && !infosCom.getLat().equals("")) { |
latitude.setValue(infosCom.getLat()); |
} |
|
if(infosCom.getLon() != null && !infosCom.getLon().equals("")) { |
longitude.setValue(infosCom.getLon()); |
} |
} |
|
public void obtenirListeReferentielCommune() { |
|
String com=commune.getText().replaceAll(" ","/"); |
String com=commune.getText()/*.replaceAll(" ","/")*/; |
com=com.replaceAll("%",""); |
|
observationMediateur.obtenirListeReferentielCommune(this,com); |
887,7 → 1031,7 |
|
public void obtenirListeReferentielNom() { |
|
String esp=espece.getText().replaceAll(" ","/"); |
String esp=espece.getText().replaceAll(" ","/*"); |
esp=esp.replaceAll("%",""); |
|
observationMediateur.obtenirListeReferentielNom(this,esp); |
1183,6 → 1327,8 |
milieu.reset() ; |
comment.reset() ; |
milieu.reset() ; |
latitude.reset(); |
longitude.reset(); |
departement =""; |
espece.reset(); |
numeroNom = "" ; |
1314,6 → 1460,91 |
commModifie = false; |
} |
|
public void saisieTabindex() |
{ |
|
selecteurMode.setTabIndex(0); |
commune.setTabIndex(1); |
lieudit.setTabIndex(2); |
station.setTabIndex(3); |
milieu.setTabIndex(4); |
coordonnees.setTabIndex(-1); |
coordonnees.addListener(new TextFieldListenerAdapter() { |
|
public void onFocus(Field field) { |
if(coordPanel.isVisible()) { |
longitude.focus(); |
} else { |
Ext.get("lien_carto").focus(); |
} |
} |
}); |
|
longitude.setTabIndex(8); |
latitude.setTabIndex(9); |
comment.setTabIndex(10); |
date.setTabIndex(11); |
espece.setTabIndex(12); |
boutonOK.setTabIndex(13); |
boutonAnnuler.setTabIndex(14); |
|
} |
|
private void obtenirInformationCoord() { |
if(coordonneesValides() != null) { |
observationMediateur.obtenirInformationCoord(LatLng.newInstance(coordonneesValides()[0],coordonneesValides()[1])); |
} else { |
Window.alert("Les coordonnées saisies sont invalides"); |
} |
|
} |
|
private void obtenirInformationCommune() { |
observationMediateur.obtenirInformationCommune(commune.getValue(), obtenirDepartementAPartirChampCommune()); |
} |
|
private double[] coordonneesValides() { |
|
try { |
|
double lat = Double.parseDouble(latitude.getValueAsString().replaceAll(",", ".")); |
double lon = Double.parseDouble(longitude.getValueAsString().replaceAll(",", ".")); |
|
double[] coord = {lat, lon}; |
return coord; |
|
} catch (NumberFormatException ne) { |
return null; |
} |
} |
|
private String obtenirDepartementAPartirChampCommune() { |
if(departement.equals("000null") || departement.equals("")) { |
String[] depCom = commune.getText().split(" "); |
if(depCom.length > 1) { |
String dep = depCom[1].replace('(', ' '); |
dep =dep.replace(')', ' '); |
dep = dep.trim(); |
dep = dep.replace('\\',' '); |
dep = dep.trim(); |
|
try |
{ |
int nDep = Integer.parseInt(dep); |
if(nDep > 0 && nDep < 110) { |
departement = dep ; |
} |
} |
catch(NumberFormatException e) |
{ |
departement = "" ; |
} |
} |
} |
|
return departement; |
} |
|
private Field obtenirCorrespondanceChampsEnum(Champs champ) { |
switch(champ) { |
case DATE: |