branch feature/6944 updated (71a68a3 -> 02de3bc)
This is an automated email from the git hooks/post-receive script. New change to branch feature/6944 in repository observe. See http://git.codelutin.com/observe.git from 71a68a3 accepter la carte par son type plutot que par son nome dans le bloqueur + passage a jaxx en snapshot (refs #6944) new 02de3bc add legend The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 02de3bc367cd15ab5c741af8f02524f4b6dd4703 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Apr 23 14:06:55 2015 +0200 add legend Summary of changes: .../fr/ird/observe/tripMap/TripMapPointType.java | 36 +++++--- .../i18n/observe-entities_en_GB.properties | 12 +++ .../i18n/observe-entities_es_ES.properties | 12 +++ .../i18n/observe-entities_fr_FR.properties | 12 +++ .../observe/ui/util/tripMap/ObserveMapPane.java | 88 +++++++++++++++++++- .../ui/util/tripMap/ObserveMapPaneLegendItem.java | 69 ++++++++++++++++ .../util/tripMap/ObserverMapPanLegendDrawer.java | 95 ++++++++++++++++++++++ .../observe/ui/util/tripMap/TripMapUIHandler.java | 65 +++++++++++++-- .../resources/i18n/observe-swing_en_GB.properties | 2 + .../resources/i18n/observe-swing_es_ES.properties | 2 + .../resources/i18n/observe-swing_fr_FR.properties | 2 + 11 files changed, 375 insertions(+), 20 deletions(-) create mode 100644 observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPaneLegendItem.java create mode 100644 observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserverMapPanLegendDrawer.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/6944 in repository observe. See http://git.codelutin.com/observe.git commit 02de3bc367cd15ab5c741af8f02524f4b6dd4703 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Apr 23 14:06:55 2015 +0200 add legend --- .../fr/ird/observe/tripMap/TripMapPointType.java | 36 +++++--- .../i18n/observe-entities_en_GB.properties | 12 +++ .../i18n/observe-entities_es_ES.properties | 12 +++ .../i18n/observe-entities_fr_FR.properties | 12 +++ .../observe/ui/util/tripMap/ObserveMapPane.java | 88 +++++++++++++++++++- .../ui/util/tripMap/ObserveMapPaneLegendItem.java | 69 ++++++++++++++++ .../util/tripMap/ObserverMapPanLegendDrawer.java | 95 ++++++++++++++++++++++ .../observe/ui/util/tripMap/TripMapUIHandler.java | 65 +++++++++++++-- .../resources/i18n/observe-swing_en_GB.properties | 2 + .../resources/i18n/observe-swing_es_ES.properties | 2 + .../resources/i18n/observe-swing_fr_FR.properties | 2 + 11 files changed, 375 insertions(+), 20 deletions(-) diff --git a/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPointType.java b/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPointType.java index cbe7b85..82f9243 100644 --- a/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPointType.java +++ b/observe-entities/src/main/java/fr/ird/observe/tripMap/TripMapPointType.java @@ -1,22 +1,34 @@ package fr.ird.observe.tripMap; +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ public enum TripMapPointType { - SEINE_DEPARTURE_HARBOUR, - SEINE_LANDINGE_HARBOUR, - SEINE_ACTIVITY, - SEINE_ACTIVITY_WITH_FREE_SCHOOL_TYPE, - SEINE_ACTIVITY_WITH_OBJECT_SCHOOL_TYPE, + SEINE_DEPARTURE_HARBOUR(n("observe.map.seine.harbour.departure")), + SEINE_LANDINGE_HARBOUR(n("observe.map.seine.harbour.landing")), + SEINE_ACTIVITY(n("observe.map.seine.activity")), + SEINE_ACTIVITY_WITH_FREE_SCHOOL_TYPE(n("observe.map.seine.activity.schollType.free")), + SEINE_ACTIVITY_WITH_OBJECT_SCHOOL_TYPE(n("observe.map.seine.activity.schollType.object")), + + LONGLINE_DEPARTURE_HARBOUR(n("observe.map.longLine.seine.harbour.departure")), + LONGLINE_LANDINGE_HARBOUR(n("observe.map.longLine.seine.harbour.landing")), + LONGLINE_ACTIVITY(n("observe.map.longLine.activity")), + LONGLINE_ACTIVITY_WITH_SETTING_START(n("observe.map.longLine.activity.setting.start")), + LONGLINE_ACTIVITY_WITH_SETTING_END(n("observe.map.longLine.activity.setting.end")), + LONGLINE_ACTIVITY_WITH_HAULING_START(n("observe.map.longLine.activity.hauling.start")), + LONGLINE_ACTIVITY_WITH_HAULING_END(n("observe.map.longLine.activity.hauling.end")); + + String label; - LONGLINE_DEPARTURE_HARBOUR, - LONGLINE_LANDINGE_HARBOUR, - LONGLINE_ACTIVITY, - LONGLINE_ACTIVITY_WITH_SETTING_START, - LONGLINE_ACTIVITY_WITH_SETTING_END, - LONGLINE_ACTIVITY_WITH_HAULING_START, - LONGLINE_ACTIVITY_WITH_HAULING_END; + TripMapPointType(String label) { + this.label = label; + } + public String getLabel() { + return t(label); + } } diff --git a/observe-entities/src/main/resources/i18n/observe-entities_en_GB.properties b/observe-entities/src/main/resources/i18n/observe-entities_en_GB.properties index b81be2a..9f50422 100644 --- a/observe-entities/src/main/resources/i18n/observe-entities_en_GB.properties +++ b/observe-entities/src/main/resources/i18n/observe-entities_en_GB.properties @@ -20,6 +20,18 @@ observe.common.reference.status.enabled= observe.common.schoolType.libre= observe.common.schoolType.objet= observe.common.schoolType.undefined= +observe.map.longLine.activity= +observe.map.longLine.activity.hauling.end= +observe.map.longLine.activity.hauling.start= +observe.map.longLine.activity.setting.end= +observe.map.longLine.activity.setting.start= +observe.map.longLine.seine.harbour.departure= +observe.map.longLine.seine.harbour.landing= +observe.map.seine.activity= +observe.map.seine.activity.schollType.free= +observe.map.seine.activity.schollType.object= +observe.map.seine.harbour.departure= +observe.map.seine.harbour.landing= observe.storage.migrate.askUser.message=Database use version %1$s,\n\nYou need to migrate to version %2$s.\nWould you like to execute migration ?\n\nNote\: Following migrations will be applied\: %3$s. observe.storage.migrate.askUser.title=Database update to version %1$s is required observe.storage.migrate.not.possible.before.version.3.0.message=<html><body>The application version requires a database in minimum version <strong>3.0</strong>. You database is actually in version %s<br/>Do first a migration using ObServe 3.0 or 3.1, you will then be able to migrate your database using this version of ObServe</body></html> diff --git a/observe-entities/src/main/resources/i18n/observe-entities_es_ES.properties b/observe-entities/src/main/resources/i18n/observe-entities_es_ES.properties index 71f83d7..a0f0749 100644 --- a/observe-entities/src/main/resources/i18n/observe-entities_es_ES.properties +++ b/observe-entities/src/main/resources/i18n/observe-entities_es_ES.properties @@ -20,6 +20,18 @@ observe.common.reference.status.enabled=Activado observe.common.schoolType.libre=Banco libre observe.common.schoolType.objet=Banco a objeto observe.common.schoolType.undefined=Banco indeterminado +observe.map.longLine.activity= +observe.map.longLine.activity.hauling.end= +observe.map.longLine.activity.hauling.start= +observe.map.longLine.activity.setting.end= +observe.map.longLine.activity.setting.start= +observe.map.longLine.seine.harbour.departure= +observe.map.longLine.seine.harbour.landing= +observe.map.seine.activity= +observe.map.seine.activity.schollType.free= +observe.map.seine.activity.schollType.object= +observe.map.seine.harbour.departure= +observe.map.seine.harbour.landing= observe.storage.migrate.askUser.message=La base de datos tiene la versión %1$s,\n\n Es necesario una migración a la versión %2$s.\n¿Quiere migrar la base de datos ?\n\nNota \: Se aplicarán las siguientes actualizaciones \: %3$s. observe.storage.migrate.askUser.title=Se requiera la actualización de la base de datos a la versión %1$s. observe.storage.migrate.not.possible.before.version.3.0.message=<html><body>La version %s d'ObServe nécessite une base de version au moins <strong>3.0</strong>. Votre base est en version %s<br/>Veuillez dans un premier temps utiliser ObServe 3.0 ou 3.1 pour effectuer la migration puis réouvrir la base avec cette nouvelle version d'ObServe</body></html> diff --git a/observe-entities/src/main/resources/i18n/observe-entities_fr_FR.properties b/observe-entities/src/main/resources/i18n/observe-entities_fr_FR.properties index d4a8587..60be1c5 100644 --- a/observe-entities/src/main/resources/i18n/observe-entities_fr_FR.properties +++ b/observe-entities/src/main/resources/i18n/observe-entities_fr_FR.properties @@ -20,6 +20,18 @@ observe.common.reference.status.enabled=Activé observe.common.schoolType.libre=Banc libre observe.common.schoolType.objet=Banc objet observe.common.schoolType.undefined=Banc indéterminé +observe.map.longLine.activity=point d'activité +observe.map.longLine.activity.hauling.end=Fin de filage +observe.map.longLine.activity.hauling.start=Début de filage +observe.map.longLine.activity.setting.end=Fin de virage +observe.map.longLine.activity.setting.start=Début de virage +observe.map.longLine.seine.harbour.departure=Port de départ +observe.map.longLine.seine.harbour.landing=Port d'arrivée +observe.map.seine.activity=point d'activité +observe.map.seine.activity.schollType.free=Banc libre +observe.map.seine.activity.schollType.object=Banc objet +observe.map.seine.harbour.departure=Port de départ +observe.map.seine.harbour.landing=Port d'arrivée observe.storage.migrate.askUser.message=La base de données est en version %1$s,\n\nUne migration en version %2$s est nécéssaire.\nVoulez vous migrer la base de données ?\n\nNote \: Les mises à jour suivantes seront appliquées \: %3$s. observe.storage.migrate.askUser.title=Mise à jour de la base en version %1$s requise observe.storage.migrate.not.possible.before.version.3.0.message=<html><body>La version %s d'ObServe nécessite une base de version au moins <strong>3.0</strong>. Votre base est en version %s<br/>Veuillez dans un premier temps utiliser ObServe 3.0 ou 3.1 pour effectuer la migration puis réouvrir la base avec cette nouvelle version d'ObServe</body></html> diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPane.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPane.java index a0f8718..d624681 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPane.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPane.java @@ -1,9 +1,13 @@ package fr.ird.observe.ui.util.tripMap; +import com.google.common.collect.Lists; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.geotools.geometry.jts.ReferencedEnvelope; import org.geotools.renderer.lite.RendererUtilities; +import org.geotools.styling.FeatureTypeStyle; +import org.geotools.styling.Rule; +import org.geotools.styling.Style; import org.geotools.swing.JMapPane; import org.geotools.swing.event.MapPaneAdapter; import org.geotools.swing.event.MapPaneEvent; @@ -14,6 +18,8 @@ import java.awt.Graphics; import java.awt.Point; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; +import java.util.List; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -48,7 +54,7 @@ public class ObserveMapPane extends JMapPane { updateScale(); } }); - + legendItems = Lists.newArrayList(); } @@ -156,6 +162,84 @@ public class ObserveMapPane extends JMapPane { } + protected List<ObserveMapPaneLegendItem> legendItems; + + public List<ObserveMapPaneLegendItem> getLegendItems() { + return legendItems; + } + + public void setLegendItems(List<ObserveMapPaneLegendItem> legendItems) { + this.legendItems = legendItems; + } + + protected void paintLegend(Graphics graphics) { + + if (legendItems != null) { + + int x = 0; + int y = getHeight() - ObserveMapPaneLegendItem.LEGEND_ITEM_HEIGHT * legendItems.size(); + + ObserverMapPanLegendDrawer drawer = new ObserverMapPanLegendDrawer(); + + FontMetrics fm = graphics.getFontMetrics(); + + int maxLabelWidth = 0; + + for (ObserveMapPaneLegendItem item : legendItems) { + Rectangle2D labelArea = fm.getStringBounds(item.getLabel(), graphics); + + maxLabelWidth = Math.max((int)labelArea.getWidth(), maxLabelWidth); + + } + + for (ObserveMapPaneLegendItem item : legendItems) { + + graphics.setColor(ObserveMapPaneLegendItem.LEGEND_BACKGROUND); + graphics.fillRect( + x, + y, + ObserveMapPaneLegendItem.LEGEND_SYMBOL_WIDTH + maxLabelWidth + ObserveMapPaneLegendItem.LEGEND_MARGIN, + ObserveMapPaneLegendItem.LEGEND_ITEM_HEIGHT); + + BufferedImage symbole = new BufferedImage( + ObserveMapPaneLegendItem.LEGEND_SYMBOL_WIDTH, + ObserveMapPaneLegendItem.LEGEND_ITEM_HEIGHT, + BufferedImage.TYPE_INT_ARGB); + + Style style = item.getStyle(); + + for (FeatureTypeStyle featureTypeStyle : style.featureTypeStyles()) { + + for (Rule rule : featureTypeStyle.rules()) { + + if (rule.getFilter().evaluate(item.getSimpleFeature())) { + + drawer.drawDirect(symbole, item.getSimpleFeature(), rule); + + } + } + } + + graphics.drawImage(symbole, x, y, null); + + graphics.setColor(Color.BLACK); + + Rectangle2D labelArea = fm.getStringBounds(item.getLabel(), graphics); + + int labelMarginBottom = (int) ((ObserveMapPaneLegendItem.LEGEND_ITEM_HEIGHT - labelArea.getHeight()) / 2); + + graphics.drawString(item.getLabel(), + x + ObserveMapPaneLegendItem.LEGEND_SYMBOL_WIDTH, + y + ObserveMapPaneLegendItem.LEGEND_ITEM_HEIGHT - labelMarginBottom); + + y += ObserveMapPaneLegendItem.LEGEND_ITEM_HEIGHT; + + } + } + + } + + @Override public void paint(Graphics graphics) { @@ -166,6 +250,8 @@ public class ObserveMapPane extends JMapPane { paintCompass(graphics); + paintLegend(graphics); + } protected enum CardinalPoint { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPaneLegendItem.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPaneLegendItem.java new file mode 100644 index 0000000..4a6cd5a --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPaneLegendItem.java @@ -0,0 +1,69 @@ +package fr.ird.observe.ui.util.tripMap; + +import com.vividsolutions.jts.geom.Coordinate; +import org.geotools.styling.Style; +import org.opengis.feature.simple.SimpleFeature; + +import java.awt.Color; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObserveMapPaneLegendItem { + + protected static final int LEGEND_ITEM_HEIGHT = 20; + protected static final int LEGEND_SYMBOL_WIDTH = 50; + protected static final int LEGEND_MARGIN = 5; + protected static final Color LEGEND_BACKGROUND = new Color(1f, 1f, 1f, 0.8f); + + + public static Coordinate[] lineCoordinates() { + Coordinate[] coordinates = new Coordinate[2]; + coordinates[0] = new Coordinate(LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2); + coordinates[1] = new Coordinate(LEGEND_SYMBOL_WIDTH - LEGEND_MARGIN, LEGEND_ITEM_HEIGHT / 2); + return coordinates; + } + + public static Coordinate[] pointCoordinates() { + Coordinate[] coordinates = new Coordinate[1]; + coordinates[0] = new Coordinate(LEGEND_SYMBOL_WIDTH / 2, LEGEND_ITEM_HEIGHT / 2); + return coordinates; + } + + + protected SimpleFeature simpleFeature; + + protected Style style; + + protected String label; + + public ObserveMapPaneLegendItem(SimpleFeature simpleFeature, Style style, String label) { + this.simpleFeature = simpleFeature; + this.style = style; + this.label = label; + } + + public SimpleFeature getSimpleFeature() { + return simpleFeature; + } + + public void setSimpleFeature(SimpleFeature simpleFeature) { + this.simpleFeature = simpleFeature; + } + + public Style getStyle() { + return style; + } + + public void setStyle(Style style) { + this.style = style; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserverMapPanLegendDrawer.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserverMapPanLegendDrawer.java new file mode 100644 index 0000000..930f825 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserverMapPanLegendDrawer.java @@ -0,0 +1,95 @@ +package fr.ird.observe.ui.util.tripMap; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.Point; +import org.geotools.geometry.jts.LiteShape; +import org.geotools.legend.Drawer; +import org.geotools.styling.LineSymbolizer; +import org.geotools.styling.PointSymbolizer; +import org.geotools.styling.Rule; +import org.geotools.styling.SLD; +import org.geotools.styling.Symbolizer; +import org.geotools.styling.TextSymbolizer; +import org.opengis.feature.simple.SimpleFeature; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Stroke; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObserverMapPanLegendDrawer { + + protected Drawer drawer; + + + public ObserverMapPanLegendDrawer() { + drawer = Drawer.create(); + + } + + public void drawDirect(BufferedImage bi, SimpleFeature feature, Rule rule){ + AffineTransform affineTransform = new AffineTransform(); + + LiteShape shape = new LiteShape(null, affineTransform, false); + for(Symbolizer symbolizer : rule.getSymbolizers()) { + if (symbolizer instanceof LineSymbolizer) { + LineSymbolizer lineSymbolizer = (LineSymbolizer) symbolizer; + + Geometry geometry = findGeometry(feature, lineSymbolizer); + if (geometry != null) { + + Graphics graphics = bi.getGraphics(); + Graphics2D g = (Graphics2D) graphics; + + shape.setGeometry(geometry); + + + Color c = SLD.color(lineSymbolizer); + int w = SLD.width( lineSymbolizer ); + float[] lineDash = SLD.lineDash(lineSymbolizer); + if( c != null && w > 0 ){ + g.setColor( c ); + + Stroke str = new BasicStroke( + w, + BasicStroke.CAP_SQUARE, + BasicStroke.JOIN_MITER, + 10.0f, lineDash, 0.0f + ); + g.setStroke(str); + + g.draw( shape ); + } + } + } else { + drawer.drawFeature(bi, feature, affineTransform, false, symbolizer, null, shape); + } + + } + + + } + + protected Geometry findGeometry(SimpleFeature feature, LineSymbolizer lineSymbolizer) { + String geomName = lineSymbolizer.getGeometryPropertyName(); + + Geometry geom; + if (geomName == null) { + geom = (Geometry) feature.getDefaultGeometry(); + } else { + geom = (Geometry) feature.getAttribute(geomName); + } + return geom; + } + + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java index db9c6c1..68eb5c0 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java @@ -3,6 +3,7 @@ package fr.ird.observe.ui.util.tripMap; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicate; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.vividsolutions.jts.geom.Coordinate; @@ -17,6 +18,7 @@ import fr.ird.observe.db.DataSourceException; import fr.ird.observe.tripMap.TripMapPoint; import fr.ird.observe.tripMap.TripMapPointType; import fr.ird.observe.ui.UIHelper; +import javafx.util.Pair; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; @@ -67,6 +69,7 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -79,6 +82,14 @@ public class TripMapUIHandler { public static final String TRIP_POINTS_LAYER_NAME = "Trip points"; public static final double ZOOM_STEP_RATIO = 0.1; + protected static final Set<TripMapPointType> TRIP_MAP_POINT_TYPES_IN_LEGEND = ImmutableSet.of( + TripMapPointType.SEINE_ACTIVITY_WITH_FREE_SCHOOL_TYPE, + TripMapPointType.SEINE_ACTIVITY_WITH_OBJECT_SCHOOL_TYPE, + TripMapPointType.LONGLINE_ACTIVITY_WITH_SETTING_START, + TripMapPointType.LONGLINE_ACTIVITY_WITH_SETTING_END, + TripMapPointType.LONGLINE_ACTIVITY_WITH_HAULING_START, + TripMapPointType.LONGLINE_ACTIVITY_WITH_HAULING_END); + public static TripMapUIHandler newHandler(TripMapUI view) { return new TripMapUIHandler(view); } @@ -133,9 +144,10 @@ public class TripMapUIHandler { throw new ObserveTechnicalException("Unable to load trip map activity points", e); } - JMapPane mapPane = getObserveMapPane(); - MapContent mapContent = buildMapContent(tripMapPoints); - mapPane.setMapContent(mapContent); + ObserveMapPane mapPane = getObserveMapPane(); + Pair<MapContent, List<ObserveMapPaneLegendItem>> buildMapContent = buildMapContent(tripMapPoints); + mapPane.setMapContent(buildMapContent.getKey()); + mapPane.setLegendItems(buildMapContent.getValue()); } public void zoomIt() { @@ -181,9 +193,10 @@ public class TripMapUIHandler { - protected MapContent buildMapContent(List<TripMapPoint> tripMapPoints) { + protected Pair<MapContent, List<ObserveMapPaneLegendItem>> buildMapContent(List<TripMapPoint> tripMapPoints) { MapContent mapContent = new MapContent(); + List<ObserveMapPaneLegendItem> legendItems = Lists.newArrayList(); if (tripMapPoints != null) { try { @@ -264,10 +277,31 @@ public class TripMapUIHandler { Style styleLines = findStyle(styledLayerDescriptor, TRIP_LINES_LAYER_NAME, null); Layer layerLines = new FeatureLayer(linesFeatures, styleLines); - mapContent.addLayer(layerLines); + // add line in legend + LineString line = geometryFactory.createLineString(ObserveMapPaneLegendItem.lineCoordinates()); + lineBuilder.add(line); + lineBuilder.add(""); + lineBuilder.add("tripDay"); + + ObserveMapPaneLegendItem legendTripDay = new ObserveMapPaneLegendItem( + lineBuilder.buildFeature(null), + styleLines, + t("observe.map.legend.tripDay")); + legendItems.add(legendTripDay); + + lineBuilder.add(line); + lineBuilder.add(""); + lineBuilder.add("tripBetweenTwoDays"); + ObserveMapPaneLegendItem legendTripBetweenTwoDays = new ObserveMapPaneLegendItem( + lineBuilder.buildFeature(null), + styleLines, + t("observe.map.legend.tripBetweenTwoDays")); + legendItems.add(legendTripBetweenTwoDays); + + // add Point SimpleFeatureTypeBuilder pointFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); pointFeatureTypeBuilder.setName("point Builder"); @@ -280,6 +314,9 @@ public class TripMapUIHandler { DefaultFeatureCollection pointsFeatures = new DefaultFeatureCollection(); + Style stylePoints = findStyle(styledLayerDescriptor, TRIP_POINTS_LAYER_NAME, null); + + for (final TripMapPointType type : TripMapPointType.values()) { Iterable<Coordinate> coordinates = Iterables.transform( @@ -302,10 +339,24 @@ public class TripMapUIHandler { pointBuilder.add(points); pointBuilder.add(type.name()); pointsFeatures.add(pointBuilder.buildFeature(null)); + + + // add point in legend + if (TRIP_MAP_POINT_TYPES_IN_LEGEND.contains(type)) { + points = geometryFactory.createMultiPoint(ObserveMapPaneLegendItem.pointCoordinates()); + pointBuilder.add(points); + pointBuilder.add(type.name()); + + ObserveMapPaneLegendItem legendPoint = new ObserveMapPaneLegendItem( + pointBuilder.buildFeature(null), + stylePoints, + type.getLabel()); + legendItems.add(legendPoint); + } + } } - Style stylePoints = findStyle(styledLayerDescriptor, TRIP_POINTS_LAYER_NAME, null); Layer pointsLayer = new FeatureLayer(pointsFeatures, stylePoints); mapContent.addLayer(pointsLayer); // set zoom @@ -322,7 +373,7 @@ public class TripMapUIHandler { } } - return mapContent; + return new Pair<MapContent, List<ObserveMapPaneLegendItem>>(mapContent, legendItems); } protected StyledLayerDescriptor importStyledLayerDescriptor() throws FileNotFoundException { 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 603d32a..94bc962 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 @@ -1259,6 +1259,8 @@ observe.map.export.overwrite.cancel= observe.map.export.overwrite.ok= observe.map.export.overwrite.title= observe.map.export.success= +observe.map.legend.tripBetweenTwoDays= +observe.map.legend.tripDay= observe.map.miles= observe.map.north= observe.map.south= 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 4baf73a..a118eee 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 @@ -1259,6 +1259,8 @@ observe.map.export.overwrite.cancel= observe.map.export.overwrite.ok= observe.map.export.overwrite.title= observe.map.export.success= +observe.map.legend.tripBetweenTwoDays= +observe.map.legend.tripDay= observe.map.miles= observe.map.north= observe.map.south= 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 88ea1ac..0b781e3 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 @@ -1251,6 +1251,8 @@ observe.map.export.overwrite.cancel=Annuler observe.map.export.overwrite.ok=Remplacer observe.map.export.overwrite.title=Attention observe.map.export.success=Carte Exportée +observe.map.legend.tripBetweenTwoDays=Trajet entre deux jours +observe.map.legend.tripDay=Trajet d'une journée observe.map.miles=milles observe.map.north=Nord observe.map.south=Sud -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm