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 2559ebd0b0b5da17932f9045cb4f4efd0a5d7dd3 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Apr 22 17:35:56 2015 +0200 add export map into png, fix zoomIt in launch --- .../fr/ird/observe/ui/util/tripMap/TripMapUI.css | 10 +++ .../fr/ird/observe/ui/util/tripMap/TripMapUI.jaxx | 5 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 90 ++++++++++++++++++---- .../resources/i18n/observe-swing_en_GB.properties | 18 +++++ .../resources/i18n/observe-swing_es_ES.properties | 18 +++++ .../resources/i18n/observe-swing_fr_FR.properties | 12 +++ 6 files changed, 136 insertions(+), 17 deletions(-) diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUI.css b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUI.css new file mode 100644 index 0000000..532970b --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUI.css @@ -0,0 +1,10 @@ + +#zoomIt { + text: "observe.map.action.zoomIt"; + toolTipText: "observe.map.action.zoomIt.tip"; +} + +#exportPng { + text: "observe.map.action.exportPng"; + toolTipText: "observe.map.action.exportPng.tip"; +} \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUI.jaxx b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUI.jaxx index a7fa300..d0fc5d1 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUI.jaxx +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUI.jaxx @@ -17,7 +17,10 @@ void $afterCompleteSetup() { ]]> </script> - + <JPopupMenu id='mapPopupMenu'> + <JMenuItem id='zoomIt' onActionPerformed='getHandler().zoomIt()'/> + <JMenuItem id='exportPng' onActionPerformed='getHandler().exportPng()'/> + </JPopupMenu> <ObserveMapPane id='observeMapPane' constraints="BorderLayout.CENTER"/> 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 a0c5317..db9c6c1 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 @@ -16,6 +16,7 @@ import fr.ird.observe.db.DataSource; 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 org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; @@ -48,6 +49,8 @@ import org.geotools.swing.event.MapPaneListener; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; +import javax.imageio.ImageIO; +import javax.swing.JOptionPane; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; @@ -56,13 +59,17 @@ import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; +import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; +import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; +import static org.nuiton.i18n.I18n.t; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ @@ -91,13 +98,16 @@ public class TripMapUIHandler { public void initUI() { - JMapPane mapPane = getMapPane(); + ObserveMapPane mapPane = getObserveMapPane(); MouseMapListener mouseMapListener = new MouseMapListener(); mapPane.addMouseWheelListener(mouseMapListener); mapPane.addMouseMotionListener(mouseMapListener); mapPane.addMouseListener(mouseMapListener); mapPane.addMapPaneListener(new TripMapListener()); + + mapPane.setComponentPopupMenu(view.getMapPopupMenu()); + rendererRunning = false; } @@ -105,11 +115,13 @@ public class TripMapUIHandler { public void setConfig(ObserveConfig config) { this.config = config; - JMapPane mapPane = getMapPane(); + JMapPane mapPane = getObserveMapPane(); mapPane.setBackground(config.getMapBackgroundColor()); } - + protected ObserveMapPane getObserveMapPane() { + return view.getObserveMapPane(); + } public void doOpenMap(DataSource dataSource, DataService dataService, String tripId) { @@ -121,17 +133,53 @@ public class TripMapUIHandler { throw new ObserveTechnicalException("Unable to load trip map activity points", e); } - JMapPane mapPane = getMapPane(); + JMapPane mapPane = getObserveMapPane(); MapContent mapContent = buildMapContent(tripMapPoints); mapPane.setMapContent(mapContent); - zoomIt(); } public void zoomIt() { - JMapPane mapPane = getMapPane(); + JMapPane mapPane = getObserveMapPane(); mapPane.setDisplayArea(tripArea); } + public void exportPng() { + + File file = UIHelper.chooseFile( + view, + t("observe.map.export.chooseFile.title"), + t("observe.map.export.chooseFile.ok"), + null, + "^.+\\.png$", + t("observe.map.export.chooseFile.png")); + + boolean write = true; + if (file.exists()) { + write = UIHelper.askUser( + view, + t("observe.map.export.overwrite.title"), + t("observe.map.export.overwrite"), + JOptionPane.OK_CANCEL_OPTION, + new Object[] { + t("observe.map.export.overwrite.ok"), + t("observe.map.export.overwrite.cancel")}, + 1) == 0; + } + + if (write) { + BufferedImage im = new BufferedImage(view.getWidth(), view.getHeight(), BufferedImage.TYPE_INT_ARGB); + view.paint(im.getGraphics()); + try { + ImageIO.write(im, "PNG", file); + } catch (IOException e) { + throw new ObserveTechnicalException("unable to export map ", e); + } + + UIHelper.displayInfo(t("observe.map.export.success")); + } + } + + protected MapContent buildMapContent(List<TripMapPoint> tripMapPoints) { @@ -355,7 +403,7 @@ public class TripMapUIHandler { protected void zoomApply() { if (zoomRatio != 1 && ! rendererRunning) { - JMapPane mapPane = getMapPane(); + JMapPane mapPane = getObserveMapPane(); ReferencedEnvelope displayArea = mapPane.getDisplayArea(); @@ -420,12 +468,16 @@ public class TripMapUIHandler { @Override public void mousePressed(MouseEvent e) { - startMove(e.getPoint()); + if (e.getButton() == MouseEvent.BUTTON1) { + startMove(e.getPoint()); + } } @Override public void mouseReleased(MouseEvent e) { - endMove(e.getPoint()); + if (e.getButton() == MouseEvent.BUTTON1) { + endMove(e.getPoint()); + } } @Override @@ -449,7 +501,7 @@ public class TripMapUIHandler { } protected void startMove(Point2D startPointInScreen) { - JMapPane mapPane = getMapPane(); + JMapPane mapPane = getObserveMapPane(); startDisplayArea = mapPane.getDisplayArea(); @@ -474,7 +526,7 @@ public class TripMapUIHandler { endDisplayArea.translate(transX, transY); - JMapPane mapPane = getMapPane(); + JMapPane mapPane = getObserveMapPane(); mapPane.setDisplayArea(endDisplayArea); @@ -485,9 +537,14 @@ public class TripMapUIHandler { } protected class TripMapListener implements MapPaneListener { + + protected boolean firstRendering; + @Override public void onNewMapContent(MapPaneEvent ev) { + firstRendering = true; } + @Override public void onDisplayAreaChanged(MapPaneEvent ev) { } @@ -500,12 +557,13 @@ public class TripMapUIHandler { @Override public void onRenderingStopped(MapPaneEvent ev) { rendererRunning = false; - zoomApply(); + if (firstRendering) { + zoomIt(); + firstRendering = false; + } else { + zoomApply(); + } } } - protected JMapPane getMapPane() { - return view.getObserveMapPane(); - } - } 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 0c22776..2511271 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 @@ -1264,7 +1264,25 @@ observe.longlineGlobalComposition.tab.hooksComposition=Hooks observe.longlineGlobalComposition.tab.mitigationType=Mitigation observe.longlineGlobalComposition.title=Global composition observe.measurement.delete.message= +observe.map.action.exportPng= +observe.map.action.exportPng.tip= +observe.map.action.zoomIt= +observe.map.action.zoomIt.tip= observe.map.east= +observe.map.export.choose.export.ok= +observe.map.export.choose.export.title= +observe.map.export.chooseFile.ok= +observe.map.export.chooseFile.overwrite= +observe.map.export.chooseFile.overwrite.cancel= +observe.map.export.chooseFile.overwrite.ok= +observe.map.export.chooseFile.overwrite.title= +observe.map.export.chooseFile.png= +observe.map.export.chooseFile.title= +observe.map.export.overwrite= +observe.map.export.overwrite.cancel= +observe.map.export.overwrite.ok= +observe.map.export.overwrite.title= +observe.map.export.success= 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 2d8cec3..256a25a 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 @@ -1266,7 +1266,25 @@ observe.longlineGlobalComposition.tab.hooksComposition= observe.longlineGlobalComposition.tab.mitigationType= observe.longlineGlobalComposition.title= observe.measurement.delete.message= +observe.map.action.exportPng= +observe.map.action.exportPng.tip= +observe.map.action.zoomIt= +observe.map.action.zoomIt.tip= observe.map.east= +observe.map.export.choose.export.ok= +observe.map.export.choose.export.title= +observe.map.export.chooseFile.ok= +observe.map.export.chooseFile.overwrite= +observe.map.export.chooseFile.overwrite.cancel= +observe.map.export.chooseFile.overwrite.ok= +observe.map.export.chooseFile.overwrite.title= +observe.map.export.chooseFile.png= +observe.map.export.chooseFile.title= +observe.map.export.overwrite= +observe.map.export.overwrite.cancel= +observe.map.export.overwrite.ok= +observe.map.export.overwrite.title= +observe.map.export.success= 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 c945b19..e88068e 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 @@ -1264,7 +1264,19 @@ observe.longlineGlobalComposition.tab.hooksComposition=Hameçons observe.longlineGlobalComposition.tab.mitigationType=Atténuations observe.longlineGlobalComposition.title=Composition globale de la palangre observe.measurement.delete.message=Supprimer la caractéristique sélectionnée +observe.map.action.exportPng=Exporter +observe.map.action.exportPng.tip=Exporter la carte +observe.map.action.zoomIt=Centrer +observe.map.action.zoomIt.tip=Centrer la carte sur la marée observe.map.east=Est +observe.map.export.chooseFile.ok=Exporter +observe.map.export.chooseFile.png=image PNG +observe.map.export.chooseFile.title=Exporter la carte +observe.map.export.overwrite=Le fichier existe déjà. Voulez-vous le remplacer ? +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.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>.