Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 247 → Rev 248

/trunk/src/org/tela_botanica/client/vues/observation/FormulaireSaisieObservationVue.java
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: