From 0dab5171947f4d87d5e7fbb9b5e486ed5de3246f Mon Sep 17 00:00:00 2001 From: Carsten Madsen Date: Tue, 10 Jul 2018 11:26:15 +0200 Subject: [PATCH 1/7] Fix EDT violations and other small fixes. --- .../com/bbn/openmap/event/NavMouseMode.java | 3 +++ .../com/bbn/openmap/gui/LayerStatusPane.java | 15 +++++++++-- .../com/bbn/openmap/gui/ScaleTextPanel.java | 17 ++++++++---- .../com/bbn/openmap/gui/StatusLightPanel.java | 18 ++++++++++--- .../bbn/openmap/gui/menu/ProjectionMenu.java | 26 ++++++++++++------- .../com/bbn/openmap/layer/BufferedLayer.java | 10 +++++-- .../bbn/openmap/layer/shape/SpatialIndex.java | 2 ++ .../bbn/openmap/omGraphics/OMDistance.java | 5 +++- .../com/bbn/openmap/omGraphics/OMPoly.java | 5 +++- .../bbn/openmap/omGraphics/OMRangeRings.java | 3 +++ 10 files changed, 79 insertions(+), 25 deletions(-) diff --git a/src/openmap/com/bbn/openmap/event/NavMouseMode.java b/src/openmap/com/bbn/openmap/event/NavMouseMode.java index d7ba1927..a6d2d545 100644 --- a/src/openmap/com/bbn/openmap/event/NavMouseMode.java +++ b/src/openmap/com/bbn/openmap/event/NavMouseMode.java @@ -316,6 +316,9 @@ public void mouseDragged(MouseEvent e) { } super.mouseDragged(e); + if (point1 == null) { + return; + } Object obj = e.getSource(); diff --git a/src/openmap/com/bbn/openmap/gui/LayerStatusPane.java b/src/openmap/com/bbn/openmap/gui/LayerStatusPane.java index f30a1b04..68899726 100644 --- a/src/openmap/com/bbn/openmap/gui/LayerStatusPane.java +++ b/src/openmap/com/bbn/openmap/gui/LayerStatusPane.java @@ -26,6 +26,7 @@ import javax.swing.ButtonGroup; import javax.swing.ImageIcon; +import javax.swing.SwingUtilities; import com.bbn.openmap.Layer; import com.bbn.openmap.LayerHandler; @@ -74,10 +75,20 @@ protected LayerStatusPane(String title) { public void updateLayerStatus(LayerStatusEvent evt) { switch (evt.getStatus()) { case LayerStatusEvent.START_WORKING: - onoffButton.setSelectedIcon(layerWorking); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + onoffButton.setSelectedIcon(layerWorking); + } + }); break; case LayerStatusEvent.FINISH_WORKING: - onoffButton.setSelectedIcon(layerDone); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + onoffButton.setSelectedIcon(layerDone); + } + }); break; } } diff --git a/src/openmap/com/bbn/openmap/gui/ScaleTextPanel.java b/src/openmap/com/bbn/openmap/gui/ScaleTextPanel.java index 5eadb86e..80f3070c 100644 --- a/src/openmap/com/bbn/openmap/gui/ScaleTextPanel.java +++ b/src/openmap/com/bbn/openmap/gui/ScaleTextPanel.java @@ -27,6 +27,7 @@ import java.io.Serializable; import javax.swing.JTextField; +import javax.swing.SwingUtilities; import com.bbn.openmap.I18n; import com.bbn.openmap.MapBean; @@ -102,12 +103,18 @@ public synchronized void setProjection(Projection aProjection) { + String.valueOf(projection.getScale()) + "\""); } - String oldScale = scaleField.getText(); - String newScale = df.format(projection.getScale()); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + String oldScale = scaleField.getText(); + String newScale = df.format(projection.getScale()); - if (!oldScale.equals(newScale)) { - scaleField.setText("1:" + newScale); - } + if (!oldScale.equals(newScale)) { + scaleField.setText("1:" + newScale); + } + + } + }); } /** diff --git a/src/openmap/com/bbn/openmap/gui/StatusLightPanel.java b/src/openmap/com/bbn/openmap/gui/StatusLightPanel.java index 8944d042..ecd22668 100644 --- a/src/openmap/com/bbn/openmap/gui/StatusLightPanel.java +++ b/src/openmap/com/bbn/openmap/gui/StatusLightPanel.java @@ -252,7 +252,7 @@ public void reset() { * @param icon the icon light representing the status. */ protected void setLayerStatus(Layer layer, Icon icon) { - JButton statusgif = statusLights.get(layer); + JButton statusgif = statusLights.get(layer); if (statusgif != null) { statusgif.setIcon(icon); @@ -288,19 +288,29 @@ protected void setLayerStatus(Layer layer, Icon icon) { * * @param evt LayerStatusEvent */ - public void updateLayerStatus(LayerStatusEvent evt) { + public void updateLayerStatus(final LayerStatusEvent evt) { switch (evt.getStatus()) { // these need to be coordinated correctly by the Layer, // otherwise // we'll get phantom status ticks or maybe an ArrayOutOfBounds // negative... case LayerStatusEvent.START_WORKING: - setLayerStatus((Layer) evt.getSource(), redIcon); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + setLayerStatus((Layer) evt.getSource(), redIcon); + } + }); break; case LayerStatusEvent.STATUS_UPDATE: break; case LayerStatusEvent.FINISH_WORKING: - setLayerStatus((Layer) evt.getSource(), greenIcon); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + setLayerStatus((Layer) evt.getSource(), greenIcon); + } + }); break; default: System.err.println("InformationDelegator.updateLayerStatus(): " diff --git a/src/openmap/com/bbn/openmap/gui/menu/ProjectionMenu.java b/src/openmap/com/bbn/openmap/gui/menu/ProjectionMenu.java index 4366abcb..a5263c29 100644 --- a/src/openmap/com/bbn/openmap/gui/menu/ProjectionMenu.java +++ b/src/openmap/com/bbn/openmap/gui/menu/ProjectionMenu.java @@ -34,6 +34,7 @@ import javax.swing.ButtonGroup; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; +import javax.swing.SwingUtilities; import com.bbn.openmap.MapBean; import com.bbn.openmap.event.ProjectionEvent; @@ -124,22 +125,27 @@ public void propertyChange(PropertyChangeEvent pce) { * * @param e ProjectionEvent */ - public void projectionChanged(ProjectionEvent e) { + public void projectionChanged(final ProjectionEvent e) { - Projection newProj = e.getProjection(); + final Projection newProj = e.getProjection(); if (logger.isLoggable(Level.FINE)) { logger.fine(newProj != null ? newProj.toString() : "null"); } - if (newProj != null - && (projection == null || (!projection.equals(newProj)))) { - setProjection((Projection) newProj.makeClone()); - Object source = e.getSource(); - if (source instanceof Component) { - projComponent = (Component) source; - } - } + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + if (newProj != null + && (projection == null || (!projection.equals(newProj)))) { + setProjection((Projection) newProj.makeClone()); + Object source = e.getSource(); + if (source instanceof Component) { + projComponent = (Component) source; + } + } + } + }); } /** diff --git a/src/openmap/com/bbn/openmap/layer/BufferedLayer.java b/src/openmap/com/bbn/openmap/layer/BufferedLayer.java index b724493a..b650dcd5 100644 --- a/src/openmap/com/bbn/openmap/layer/BufferedLayer.java +++ b/src/openmap/com/bbn/openmap/layer/BufferedLayer.java @@ -46,6 +46,7 @@ import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.JTabbedPane; +import javax.swing.SwingUtilities; import com.bbn.openmap.BufferedMapBean; import com.bbn.openmap.Layer; @@ -372,9 +373,14 @@ public Paint getBckgrnd(Paint paint) { * necessary. */ @Override - public void projectionChanged(ProjectionEvent pevent) { + public void projectionChanged(final ProjectionEvent pevent) { // Just pass it on, let the layers decide if they have to update. - mapBean.setProjection(pevent.getProjection()); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + mapBean.setProjection(pevent.getProjection()); + } + }); } /** diff --git a/src/openmap/com/bbn/openmap/layer/shape/SpatialIndex.java b/src/openmap/com/bbn/openmap/layer/shape/SpatialIndex.java index dac6af02..e39377fa 100644 --- a/src/openmap/com/bbn/openmap/layer/shape/SpatialIndex.java +++ b/src/openmap/com/bbn/openmap/layer/shape/SpatialIndex.java @@ -1138,6 +1138,8 @@ protected void indexPolygons(InputStream is, long ptr, OutputStream os) { polyBounds = readBox(recBuf, 4); } else { polyBounds = new ESRIBoundingBox(); + polyBounds.min = new ESRIPoint(); + polyBounds.max = new ESRIPoint(); } ptr += recLengthBytes + 8; diff --git a/src/openmap/com/bbn/openmap/omGraphics/OMDistance.java b/src/openmap/com/bbn/openmap/omGraphics/OMDistance.java index 60e7b991..9decfd4d 100644 --- a/src/openmap/com/bbn/openmap/omGraphics/OMDistance.java +++ b/src/openmap/com/bbn/openmap/omGraphics/OMDistance.java @@ -34,7 +34,6 @@ import com.bbn.openmap.proj.LineCoordinateGenerator; import com.bbn.openmap.proj.ProjMath; import com.bbn.openmap.proj.Projection; -import com.bbn.openmap.util.Debug; import com.bbn.openmap.util.DeepCopyUtil; /** @@ -260,6 +259,10 @@ public boolean generate(Projection proj) { * @param g java.awt.Graphics to paint the poly onto. */ public void render(Graphics g) { + if (!isVisible()) { + return; + } + super.render(g); if (!paintOnlyPoly) { diff --git a/src/openmap/com/bbn/openmap/omGraphics/OMPoly.java b/src/openmap/com/bbn/openmap/omGraphics/OMPoly.java index 56c6c1f8..118ec16a 100644 --- a/src/openmap/com/bbn/openmap/omGraphics/OMPoly.java +++ b/src/openmap/com/bbn/openmap/omGraphics/OMPoly.java @@ -758,7 +758,10 @@ public boolean shouldRenderFill() { * @param g java.awt.Graphics to paint the poly onto. */ public void render(Graphics g) { - + if (!isVisible()) { + return; + } + if (getShape() != null) { super.render(g); diff --git a/src/openmap/com/bbn/openmap/omGraphics/OMRangeRings.java b/src/openmap/com/bbn/openmap/omGraphics/OMRangeRings.java index 5b39a483..d5ee44b3 100755 --- a/src/openmap/com/bbn/openmap/omGraphics/OMRangeRings.java +++ b/src/openmap/com/bbn/openmap/omGraphics/OMRangeRings.java @@ -323,6 +323,9 @@ public boolean generate(Projection proj) { * @param g Graphics context to render into */ public void render(Graphics g) { + if (!isVisible()) { + return; + } super.render(g); drawingAttributes.setFrom(this); From 9d6e8df8a8b43c6cd59922a65c8c00bfcc5edd01 Mon Sep 17 00:00:00 2001 From: Carsten Madsen Date: Mon, 7 Jan 2019 14:39:40 +0100 Subject: [PATCH 2/7] Fixing issue with close in BinaryBufferedFile --- pom.xml | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 pom.xml diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..0c9648c4 --- /dev/null +++ b/pom.xml @@ -0,0 +1,51 @@ + + 4.0.0 + com.bbn.openmap + openmap + pom + 5.1.18-SNAPSHOT + openmap + + + + + maven-antrun-plugin + + + process-resources + + + + + + + run + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.3 + + + add-jar + package + + attach-artifact + + + + + ${project.basedir}/lib/openmap.jar + jar + + + + + + + + + From 34f82dc6afb6b99da4cf4198dab00a349dc232d7 Mon Sep 17 00:00:00 2001 From: Carsten Madsen Date: Mon, 7 Jan 2019 14:44:28 +0100 Subject: [PATCH 3/7] Fixing issue with close in BinaryBufferedFile --- .project | 6 ++++++ build.xml | 2 +- .../com/bbn/openmap/io/BinaryBufferedFile.java | 11 ++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.project b/.project index 1e84f0c8..fead86a5 100644 --- a/.project +++ b/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature diff --git a/build.xml b/build.xml index c6dd5352..f2808829 100644 --- a/build.xml +++ b/build.xml @@ -6,7 +6,7 @@ ############################ --> - + - + + + + + + - + + + + + @@ -49,5 +58,16 @@ - + + + + + + + + + + + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 1759f946..d665a701 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,9 +1,9 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -84,7 +84,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disa org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=ignore -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.5 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 diff --git a/pom.xml b/pom.xml index 0c9648c4..266e6b8e 100644 --- a/pom.xml +++ b/pom.xml @@ -2,50 +2,60 @@ 4.0.0 com.bbn.openmap openmap - pom - 5.1.18-SNAPSHOT + jar + 5.1.18 openmap + + UTF-8 + + + + + edu.stanford.ejalbert + BrowserLauncher2 + 1.3 + + + junit + junit + 4.12 + + provided + + - maven-antrun-plugin - - - process-resources - - - - - - - run - - - + org.apache.maven.plugins + maven-compiler-plugin + + + **/jai/** + **/geotiff/** + + org.codehaus.mojo build-helper-maven-plugin - 1.3 + 3.0.0 - - add-jar - package - - attach-artifact - - - - - ${project.basedir}/lib/openmap.jar - jar - - - - + + generate-sources + + add-source + + + + ./src/ext + + + + ./src/openmap/com + From c50253ec8b4411ed946d9f5963d3cec685664de6 Mon Sep 17 00:00:00 2001 From: Carsten Madsen Date: Wed, 9 Jan 2019 15:42:07 +0100 Subject: [PATCH 5/7] New snapshot version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 266e6b8e..77c6cd15 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.bbn.openmap openmap jar - 5.1.18 + 5.1.19-SNAPSHOT openmap From d9c9cb722cdbc0668a7a64a3b8d515bf533f66eb Mon Sep 17 00:00:00 2001 From: Carsten Madsen Date: Tue, 15 Nov 2022 09:28:51 +0100 Subject: [PATCH 6/7] Added mouseWheelScrollLikeOSM config property. --- .classpath | 20 ++- .gitignore | 7 +- .settings/org.eclipse.jdt.core.prefs | 10 +- pom.xml | 122 +++++++++--------- .../bbn/openmap/event/AbstractMouseMode.java | 50 ++++++- .../com/bbn/openmap/layer/vpf/VPFConfig.java | 2 +- .../util/BrowserLauncher2WebBrowser.java | 45 +++++-- 7 files changed, 173 insertions(+), 83 deletions(-) diff --git a/.classpath b/.classpath index 98411871..494aa0a4 100644 --- a/.classpath +++ b/.classpath @@ -11,7 +11,7 @@ - + @@ -62,6 +62,7 @@ + @@ -69,5 +70,22 @@ + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore index 78010540..c146cf56 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,2 @@ -/classes -/package -/nbproject/private/ -/build/ -/dist/ \ No newline at end of file +*/target/** + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index d665a701..39595298 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,9 +1,9 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -18,6 +18,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled org.eclipse.jdt.core.compiler.problem.discouragedReference=warning org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled @@ -59,6 +60,7 @@ org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled @@ -84,7 +86,9 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disa org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=ignore -org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 diff --git a/pom.xml b/pom.xml index 77c6cd15..f32095ff 100644 --- a/pom.xml +++ b/pom.xml @@ -1,61 +1,67 @@ - - 4.0.0 - com.bbn.openmap - openmap - jar - 5.1.19-SNAPSHOT - openmap + + 4.0.0 + com.bbn.openmap + openmap + jar + 5.1.19-SNAPSHOT + openmap - - UTF-8 - + + UTF-8 + 1.8 + 1.8 + + + + + + junit + junit + 4.12 + + provided + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + **/jai/** + **/geotiff/** + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.0.0 + + + generate-sources + + add-source + + + + ./src/ext + + + + + + + ./src/openmap/com + - - - edu.stanford.ejalbert - BrowserLauncher2 - 1.3 - - - junit - junit - 4.12 - - provided - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - **/jai/** - **/geotiff/** - - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.0.0 - - - generate-sources - - add-source - - - - ./src/ext - - - - - - - ./src/openmap/com - - diff --git a/src/openmap/com/bbn/openmap/event/AbstractMouseMode.java b/src/openmap/com/bbn/openmap/event/AbstractMouseMode.java index 94f91176..36354703 100644 --- a/src/openmap/com/bbn/openmap/event/AbstractMouseMode.java +++ b/src/openmap/com/bbn/openmap/event/AbstractMouseMode.java @@ -28,6 +28,7 @@ import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; +import java.awt.geom.Point2D; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; @@ -45,6 +46,7 @@ import com.bbn.openmap.MapBean; import com.bbn.openmap.MouseDelegator; import com.bbn.openmap.OMComponent; +import com.bbn.openmap.proj.Proj; import com.bbn.openmap.util.PropUtils; import com.bbn.openmap.util.propertyEditor.OptionPropertyEditor; @@ -108,6 +110,8 @@ public class AbstractMouseMode protected boolean mouseWheelListener = true; + protected boolean mouseWheelScrollLikeOSM = true; + protected boolean noMouseWheelListenerTimer = false; protected String prettyName; @@ -176,6 +180,12 @@ public class AbstractMouseMode */ public static final String MouseWheelTimerIntervalProperty = "mouseWheelTimerInterval"; + /** + * scrollwhell zoom like OSM and Google Maps, ie mouse lat,lon is mapped to + * same x,y during scrollwheel zoom + */ + public static final String MouseWheelScrollLikeOSMProperty = "mouseWheelScrollLikeOSM"; + /** * Construct an AbstractMouseMode. Default constructor, allocates the mouse * support object. @@ -460,7 +470,9 @@ public void mouseMoved(MouseEvent e) { * Invoked from the MouseWheelListener interface. */ public void mouseWheelMoved(MouseWheelEvent e) { - if (mouseWheelListener) { + if (mouseWheelListener && mouseWheelScrollLikeOSM) { + scrollWheelZoomLikeOSM(e); + } else if (mouseWheelListener) { int rot = e.getWheelRotation(); if (e.getSource() instanceof MapBean) { MapBean mb = (MapBean) e.getSource(); @@ -680,6 +692,9 @@ public void setProperties(String prefix, Properties props) { noMouseWheelListenerTimer = PropUtils.booleanFromProperties(props, prefix + NoMouseWheelListenerTimerProperty, noMouseWheelListenerTimer); mouseWheelTimerInterval = PropUtils.intFromProperties(props, prefix + MouseWheelTimerIntervalProperty, mouseWheelTimerInterval); + + mouseWheelScrollLikeOSM = PropUtils.booleanFromProperties(props, prefix + + MouseWheelScrollLikeOSMProperty, mouseWheelScrollLikeOSM); } public Properties getProperties(Properties props) { @@ -766,6 +781,8 @@ public Properties getPropertyInfo(Properties props) { "Setting for the wait interval for the mouse wheel timer", null); + PropUtils.setI18NPropertyInfo(i18n, props, thisClass, MouseWheelScrollLikeOSMProperty, "Mouse Wheel Zoom like OSM", "Setting for using OSM like zoom", "com.bbn.openmap.util.propertyEditor.YesNoPropertyEditor"); + StringBuffer cOptions = new StringBuffer(); Field[] cFields = Cursor.class.getFields(); for (int i = 0; i < cFields.length; i++) { @@ -876,4 +893,35 @@ public boolean isNoMouseWheelListenerTimer() { public void setNoMouseWheelListenerTimer(boolean noMouseWheelListenerTimer) { this.noMouseWheelListenerTimer = noMouseWheelListenerTimer; } + + /** + * Zoom like G maps and OSM keeping the mouse x,y -> lat,lon constant between + * scale changes instead of just zooming with the center fixed. Avoids having + * to constantly manually recenter the map before/after zooming. + */ + protected void scrollWheelZoomLikeOSM(MouseWheelEvent e) { + if (mouseWheelListener && e.getSource() instanceof MapBean) { + boolean direction = isZoomWhenMouseWheelUp(); + float zoomIn = 1.1f; + float zoomOut = .9f; + float amount = zoomIn; + int rot = e.getWheelRotation(); + if ((direction && rot < 0) || (!direction && rot > 0)) { + amount = zoomOut; + } + // keep cursor x,y pointing to the same lat,lon after scale + // has been changed + MapBean mapBean = (MapBean) e.getSource(); + Proj proj = (Proj) mapBean.getProjection().makeClone(); + Point2D mouseLatLon = mapBean.getCoordinates(e); + proj.setScale(mapBean.getScale() * amount); + Point2D newXyCenter = proj.forward(proj.getCenter()); + Point2D newXy = proj.forward(mouseLatLon); + Point2D centerWithOffset = new Point2D.Double(newXyCenter.getX() + + (newXy.getX() - e.getX()), newXyCenter.getY() + (newXy.getY() - e.getY())); + proj.setCenter(proj.inverse(centerWithOffset)); + mapBean.setProjection(proj); + } + } + } \ No newline at end of file diff --git a/src/openmap/com/bbn/openmap/layer/vpf/VPFConfig.java b/src/openmap/com/bbn/openmap/layer/vpf/VPFConfig.java index c58ee139..c3f5de44 100644 --- a/src/openmap/com/bbn/openmap/layer/vpf/VPFConfig.java +++ b/src/openmap/com/bbn/openmap/layer/vpf/VPFConfig.java @@ -374,7 +374,7 @@ public void valueChanged(TreeSelectionEvent e) { @SuppressWarnings("unchecked") protected void loadCurrentFeatures(DefaultMutableTreeNode top, String featureName, LayerGraphicWarehouseSupport warehouse) { - Enumeration treeEnum = top.children(); + Enumeration treeEnum = top.children(); while (treeEnum.hasMoreElements()) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) treeEnum.nextElement(); Object obj = node.getUserObject(); diff --git a/src/openmap/com/bbn/openmap/util/BrowserLauncher2WebBrowser.java b/src/openmap/com/bbn/openmap/util/BrowserLauncher2WebBrowser.java index dcf63398..97a1d316 100644 --- a/src/openmap/com/bbn/openmap/util/BrowserLauncher2WebBrowser.java +++ b/src/openmap/com/bbn/openmap/util/BrowserLauncher2WebBrowser.java @@ -22,9 +22,16 @@ package com.bbn.openmap.util; -import edu.stanford.ejalbert.BrowserLauncher; -import edu.stanford.ejalbert.exception.BrowserLaunchingInitializingException; -import edu.stanford.ejalbert.exception.UnsupportedOperatingSystemException; +import static java.util.logging.Level.*; + +import java.awt.Desktop; +import java.net.URI; +import java.util.logging.Level; +import java.util.logging.Logger; + +//import edu.stanford.ejalbert.BrowserLauncher; +//import edu.stanford.ejalbert.exception.BrowserLaunchingInitializingException; +//import edu.stanford.ejalbert.exception.UnsupportedOperatingSystemException; /** * A WebBrowser implementation that uses BrowserLauncher2. Requires the @@ -35,22 +42,24 @@ */ public class BrowserLauncher2WebBrowser extends WebBrowser { - BrowserLauncher browserLauncher; + private static Logger log = Logger.getLogger(BrowserLauncher2WebBrowser.class.getName()); + + // BrowserLauncher browserLauncher; /** * Create a web browser that delegates launching to BrowserLauncher2. * */ public BrowserLauncher2WebBrowser() { - try { - browserLauncher = new BrowserLauncher(); - } catch (BrowserLaunchingInitializingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (UnsupportedOperatingSystemException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + // try { + // browserLauncher = new BrowserLauncher(); + // } catch (BrowserLaunchingInitializingException e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } catch (UnsupportedOperatingSystemException e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } } /** @@ -60,8 +69,16 @@ public BrowserLauncher2WebBrowser() { * @param urlString URL * */ + // public void launch(String urlString) { + // browserLauncher.openURLinBrowser(urlString); + // } + public void launch(String urlString) { - browserLauncher.openURLinBrowser(urlString); + try { + Desktop.getDesktop().browse(new URI(urlString)); + } catch (Exception e) { + log.log(SEVERE, "Could not open url " + urlString, e); + } } } \ No newline at end of file From de33aca62bc0d8bd56dca0ff99dfd6a5b26dc7b2 Mon Sep 17 00:00:00 2001 From: Carsten Madsen Date: Mon, 28 Nov 2022 15:15:21 +0100 Subject: [PATCH 7/7] Include gif's etc --- .gitignore | 3 +++ pom.xml | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/.gitignore b/.gitignore index c146cf56..c87e841b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ */target/** +/classes/ +/target/ +/.classpath diff --git a/pom.xml b/pom.xml index f32095ff..0a310995 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,21 @@ provided + + + + + + ./src/openmap/ + + **/*.png + **/*.gif + **/*.jpg + + + + org.apache.maven.plugins