This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 17ea5148801ad9627c460e9a8f8d68610cbdc8f5 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Apr 16 08:58:08 2015 +0200 add map in trip seine UI --- observe-swing/pom.xml | 22 ++ observe-swing/src/license/THIRD-PARTY.properties | 23 +- .../ui/content/open/impl/seine/TripSeineUI.css | 8 + .../ui/content/open/impl/seine/TripSeineUI.jaxx | 323 +++++++++++---------- .../open/impl/seine/TripSeineUIHandler.java | 156 +++++++++- .../resources/i18n/observe-swing_en_GB.properties | 15 + .../resources/i18n/observe-swing_es_ES.properties | 15 + .../resources/i18n/observe-swing_fr_FR.properties | 15 + pom.xml | 68 +++++ 9 files changed, 480 insertions(+), 165 deletions(-) diff --git a/observe-swing/pom.xml b/observe-swing/pom.xml index 16a4b23..639159b 100644 --- a/observe-swing/pom.xml +++ b/observe-swing/pom.xml @@ -237,6 +237,28 @@ <scope>runtime</scope> </dependency> + <!-- Map --> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-swing</artifactId> + </dependency> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-shapefile</artifactId> + </dependency> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-api</artifactId> + </dependency> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-main</artifactId> + </dependency> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-render</artifactId> + </dependency> + <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> diff --git a/observe-swing/src/license/THIRD-PARTY.properties b/observe-swing/src/license/THIRD-PARTY.properties index 02aa035..843f100 100644 --- a/observe-swing/src/license/THIRD-PARTY.properties +++ b/observe-swing/src/license/THIRD-PARTY.properties @@ -1,33 +1,42 @@ # Generated by org.codehaus.mojo.license.AddThirdPartyMojo #------------------------------------------------------------------------------- # Already used licenses in project : +# - AL 2.0 # - Apache License 2.0 +# - Apache License, version 2.0 # - Apache Software License, version 1.1 # - BSD License -# - Common Public License Version 1.0 +# - Common Development and Distribution License +# - Eclipse Distribution License (EDL), Version 1.0 +# - Eclipse Public License (EPL), Version 1.0 +# - Eclipse Public License 1.0 # - GNU General Public License - Version 2 with the class path exception -# - GNU LESSER GENERAL PUBLIC LICENSE +# - GNU General Public License, Version 2 with the Classpath Exception # - GNU Lesser General Public License -# - GNU Lesser General Public License, 2.1 -# - GNU Lesser General Public License, version 2.1 # - GNU Library or Lesser General Public License # - General Public License (GPL) # - Indiana University Extreme! Lab Software License, vesion 1.1.1 +# - JDL (Java Distribution License) # - LGPL 2.1 # - Lesser General Public License (LGPL) # - Lesser General Public License (LGPL) v 3.0 # - MIT License # - MPL 1.1 # - New BSD License +# - OGC copyright # - Public Domain +# - Similar to Apache License but with the acknowledgment clause removed +# - Simplified BSD # - The Apache Software License, Version 2.0 # - The H2 License, Version 1.0 -# - lgpl -# - license.txt #------------------------------------------------------------------------------- # Please fill the missing licenses for dependencies : # # -#Tue Jun 25 08:54:11 CEST 2013 +#Tue Apr 14 11:12:38 CEST 2015 commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0 dom4j--dom4j--1.6.1=BSD License +java3d--vecmath--1.3.2=GNU General Public License - Version 2 with the class path exception +javax.media--jai_codec--1.1.3=JDL (Java Distribution License) +javax.media--jai_imageio--1.1=JDL (Java Distribution License) +jgridshift--jgridshift--1.0=GNU Library or Lesser General Public License diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUI.css b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUI.css index b747f9a..b1772ef 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUI.css +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUI.css @@ -30,6 +30,14 @@ NumberEditor { numberPattern:{fr.ird.observe.ui.UIHelper.INT_6_DIGITS_PATTERN}; } +#generalTab { + title:"observe.tripSeine.tab.general"; +} + +#mapTab { + title:"observe.tripSeine.tab.map"; +} + #model { editable:true; modified:{validator.isChanged()}; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUI.jaxx b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUI.jaxx index b8d2d76..d63894c 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUI.jaxx +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUI.jaxx @@ -45,6 +45,8 @@ static fr.ird.observe.ui.UIHelper.getStringValue static org.apache.commons.lang3.StringUtils.isEmpty static org.nuiton.i18n.I18n.n + + org.geotools.swing.JMapPane </import> <!-- handler --> @@ -76,163 +78,170 @@ protected boolean canEditOcean(java.util.List<Route> routes) { <!-- formulaire --> <JPanel id="body" layout='{new BorderLayout()}'> - <Table insets="0" fill="both" constraints='BorderLayout.CENTER'> - - <!-- captain --> - <row> - <cell anchor='west'> - <JLabel id='captainLabel'/> - </cell> - <cell anchor='east'> - <BeanComboBox id='captain' constructorParams='this' genericType='Person'/> - </cell> - </row> - - <!-- observer --> - <row> - <cell anchor='west'> - <JLabel id='observerLabel'/> - </cell> - <cell anchor='east'> - <BeanComboBox id='observer' constructorParams='this' genericType='Person'/> - </cell> - </row> - - <!-- dataEntryOperator --> - <row> - <cell anchor='west'> - <JLabel id='dataEntryOperatorLabel'/> - </cell> - <cell anchor='east'> - <BeanComboBox id='dataEntryOperator' constructorParams='this' genericType='Person'/> - </cell> - </row> - - <!-- vessel --> - <row> - <cell anchor='west'> - <JLabel id='vesselLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <BeanComboBox id='vessel' constructorParams='this' genericType='Vessel'/> - </cell> - </row> - - <!-- ocean (editable uniquement si pas de route saisie) --> - <row> - <cell anchor='west'> - <JLabel id='oceanLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <BeanComboBox id='ocean' genericType='Ocean' constructorParams='this'/> - </cell> - </row> - - <!-- departureHarbour --> - <row> - <cell anchor='west'> - <JLabel id='departureHarbourLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <BeanComboBox id='departureHarbour' genericType='Harbour' constructorParams='this'/> - </cell> - </row> - - <!-- landingHarbour --> - <row> - <cell anchor='west'> - <JLabel id='landingHarbourLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <BeanComboBox id='landingHarbour' genericType='Harbour' constructorParams='this'/> - </cell> - </row> - - <!-- id ers --> - <row> - - <cell anchor='west'> - <JLabel id='ersIdLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <JPanel layout='{new BorderLayout()}'> - <JToolBar id='ersIdToolbar' constraints='BorderLayout.WEST'> - <JButton id='resetErsId' constraints='BorderLayout.WEST' styleClass='resetButton'/> - </JToolBar> - <JTextField id='ersId' constraints='BorderLayout.CENTER'/> - </JPanel> - </cell> - </row> - - <!-- startDate --> - <row> - <cell anchor='west'> - <JLabel id='startDateLabel'/> - </cell> - <cell anchor='west' weightx="0.5"> - <JXDatePicker id='startDate'/> - </cell> - </row> - - <!-- endDate --> - <row> - <cell anchor='west'> - <JLabel id='endDateLabel'/> - </cell> - <cell anchor='west' weightx="0.5"> - <JXDatePicker id='endDate'/> - </cell> - </row> - - <!-- formsUrl --> - <row> - <cell anchor="west"> - <JLabel id='formsUrlLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <JPanel layout='{new BorderLayout()}'> - <JToolBar id='formsUrlToolbar' constraints='BorderLayout.WEST'> - <JButton id='resetFormsUrl' constraints='BorderLayout.WEST' styleClass='resetButton'/> - </JToolBar> - <JTextField id='formsUrl' constraints='BorderLayout.CENTER'/> - <JToolBar id='formsUrlToolbar2' constraints='BorderLayout.EAST'> - <JButton id='openLinkFormulairesUrl' - onActionPerformed='getHandler().openLink(getModel().getBean().getFormsUrl())'/> - </JToolBar> - - </JPanel> - </cell> - </row> - - <!-- reportsUrl --> - <row> - <cell anchor="west"> - <JLabel id='reportsUrlLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <JPanel layout='{new BorderLayout()}'> - <JToolBar id='reportsUrlToolbar' constraints='BorderLayout.WEST'> - <JButton id='resetReportsUrl' constraints='BorderLayout.WEST' styleClass='resetButton'/> - </JToolBar> - <JTextField id='reportsUrl' constraints='BorderLayout.CENTER'/> - - <JToolBar id='reportsUrlToolbar2' constraints='BorderLayout.EAST'> - <JButton id='openLinkRapportsUrl' constraints='BorderLayout.EAST' - onActionPerformed='getHandler().openLink(getModel().getBean().getReportsUrl())'/> - </JToolBar> - </JPanel> - </cell> - </row> - - <!-- comment --> - <row> - <cell fill='both' weighty="1" columns="2"> - <JScrollPane id='comment' onFocusGained='comment2.requestFocus()'> - <JTextArea id='comment2' onKeyReleased='getModel().getBean().setComment(comment2.getText())'/> - </JScrollPane> - </cell> - </row> - </Table> + <JTabbedPane id='tripSeineTabPane' constraints='BorderLayout.CENTER'> + <tab id='generalTab'> + <Table insets="0" fill="both"> + + <!-- captain --> + <row> + <cell anchor='west'> + <JLabel id='captainLabel'/> + </cell> + <cell anchor='east'> + <BeanComboBox id='captain' constructorParams='this' genericType='Person'/> + </cell> + </row> + + <!-- observer --> + <row> + <cell anchor='west'> + <JLabel id='observerLabel'/> + </cell> + <cell anchor='east'> + <BeanComboBox id='observer' constructorParams='this' genericType='Person'/> + </cell> + </row> + + <!-- dataEntryOperator --> + <row> + <cell anchor='west'> + <JLabel id='dataEntryOperatorLabel'/> + </cell> + <cell anchor='east'> + <BeanComboBox id='dataEntryOperator' constructorParams='this' genericType='Person'/> + </cell> + </row> + + <!-- vessel --> + <row> + <cell anchor='west'> + <JLabel id='vesselLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <BeanComboBox id='vessel' constructorParams='this' genericType='Vessel'/> + </cell> + </row> + + <!-- ocean (editable uniquement si pas de route saisie) --> + <row> + <cell anchor='west'> + <JLabel id='oceanLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <BeanComboBox id='ocean' genericType='Ocean' constructorParams='this'/> + </cell> + </row> + + <!-- departureHarbour --> + <row> + <cell anchor='west'> + <JLabel id='departureHarbourLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <BeanComboBox id='departureHarbour' genericType='Harbour' constructorParams='this'/> + </cell> + </row> + + <!-- landingHarbour --> + <row> + <cell anchor='west'> + <JLabel id='landingHarbourLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <BeanComboBox id='landingHarbour' genericType='Harbour' constructorParams='this'/> + </cell> + </row> + + <!-- id ers --> + <row> + + <cell anchor='west'> + <JLabel id='ersIdLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <JPanel layout='{new BorderLayout()}'> + <JToolBar id='ersIdToolbar' constraints='BorderLayout.WEST'> + <JButton id='resetErsId' constraints='BorderLayout.WEST' styleClass='resetButton'/> + </JToolBar> + <JTextField id='ersId' constraints='BorderLayout.CENTER'/> + </JPanel> + </cell> + </row> + + <!-- startDate --> + <row> + <cell anchor='west'> + <JLabel id='startDateLabel'/> + </cell> + <cell anchor='west' weightx="0.5"> + <JXDatePicker id='startDate'/> + </cell> + </row> + + <!-- endDate --> + <row> + <cell anchor='west'> + <JLabel id='endDateLabel'/> + </cell> + <cell anchor='west' weightx="0.5"> + <JXDatePicker id='endDate'/> + </cell> + </row> + + <!-- formsUrl --> + <row> + <cell anchor="west"> + <JLabel id='formsUrlLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <JPanel layout='{new BorderLayout()}'> + <JToolBar id='formsUrlToolbar' constraints='BorderLayout.WEST'> + <JButton id='resetFormsUrl' constraints='BorderLayout.WEST' styleClass='resetButton'/> + </JToolBar> + <JTextField id='formsUrl' constraints='BorderLayout.CENTER'/> + <JToolBar id='formsUrlToolbar2' constraints='BorderLayout.EAST'> + <JButton id='openLinkFormulairesUrl' + onActionPerformed='getHandler().openLink(getModel().getBean().getFormsUrl())'/> + </JToolBar> + + </JPanel> + </cell> + </row> + + <!-- reportsUrl --> + <row> + <cell anchor="west"> + <JLabel id='reportsUrlLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <JPanel layout='{new BorderLayout()}'> + <JToolBar id='reportsUrlToolbar' constraints='BorderLayout.WEST'> + <JButton id='resetReportsUrl' constraints='BorderLayout.WEST' styleClass='resetButton'/> + </JToolBar> + <JTextField id='reportsUrl' constraints='BorderLayout.CENTER'/> + + <JToolBar id='reportsUrlToolbar2' constraints='BorderLayout.EAST'> + <JButton id='openLinkRapportsUrl' constraints='BorderLayout.EAST' + onActionPerformed='getHandler().openLink(getModel().getBean().getReportsUrl())'/> + </JToolBar> + </JPanel> + </cell> + </row> + + <!-- comment --> + <row> + <cell fill='both' weighty="1" columns="2"> + <JScrollPane id='comment' onFocusGained='comment2.requestFocus()'> + <JTextArea id='comment2' onKeyReleased='getModel().getBean().setComment(comment2.getText())'/> + </JScrollPane> + </cell> + </row> + </Table> + </tab> + <tab id="mapTab"> + <JMapPane id='tripMap'/> + </tab> + </JTabbedPane> </JPanel> <!-- surcharge des actions (pour appliquer la css specifique) --> diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java index 34bdd7d..19004de 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java @@ -21,7 +21,13 @@ */ package fr.ird.observe.ui.content.open.impl.seine; +import com.google.common.base.Function; +import com.google.common.collect.Lists; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; import fr.ird.observe.DataService; +import fr.ird.observe.ObserveConfig; import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; @@ -30,19 +36,45 @@ import fr.ird.observe.db.util.TopiaExecutor2; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.Routes; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.tripMap.TripMapPoint; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; import fr.ird.observe.ui.content.open.ContentOpenableUIModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.geotools.data.FileDataStore; +import org.geotools.data.FileDataStoreFinder; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.feature.DefaultFeatureCollection; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.geotools.geometry.DirectPosition2D; +import org.geotools.geometry.jts.JTSFactoryFinder; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.geotools.map.FeatureLayer; +import org.geotools.map.Layer; +import org.geotools.map.MapContent; +import org.geotools.styling.SLD; +import org.geotools.styling.Style; +import org.geotools.swing.JMapPane; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.util.TopiaEntityBinder; import org.nuiton.util.DateUtil; - +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import javax.swing.JTabbedPane; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.Color; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; +import java.io.File; import java.util.Date; +import java.util.List; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -135,6 +167,24 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { } + + ObserveConfig config = ui.getContextValue(ObserveConfig.class); + + final JMapPane tripMap = getUi().getTripMap(); + + tripMap.setBackground(config.getMapBackgroundColor()); + + getUi().getTripSeineTabPane().addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + JTabbedPane tripSeineTabPane = (JTabbedPane) e.getSource(); + if (tripSeineTabPane.getSelectedComponent() == tripMap) { + doOpenMap(); + } + } + }); + + tripMap.addMouseWheelListener(new MouseMapListener()); finalizeOpenUI(mode, create); } @@ -293,4 +343,108 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeine> { } + public void doOpenMap() { + JMapPane tripMap = getUi().getTripMap(); + tripMap.setMapContent(getMapContent()); + tripMap.setDisplayArea(tripArea); + } + + protected MapContent mapContent; + protected ReferencedEnvelope tripArea; + + public MapContent getMapContent() { +// if (mapContent == null) { + try { + + mapContent = new MapContent(); + mapContent.setTitle("Un titre"); + + + // add map layers + ObserveConfig config = ui.getContextValue(ObserveConfig.class); + + for (File layerFile : config.getMapLayerFiles()) { + FileDataStore store = FileDataStoreFinder.getDataStore(layerFile); + SimpleFeatureSource featureSource = store.getFeatureSource(); + Style style = SLD.createSimpleStyle(featureSource.getSchema()); + Layer layer = new FeatureLayer(featureSource, style); + mapContent.addLayer(layer); + } + + // add trip + DataService dataService = getDataService(); + DataSource source = getDataSource(); + String tripId = getSelectedId(); + + List<TripMapPoint> tripMapPoints = dataService.loadTrip(source, tripId); + + GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); + + SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder(); + typeBuilder.setName("a-type-name"); + //typeBuilder.setCRS(CRS.decode("EPSG:4326")); + typeBuilder.add("geom-attr-name", LineString.class); + + SimpleFeatureType type = typeBuilder.buildFeatureType(); + SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type); + + + List <Coordinate> coordinates = Lists.transform(tripMapPoints, new Function<TripMapPoint, Coordinate>() { + + @Override + public Coordinate apply(TripMapPoint input) { + return new Coordinate(input.getLongitude(), input.getLatitude()); + } + }); + + LineString line = geometryFactory.createLineString(coordinates.toArray(new Coordinate[0])); + + builder.add(line); + + SimpleFeature tripFeature = builder.buildFeature("trip"); + + DefaultFeatureCollection features = new DefaultFeatureCollection(); + features.add(tripFeature); + + Style style = SLD.createLineStyle(Color.green, 1); + Layer layer = new FeatureLayer(features, style); + mapContent.addLayer(layer); + + // set zoom + + tripArea = new ReferencedEnvelope(); + for (TripMapPoint point : tripMapPoints) { + tripArea.expandToInclude(new DirectPosition2D(point.getLongitude(), point.getLatitude())); + } + tripArea.expandBy(1.1); + + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Error on generate Map", e); + } + } +// } + return mapContent; + } + + private class MouseMapListener implements MouseWheelListener { + + @Override + public void mouseWheelMoved(MouseWheelEvent e) { + int notches = e.getWheelRotation(); + double scale = notches; + + if (log.isDebugEnabled()) { + log.debug(String.format("Map mouse zoom (rotation : %s, scale : %s)", notches, scale)); + } + + JMapPane tripMap = getUi().getTripMap(); + ReferencedEnvelope displayArea = tripMap.getDisplayArea(); + displayArea.expandBy(scale); + tripMap.setDisplayArea(displayArea); + } + + + } + } diff --git a/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties b/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties index f82a763..3431a6a 100644 --- a/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties +++ b/observe-swing/src/main/resources/i18n/observe-swing_en_GB.properties @@ -927,6 +927,8 @@ observe.config.category.gps=GPS observe.config.category.gps.description=GPS Configuration observe.config.category.h2=Local data source observe.config.category.h2.description=Configuration of local data source +observe.config.category.map= +observe.config.category.map.description= observe.config.category.observation= observe.config.category.observation.description= observe.config.category.obstuna=Remote data source @@ -959,6 +961,17 @@ observe.config.h2.can.migrate.description=Flag to know if you can migrate h2 dat observe.config.h2.login.description=H2 Login observe.config.h2.password.description=H2 Password observe.config.h2.serverPort.description= +observe.config.map.background.description= +observe.config.map.layer1.description= +observe.config.map.layer10.description= +observe.config.map.layer2.description= +observe.config.map.layer3.description= +observe.config.map.layer4.description= +observe.config.map.layer5.description= +observe.config.map.layer6.description= +observe.config.map.layer7.description= +observe.config.map.layer8.description= +observe.config.map.layer9.description= observe.config.observation.activitysDetaillees= observe.config.observation.fauneAssociee= observe.config.observation.floatingObject= @@ -2099,6 +2112,8 @@ observe.tripSeine.message.creating=Creating a trip observe.tripSeine.message.no.active.found=No opened trip found, you can create a new one or open an existing one. observe.tripSeine.message.not.open=Current trip is not opened, no edit possible. observe.tripSeine.message.updating=Updating a trip +observe.tripSeine.tab.general=Caracteristics +observe.tripSeine.tab.map=Map observe.tripSeine.title=Trip observe.validation.report.contextName= observe.validation.report.entities.with.messages= diff --git a/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties b/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties index 815c31a..43af648 100644 --- a/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties +++ b/observe-swing/src/main/resources/i18n/observe-swing_es_ES.properties @@ -927,6 +927,8 @@ observe.config.category.gps=GPS observe.config.category.gps.description=Configuración GPS observe.config.category.h2=Base local observe.config.category.h2.description=Configuración de la base locale +observe.config.category.map= +observe.config.category.map.description= observe.config.category.observation=Calificacion de las observaciones observe.config.category.observation.description=Gestion de los indicadores de calificación de los programas observe.config.category.obstuna=Base remota @@ -959,6 +961,17 @@ observe.config.h2.can.migrate.description=Autorizar la actualización de las bas observe.config.h2.login.description=Login h2 observe.config.h2.password.description=Contraseña h2 observe.config.h2.serverPort.description=Puerto del servidor h2 +observe.config.map.background.description= +observe.config.map.layer1.description= +observe.config.map.layer10.description= +observe.config.map.layer2.description= +observe.config.map.layer3.description= +observe.config.map.layer4.description= +observe.config.map.layer5.description= +observe.config.map.layer6.description= +observe.config.map.layer7.description= +observe.config.map.layer8.description= +observe.config.map.layer9.description= observe.config.observation.activitysDetaillees=Observación de actividades detalladas observe.config.observation.fauneAssociee=Observación de Fauna asociada observe.config.observation.floatingObject=Observación de objetos flotantes @@ -2101,6 +2114,8 @@ observe.tripSeine.message.creating= observe.tripSeine.message.no.active.found= observe.tripSeine.message.not.open= observe.tripSeine.message.updating= +observe.tripSeine.tab.general= +observe.tripSeine.tab.map=Mapa observe.tripSeine.title= observe.validation.report.contextName= observe.validation.report.entities.with.messages= diff --git a/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties b/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties index bcbde51..5ecd1b4 100644 --- a/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties +++ b/observe-swing/src/main/resources/i18n/observe-swing_fr_FR.properties @@ -927,6 +927,8 @@ observe.config.category.gps=GPS observe.config.category.gps.description=Configuration GPS observe.config.category.h2=Base locale observe.config.category.h2.description=Configuration base locale +observe.config.category.map= +observe.config.category.map.description= observe.config.category.observation=Qualification des observations observe.config.category.observation.description=Gestion des indicateurs de qualification des programmes observe.config.category.obstuna=Base distante @@ -959,6 +961,17 @@ observe.config.h2.can.migrate.description=Autoriser la mise à jour des bases lo observe.config.h2.login.description=Le login h2 observe.config.h2.password.description=Le mot de passe h2 observe.config.h2.serverPort.description=Port du serveur h2 +observe.config.map.background.description= +observe.config.map.layer1.description= +observe.config.map.layer10.description= +observe.config.map.layer2.description= +observe.config.map.layer3.description= +observe.config.map.layer4.description= +observe.config.map.layer5.description= +observe.config.map.layer6.description= +observe.config.map.layer7.description= +observe.config.map.layer8.description= +observe.config.map.layer9.description= observe.config.observation.activitysDetaillees=Observation des activités détaillées observe.config.observation.fauneAssociee=Observation des Faunes associées observe.config.observation.floatingObject=Observation des objets flottants @@ -2099,6 +2112,8 @@ observe.tripSeine.message.creating=La marée est en cours de création. observe.tripSeine.message.no.active.found=Aucune marée ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrir une. observe.tripSeine.message.not.open=La marée courante n'est pas ouverte, aucune modification possible. observe.tripSeine.message.updating=La maréee est en cours de modification. +observe.tripSeine.tab.general=Caractéristiques +observe.tripSeine.tab.map=Carte observe.tripSeine.title=Marée observe.validation.report.contextName=Context de validation utilisé \: %1$s observe.validation.report.entities.with.messages=Nombre d'entités avec des messages \: %1$s diff --git a/pom.xml b/pom.xml index 9d6fa6e..bff1d05 100644 --- a/pom.xml +++ b/pom.xml @@ -122,6 +122,8 @@ <sl4jVersion>1.7.9</sl4jVersion> <swingXVersion>1.6.4</swingXVersion> + <geoToolsVersion>12.0.1</geoToolsVersion> + <!-- license header configuration --> <license.licenseName>gpl_v3</license.licenseName> <license.organizationName>IRD, Codelutin, Tony Chemit</license.organizationName> @@ -444,6 +446,72 @@ <version>${hibernateVersion}</version> </dependency> + <!-- Map --> + <dependency> + <groupId>com.bbn</groupId> + <artifactId>openmap</artifactId> + <version>5.0.4</version> + </dependency> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-shapefile</artifactId> + <version>${geoToolsVersion}</version> + <exclusions> + <exclusion> + <groupId>java3d</groupId> + <artifactId>vecmath</artifactId> + </exclusion> + <exclusion> + <groupId>jgridshift</groupId> + <artifactId>jgridshift</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-swing</artifactId> + <version>${geoToolsVersion}</version> + </dependency> + + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-api</artifactId> + <version>${geoToolsVersion}</version> + <exclusions> + <exclusion> + <groupId>jgridshift</groupId> + <artifactId>jgridshift</artifactId> + </exclusion> + <exclusion> + <groupId>java3d</groupId> + <artifactId>vecmath</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-main</artifactId> + <version>${geoToolsVersion}</version> + </dependency> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-render</artifactId> + <version>${geoToolsVersion}</version> + </dependency> + + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt-opengis</artifactId> + <version>${geoToolsVersion}</version> + <exclusions> + <exclusion> + <groupId>java3d</groupId> + <artifactId>vecmath</artifactId> + </exclusion> + </exclusions> + </dependency> + <!-- logging --> <dependency> <groupId>org.slf4j</groupId> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.