[jmapviewer] 03/13: Imported Upstream version 1.04+dfsg
Bas Couwenberg
sebastic at xs4all.nl
Fri Dec 12 21:35:27 UTC 2014
This is an automated email from the git hooks/post-receive script.
sebastic-guest pushed a commit to branch master
in repository jmapviewer.
commit efa0a85ef3da7309ad13e2500522dcaef8045bad
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Fri Dec 12 21:58:27 2014 +0100
Imported Upstream version 1.04+dfsg
---
build.xml | 2 +-
.../gui/jmapviewer/AbstractLayer.java | 2 +-
.../gui/jmapviewer/AttributionSupport.java | 326 ++++++++++-----------
.../openstreetmap/gui/jmapviewer/Coordinate.java | 23 ++
.../gui/jmapviewer/DefaultMapController.java | 22 +-
src/org/openstreetmap/gui/jmapviewer/Demo.java | 9 +-
.../gui/jmapviewer/FeatureAdapter.java | 126 ++++----
.../openstreetmap/gui/jmapviewer/JMapViewer.java | 23 +-
.../gui/jmapviewer/JobDispatcher.java | 2 +-
.../gui/jmapviewer/MapPolygonImpl.java | 210 ++++++-------
.../gui/jmapviewer/MapRectangleImpl.java | 156 +++++-----
.../gui/jmapviewer/MemoryTileCache.java | 2 +-
.../gui/jmapviewer/OsmFileCacheTileLoader.java | 41 +--
.../gui/jmapviewer/OsmTileLoader.java | 2 +-
src/org/openstreetmap/gui/jmapviewer/Tile.java | 2 +-
.../gui/jmapviewer/events/JMVCommandEvent.java | 96 +++---
.../openstreetmap/gui/jmapviewer/images/error.png | Bin 5668 -> 3217 bytes
.../gui/jmapviewer/images/hourglass.png | Bin 9096 -> 5918 bytes
.../openstreetmap/gui/jmapviewer/images/minus.png | Bin 171 -> 88 bytes
.../openstreetmap/gui/jmapviewer/images/plus.png | Bin 225 -> 133 bytes
.../gui/jmapviewer/interfaces/Attributed.java | 100 +++----
.../interfaces/JMapViewerEventListener.java | 34 +--
.../gui/jmapviewer/interfaces/MapPolygon.java | 76 ++---
.../jmapviewer/tilesources/AbstractTileSource.java | 154 +++++-----
.../tilesources/BingAerialTileSource.java | 26 +-
.../gui/jmapviewer/tilesources/OsmTileSource.java | 2 +-
.../jmapviewer/tilesources/ScanexTileSource.java | 2 +-
.../tilesources/TemplatedTMSTileSource.java | 2 +-
28 files changed, 720 insertions(+), 720 deletions(-)
diff --git a/build.xml b/build.xml
index a164e74..471058d 100644
--- a/build.xml
+++ b/build.xml
@@ -14,7 +14,7 @@
</target>
<target name="build">
- <javac srcdir="src" destdir="bin" source="1.6" target="1.6" debug="true" includeantruntime="false" encoding="UTF-8">
+ <javac srcdir="src" destdir="bin" source="1.7" target="1.7" debug="true" includeantruntime="false" encoding="UTF-8">
<include name="org/openstreetmap/gui/jmapviewer/**" />
</javac>
diff --git a/src/org/openstreetmap/gui/jmapviewer/AbstractLayer.java b/src/org/openstreetmap/gui/jmapviewer/AbstractLayer.java
index 1691032..e288087 100644
--- a/src/org/openstreetmap/gui/jmapviewer/AbstractLayer.java
+++ b/src/org/openstreetmap/gui/jmapviewer/AbstractLayer.java
@@ -71,7 +71,7 @@ public class AbstractLayer {
}
public static <E> List<E> add(List<E> list, E element) {
if(element!=null){
- if(list==null) list = new ArrayList<E>();
+ if(list==null) list = new ArrayList<>();
if(!list.contains(element)) list.add(element);
}
return list;
diff --git a/src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java b/src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java
index 261632e..cd53044 100644
--- a/src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java
+++ b/src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java
@@ -1,163 +1,163 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer;
-
-import static org.openstreetmap.gui.jmapviewer.FeatureAdapter.tr;
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.font.TextAttribute;
-import java.awt.geom.Rectangle2D;
-import java.awt.image.ImageObserver;
-import java.util.HashMap;
-
-import org.openstreetmap.gui.jmapviewer.interfaces.Attributed;
-
-public class AttributionSupport {
-
- private Attributed source;
-
- private Image attrImage;
- private String attrTermsText;
- private String attrTermsUrl;
- public static final Font ATTR_FONT = new Font("Arial", Font.PLAIN, 10);
- public static final Font ATTR_LINK_FONT;
-
- protected Rectangle attrTextBounds = null;
- protected Rectangle attrToUBounds = null;
- protected Rectangle attrImageBounds = null;
-
- static {
- HashMap<TextAttribute, Integer> aUnderline = new HashMap<TextAttribute, Integer>();
- aUnderline.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
- ATTR_LINK_FONT = ATTR_FONT.deriveFont(aUnderline);
- }
-
- public void initialize(Attributed source) {
- this.source = source;
- boolean requireAttr = source.requiresAttribution();
- if (requireAttr) {
- attrImage = source.getAttributionImage();
- attrTermsText = source.getTermsOfUseText();
- attrTermsUrl = source.getTermsOfUseURL();
- if (attrTermsUrl != null && attrTermsText == null) {
- attrTermsText = tr("Background Terms of Use");
- }
- } else {
- attrImage = null;
- attrTermsUrl = null;
- }
- }
-
- public void paintAttribution(Graphics g, int width, int height, Coordinate topLeft, Coordinate bottomRight, int zoom, ImageObserver observer) {
- if (source == null || !source.requiresAttribution()) {
- attrToUBounds = null;
- attrImageBounds = null;
- attrTextBounds = null;
- return;
- }
-
- // Draw attribution
- Font font = g.getFont();
- g.setFont(ATTR_LINK_FONT);
-
- // Draw terms of use text
- int termsTextHeight = 0;
- int termsTextY = height;
-
- if (attrTermsText != null) {
- Rectangle2D termsStringBounds = g.getFontMetrics().getStringBounds(attrTermsText, g);
- int textRealHeight = (int) termsStringBounds.getHeight();
- termsTextHeight = textRealHeight - 5;
- int termsTextWidth = (int) termsStringBounds.getWidth();
- termsTextY = height - termsTextHeight;
- int x = 2;
- int y = height - termsTextHeight;
- attrToUBounds = new Rectangle(x, y-termsTextHeight, termsTextWidth, textRealHeight);
- g.setColor(Color.black);
- g.drawString(attrTermsText, x + 1, y + 1);
- g.setColor(Color.white);
- g.drawString(attrTermsText, x, y);
- } else {
- attrToUBounds = null;
- }
-
- // Draw attribution logo
- if (attrImage != null) {
- int x = 2;
- int imgWidth = attrImage.getWidth(observer);
- int imgHeight = attrImage.getHeight(observer);
- int y = termsTextY - imgHeight - termsTextHeight - 5;
- attrImageBounds = new Rectangle(x, y, imgWidth, imgHeight);
- g.drawImage(attrImage, x, y, null);
- } else {
- attrImageBounds = null;
- }
-
- g.setFont(ATTR_FONT);
- String attributionText = source.getAttributionText(zoom, topLeft, bottomRight);
- if (attributionText != null) {
- Rectangle2D stringBounds = g.getFontMetrics().getStringBounds(attributionText, g);
- int textHeight = (int) stringBounds.getHeight() - 5;
- int x = width - (int) stringBounds.getWidth();
- int y = height - textHeight;
- g.setColor(Color.black);
- g.drawString(attributionText, x + 1, y + 1);
- g.setColor(Color.white);
- g.drawString(attributionText, x, y);
- attrTextBounds = new Rectangle(x, y-textHeight, (int) stringBounds.getWidth(), (int) stringBounds.getHeight());
- } else {
- attrTextBounds = null;
- }
-
- g.setFont(font);
- }
-
- public boolean handleAttributionCursor(Point p) {
- if (attrTextBounds != null && attrTextBounds.contains(p)) {
- return true;
- } else if (attrImageBounds != null && attrImageBounds.contains(p)) {
- return true;
- } else if (attrToUBounds != null && attrToUBounds.contains(p)) {
- return true;
- }
- return false;
- }
-
- public boolean handleAttribution(Point p, boolean click) {
- if (source == null || !source.requiresAttribution())
- return false;
-
- if (attrTextBounds != null && attrTextBounds.contains(p)) {
- String attributionURL = source.getAttributionLinkURL();
- if (attributionURL != null) {
- if (click) {
- FeatureAdapter.openLink(attributionURL);
- }
- return true;
- }
- } else if (attrImageBounds != null && attrImageBounds.contains(p)) {
- String attributionImageURL = source.getAttributionImageURL();
- if (attributionImageURL != null) {
- if (click) {
- FeatureAdapter.openLink(source.getAttributionImageURL());
- }
- return true;
- }
- } else if (attrToUBounds != null && attrToUBounds.contains(p)) {
- String termsOfUseURL = source.getTermsOfUseURL();
- if (termsOfUseURL != null) {
- if (click) {
- FeatureAdapter.openLink(termsOfUseURL);
- }
- return true;
- }
- }
- return false;
- }
-
-}
-
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer;
+
+import static org.openstreetmap.gui.jmapviewer.FeatureAdapter.tr;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.font.TextAttribute;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.ImageObserver;
+import java.util.HashMap;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.Attributed;
+
+public class AttributionSupport {
+
+ private Attributed source;
+
+ private Image attrImage;
+ private String attrTermsText;
+ private String attrTermsUrl;
+ public static final Font ATTR_FONT = new Font("Arial", Font.PLAIN, 10);
+ public static final Font ATTR_LINK_FONT;
+
+ protected Rectangle attrTextBounds = null;
+ protected Rectangle attrToUBounds = null;
+ protected Rectangle attrImageBounds = null;
+
+ static {
+ HashMap<TextAttribute, Integer> aUnderline = new HashMap<>();
+ aUnderline.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
+ ATTR_LINK_FONT = ATTR_FONT.deriveFont(aUnderline);
+ }
+
+ public void initialize(Attributed source) {
+ this.source = source;
+ boolean requireAttr = source.requiresAttribution();
+ if (requireAttr) {
+ attrImage = source.getAttributionImage();
+ attrTermsText = source.getTermsOfUseText();
+ attrTermsUrl = source.getTermsOfUseURL();
+ if (attrTermsUrl != null && attrTermsText == null) {
+ attrTermsText = tr("Background Terms of Use");
+ }
+ } else {
+ attrImage = null;
+ attrTermsUrl = null;
+ }
+ }
+
+ public void paintAttribution(Graphics g, int width, int height, Coordinate topLeft, Coordinate bottomRight, int zoom, ImageObserver observer) {
+ if (source == null || !source.requiresAttribution()) {
+ attrToUBounds = null;
+ attrImageBounds = null;
+ attrTextBounds = null;
+ return;
+ }
+
+ // Draw attribution
+ Font font = g.getFont();
+ g.setFont(ATTR_LINK_FONT);
+
+ // Draw terms of use text
+ int termsTextHeight = 0;
+ int termsTextY = height;
+
+ if (attrTermsText != null) {
+ Rectangle2D termsStringBounds = g.getFontMetrics().getStringBounds(attrTermsText, g);
+ int textRealHeight = (int) termsStringBounds.getHeight();
+ termsTextHeight = textRealHeight - 5;
+ int termsTextWidth = (int) termsStringBounds.getWidth();
+ termsTextY = height - termsTextHeight;
+ int x = 2;
+ int y = height - termsTextHeight;
+ attrToUBounds = new Rectangle(x, y-termsTextHeight, termsTextWidth, textRealHeight);
+ g.setColor(Color.black);
+ g.drawString(attrTermsText, x + 1, y + 1);
+ g.setColor(Color.white);
+ g.drawString(attrTermsText, x, y);
+ } else {
+ attrToUBounds = null;
+ }
+
+ // Draw attribution logo
+ if (attrImage != null) {
+ int x = 2;
+ int imgWidth = attrImage.getWidth(observer);
+ int imgHeight = attrImage.getHeight(observer);
+ int y = termsTextY - imgHeight - termsTextHeight - 5;
+ attrImageBounds = new Rectangle(x, y, imgWidth, imgHeight);
+ g.drawImage(attrImage, x, y, null);
+ } else {
+ attrImageBounds = null;
+ }
+
+ g.setFont(ATTR_FONT);
+ String attributionText = source.getAttributionText(zoom, topLeft, bottomRight);
+ if (attributionText != null) {
+ Rectangle2D stringBounds = g.getFontMetrics().getStringBounds(attributionText, g);
+ int textHeight = (int) stringBounds.getHeight() - 5;
+ int x = width - (int) stringBounds.getWidth();
+ int y = height - textHeight;
+ g.setColor(Color.black);
+ g.drawString(attributionText, x + 1, y + 1);
+ g.setColor(Color.white);
+ g.drawString(attributionText, x, y);
+ attrTextBounds = new Rectangle(x, y-textHeight, (int) stringBounds.getWidth(), (int) stringBounds.getHeight());
+ } else {
+ attrTextBounds = null;
+ }
+
+ g.setFont(font);
+ }
+
+ public boolean handleAttributionCursor(Point p) {
+ if (attrTextBounds != null && attrTextBounds.contains(p)) {
+ return true;
+ } else if (attrImageBounds != null && attrImageBounds.contains(p)) {
+ return true;
+ } else if (attrToUBounds != null && attrToUBounds.contains(p)) {
+ return true;
+ }
+ return false;
+ }
+
+ public boolean handleAttribution(Point p, boolean click) {
+ if (source == null || !source.requiresAttribution())
+ return false;
+
+ if (attrTextBounds != null && attrTextBounds.contains(p)) {
+ String attributionURL = source.getAttributionLinkURL();
+ if (attributionURL != null) {
+ if (click) {
+ FeatureAdapter.openLink(attributionURL);
+ }
+ return true;
+ }
+ } else if (attrImageBounds != null && attrImageBounds.contains(p)) {
+ String attributionImageURL = source.getAttributionImageURL();
+ if (attributionImageURL != null) {
+ if (click) {
+ FeatureAdapter.openLink(source.getAttributionImageURL());
+ }
+ return true;
+ }
+ } else if (attrToUBounds != null && attrToUBounds.contains(p)) {
+ String termsOfUseURL = source.getTermsOfUseURL();
+ if (termsOfUseURL != null) {
+ if (click) {
+ FeatureAdapter.openLink(termsOfUseURL);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
+
diff --git a/src/org/openstreetmap/gui/jmapviewer/Coordinate.java b/src/org/openstreetmap/gui/jmapviewer/Coordinate.java
index d3803ce..25a482d 100644
--- a/src/org/openstreetmap/gui/jmapviewer/Coordinate.java
+++ b/src/org/openstreetmap/gui/jmapviewer/Coordinate.java
@@ -6,6 +6,7 @@ import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+import java.util.Objects;
import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
@@ -53,4 +54,26 @@ public class Coordinate implements Serializable, ICoordinate {
public String toString() {
return "Coordinate[" + data.y + ", " + data.x + "]";
}
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+ hash = 61 * hash + Objects.hashCode(this.data);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Coordinate other = (Coordinate) obj;
+ if (!Objects.equals(this.data, other.data)) {
+ return false;
+ }
+ return true;
+ }
}
diff --git a/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java b/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
index 93e04be..e254c42 100644
--- a/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
+++ b/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
@@ -39,14 +39,10 @@ MouseWheelListener {
private boolean doubleClickZoomEnabled = true;
public void mouseDragged(MouseEvent e) {
- debugMouseEvent("DefaultMapController.mouseDragged", e);
if (!movementEnabled || !isMoving)
return;
// Is only the selected mouse button pressed?
if ((e.getModifiersEx() & MOUSE_BUTTONS_MASK) == movementMouseButtonMask || isPlatformOsx() && e.getModifiersEx() == MAC_MOUSE_BUTTON3_MASK) {
- if (JMapViewer.debug) {
- System.err.println("(#9897) moving");
- }
Point p = e.getPoint();
if (lastDragPoint != null) {
int diffx = lastDragPoint.x - p.x;
@@ -58,41 +54,25 @@ MouseWheelListener {
}
public void mouseClicked(MouseEvent e) {
- debugMouseEvent("DefaultMapController.mouseClicked", e);
if (doubleClickZoomEnabled && e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
map.zoomIn(e.getPoint());
}
}
public void mousePressed(MouseEvent e) {
- debugMouseEvent("DefaultMapController.mousePressed", e);
-
if (e.getButton() == movementMouseButton || isPlatformOsx() && e.getModifiersEx() == MAC_MOUSE_BUTTON3_MASK) {
- if (JMapViewer.debug) {
- System.err.println("(#9897) move start");
- }
lastDragPoint = null;
isMoving = true;
}
}
-
+
public void mouseReleased(MouseEvent e) {
- debugMouseEvent("DefaultMapController.mouseReleased", e);
if (e.getButton() == movementMouseButton || isPlatformOsx() && e.getButton() == MouseEvent.BUTTON1) {
- if (JMapViewer.debug) {
- System.err.println("(#9897) move stop");
- }
lastDragPoint = null;
isMoving = false;
}
}
- public void debugMouseEvent(String s, MouseEvent e) {
- if (JMapViewer.debug) {
- System.err.println("(#9897) " + s + ": Button "+ e.getButton() + " Modifiers: " +Integer.toBinaryString(e.getModifiersEx()));
- }
- }
-
public void mouseWheelMoved(MouseWheelEvent e) {
if (wheelZoomEnabled) {
map.setZoom(map.getZoom() - e.getWheelRotation(), e.getPoint());
diff --git a/src/org/openstreetmap/gui/jmapviewer/Demo.java b/src/org/openstreetmap/gui/jmapviewer/Demo.java
index b8ff7bb..d6ae3e8 100644
--- a/src/org/openstreetmap/gui/jmapviewer/Demo.java
+++ b/src/org/openstreetmap/gui/jmapviewer/Demo.java
@@ -93,19 +93,18 @@ public class Demo extends JFrame implements JMapViewerEventListener {
map().setDisplayToFitMapMarkers();
}
});
- JComboBox tileSourceSelector = new JComboBox(new TileSource[] { new OsmTileSource.Mapnik(),
+ JComboBox<TileSource> tileSourceSelector = new JComboBox<>(new TileSource[] { new OsmTileSource.Mapnik(),
new OsmTileSource.CycleMap(), new BingAerialTileSource(), new MapQuestOsmTileSource(), new MapQuestOpenAerialTileSource() });
tileSourceSelector.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
map().setTileSource((TileSource) e.getItem());
}
});
- JComboBox tileLoaderSelector;
+ JComboBox<TileLoader> tileLoaderSelector;
try {
- tileLoaderSelector = new JComboBox(new TileLoader[] { new OsmFileCacheTileLoader(map()),
- new OsmTileLoader(map()) });
+ tileLoaderSelector = new JComboBox<>(new TileLoader[] { new OsmFileCacheTileLoader(map()), new OsmTileLoader(map()) });
} catch (IOException e) {
- tileLoaderSelector = new JComboBox(new TileLoader[] { new OsmTileLoader(map()) });
+ tileLoaderSelector = new JComboBox<>(new TileLoader[] { new OsmTileLoader(map()) });
}
tileLoaderSelector.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
diff --git a/src/org/openstreetmap/gui/jmapviewer/FeatureAdapter.java b/src/org/openstreetmap/gui/jmapviewer/FeatureAdapter.java
index b1e3fb4..24245f9 100644
--- a/src/org/openstreetmap/gui/jmapviewer/FeatureAdapter.java
+++ b/src/org/openstreetmap/gui/jmapviewer/FeatureAdapter.java
@@ -1,63 +1,63 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer;
-
-import java.awt.Desktop;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.text.MessageFormat;
-
-public class FeatureAdapter {
-
- public static interface BrowserAdapter {
- void openLink(String url);
- }
-
- public static interface TranslationAdapter {
- String tr(String text, Object... objects);
- // TODO: more i18n functions
- }
-
- private static BrowserAdapter browserAdapter = new DefaultBrowserAdapter();
- private static TranslationAdapter translationAdapter = new DefaultTranslationAdapter();
-
- public static void registerBrowserAdapter(BrowserAdapter browserAdapter) {
- FeatureAdapter.browserAdapter = browserAdapter;
- }
-
- public static void registerTranslationAdapter(TranslationAdapter translationAdapter) {
- FeatureAdapter.translationAdapter = translationAdapter;
- }
-
- public static void openLink(String url) {
- browserAdapter.openLink(url);
- }
-
- public static String tr(String text, Object... objects) {
- return translationAdapter.tr(text, objects);
- }
-
- public static class DefaultBrowserAdapter implements BrowserAdapter {
- @Override
- public void openLink(String url) {
- if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
- try {
- Desktop.getDesktop().browse(new URI(url));
- } catch (IOException e) {
- e.printStackTrace();
- } catch (URISyntaxException e) {
- e.printStackTrace();
- }
- } else {
- System.err.println(tr("Opening link not supported on current platform (''{0}'')", url));
- }
- }
- }
-
- public static class DefaultTranslationAdapter implements TranslationAdapter {
- @Override
- public String tr(String text, Object... objects) {
- return MessageFormat.format(text, objects);
- }
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer;
+
+import java.awt.Desktop;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.text.MessageFormat;
+
+public class FeatureAdapter {
+
+ public static interface BrowserAdapter {
+ void openLink(String url);
+ }
+
+ public static interface TranslationAdapter {
+ String tr(String text, Object... objects);
+ // TODO: more i18n functions
+ }
+
+ private static BrowserAdapter browserAdapter = new DefaultBrowserAdapter();
+ private static TranslationAdapter translationAdapter = new DefaultTranslationAdapter();
+
+ public static void registerBrowserAdapter(BrowserAdapter browserAdapter) {
+ FeatureAdapter.browserAdapter = browserAdapter;
+ }
+
+ public static void registerTranslationAdapter(TranslationAdapter translationAdapter) {
+ FeatureAdapter.translationAdapter = translationAdapter;
+ }
+
+ public static void openLink(String url) {
+ browserAdapter.openLink(url);
+ }
+
+ public static String tr(String text, Object... objects) {
+ return translationAdapter.tr(text, objects);
+ }
+
+ public static class DefaultBrowserAdapter implements BrowserAdapter {
+ @Override
+ public void openLink(String url) {
+ if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
+ try {
+ Desktop.getDesktop().browse(new URI(url));
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ }
+ } else {
+ System.err.println(tr("Opening link not supported on current platform (''{0}'')", url));
+ }
+ }
+ }
+
+ public static class DefaultTranslationAdapter implements TranslationAdapter {
+ @Override
+ public String tr(String text, Object... objects) {
+ return MessageFormat.format(text, objects);
+ }
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java b/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
index 52610f3..f1ddc06 100644
--- a/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
+++ b/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
@@ -42,8 +42,6 @@ import org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource;
*/
public class JMapViewer extends JPanel implements TileLoaderListener {
- private static final long serialVersionUID = 1L;
-
public static boolean debug = false;
/**
@@ -99,6 +97,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
* {@link MemoryTileCache} and the tile loader uses 4 parallel threads for
* retrieving the tiles.
*/
+ @SuppressWarnings("unused")
public JMapViewer() {
this(new MemoryTileCache(), 8);
new DefaultMapController(this);
@@ -109,9 +108,9 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
JobDispatcher.setMaxWorkers(downloadThreadCount);
tileSource = new OsmTileSource.Mapnik();
tileController = new TileController(tileSource, tileCache, this);
- mapMarkerList = new LinkedList<MapMarker>();
- mapPolygonList = new LinkedList<MapPolygon>();
- mapRectangleList = new LinkedList<MapRectangle>();
+ mapMarkerList = new LinkedList<>();
+ mapPolygonList = new LinkedList<>();
+ mapRectangleList = new LinkedList<>();
mapMarkersVisible = true;
mapRectanglesVisible = true;
mapPolygonsVisible = true;
@@ -711,7 +710,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
protected void paintPolygon(Graphics g, MapPolygon polygon) {
List<? extends ICoordinate> coords = polygon.getPoints();
if (coords != null && coords.size() >= 3) {
- List<Point> points = new LinkedList<Point>();
+ List<Point> points = new LinkedList<>();
for (ICoordinate c : coords) {
Point p = getMapPosition(c, false);
if (p == null) {
@@ -723,7 +722,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
if (scrollWrapEnabled) {
int tilesize = tileSource.getTileSize();
int mapSize = tilesize << zoom;
- List<Point> pointsWrapped = new LinkedList<Point>(points);
+ List<Point> pointsWrapped = new LinkedList<>(points);
boolean keepWrapping = true;
while (keepWrapping) {
for (Point p : pointsWrapped) {
@@ -734,7 +733,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
}
polygon.paint(g, pointsWrapped);
}
- pointsWrapped = new LinkedList<Point>(points);
+ pointsWrapped = new LinkedList<>(points);
keepWrapping = true;
while (keepWrapping) {
for (Point p : pointsWrapped) {
@@ -1065,20 +1064,20 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
return attribution;
}
- protected EventListenerList listenerList = new EventListenerList();
+ protected EventListenerList evtListenerList = new EventListenerList();
/**
* @param listener listener to set
*/
public void addJMVListener(JMapViewerEventListener listener) {
- listenerList.add(JMapViewerEventListener.class, listener);
+ evtListenerList.add(JMapViewerEventListener.class, listener);
}
/**
* @param listener listener to remove
*/
public void removeJMVListener(JMapViewerEventListener listener) {
- listenerList.remove(JMapViewerEventListener.class, listener);
+ evtListenerList.remove(JMapViewerEventListener.class, listener);
}
/**
@@ -1087,7 +1086,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
* @param evt event to dispatch
*/
void fireJMVEvent(JMVCommandEvent evt) {
- Object[] listeners = listenerList.getListenerList();
+ Object[] listeners = evtListenerList.getListenerList();
for (int i=0; i<listeners.length; i+=2) {
if (listeners[i]==JMapViewerEventListener.class) {
((JMapViewerEventListener)listeners[i+1]).processCommand(evt);
diff --git a/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java b/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java
index 1cc4754..dfd6103 100644
--- a/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java
+++ b/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java
@@ -31,7 +31,7 @@ public class JobDispatcher {
addWorkerThread().firstThread = true;
}
- protected BlockingDeque<TileJob> jobQueue = new LinkedBlockingDeque<TileJob>();
+ protected BlockingDeque<TileJob> jobQueue = new LinkedBlockingDeque<>();
protected static int workerThreadMaxCount = 8;
diff --git a/src/org/openstreetmap/gui/jmapviewer/MapPolygonImpl.java b/src/org/openstreetmap/gui/jmapviewer/MapPolygonImpl.java
index daf201b..521935b 100644
--- a/src/org/openstreetmap/gui/jmapviewer/MapPolygonImpl.java
+++ b/src/org/openstreetmap/gui/jmapviewer/MapPolygonImpl.java
@@ -1,105 +1,105 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer;
-
-import java.awt.AlphaComposite;
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Composite;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Polygon;
-import java.awt.Rectangle;
-import java.awt.Stroke;
-import java.util.Arrays;
-import java.util.List;
-
-import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
-import org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon;
-
-public class MapPolygonImpl extends MapObjectImpl implements MapPolygon {
-
- private List<? extends ICoordinate> points;
-
- public MapPolygonImpl(ICoordinate ... points) {
- this(null, null, points);
- }
- public MapPolygonImpl(List<? extends ICoordinate> points) {
- this(null, null, points);
- }
- public MapPolygonImpl(String name, List<? extends ICoordinate> points) {
- this(null, name, points);
- }
- public MapPolygonImpl(String name, ICoordinate ... points) {
- this(null, name, points);
- }
- public MapPolygonImpl(Layer layer, List<? extends ICoordinate> points) {
- this(layer, null, points);
- }
- public MapPolygonImpl(Layer layer, String name, List<? extends ICoordinate> points) {
- this(layer, name, points, getDefaultStyle());
- }
- public MapPolygonImpl(Layer layer, String name, ICoordinate ... points) {
- this(layer, name, Arrays.asList(points), getDefaultStyle());
- }
- public MapPolygonImpl(Layer layer, String name, List<? extends ICoordinate> points, Style style) {
- super(layer, name, style);
- this.points = points;
- }
-
- @Override
- public List<? extends ICoordinate> getPoints() {
- return this.points;
- }
-
- @Override
- public void paint(Graphics g, List<Point> points) {
- Polygon polygon = new Polygon();
- for (Point p : points) {
- polygon.addPoint(p.x, p.y);
- }
- paint(g, polygon);
- }
-
- @Override
- public void paint(Graphics g, Polygon polygon) {
- // Prepare graphics
- Color oldColor = g.getColor();
- g.setColor(getColor());
-
- Stroke oldStroke = null;
- if (g instanceof Graphics2D) {
- Graphics2D g2 = (Graphics2D) g;
- oldStroke = g2.getStroke();
- g2.setStroke(getStroke());
- }
- // Draw
- g.drawPolygon(polygon);
- if (g instanceof Graphics2D && getBackColor()!=null) {
- Graphics2D g2 = (Graphics2D) g;
- Composite oldComposite = g2.getComposite();
- g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
- g2.setPaint(getBackColor());
- g2.fillPolygon(polygon);
- g2.setComposite(oldComposite);
- }
- // Restore graphics
- g.setColor(oldColor);
- if (g instanceof Graphics2D) {
- ((Graphics2D) g).setStroke(oldStroke);
- }
- Rectangle rec = polygon.getBounds();
- Point corner = rec.getLocation();
- Point p= new Point(corner.x+(rec.width/2), corner.y+(rec.height/2));
- if(getLayer()==null||getLayer().isVisibleTexts()) paintText(g, p);
- }
-
- public static Style getDefaultStyle(){
- return new Style(Color.BLUE, new Color(100,100,100,50), new BasicStroke(2), getDefaultFont());
- }
-
- @Override
- public String toString() {
- return "MapPolygon [points=" + points + "]";
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer;
+
+import java.awt.AlphaComposite;
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Composite;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Polygon;
+import java.awt.Rectangle;
+import java.awt.Stroke;
+import java.util.Arrays;
+import java.util.List;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
+import org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon;
+
+public class MapPolygonImpl extends MapObjectImpl implements MapPolygon {
+
+ private List<? extends ICoordinate> points;
+
+ public MapPolygonImpl(ICoordinate ... points) {
+ this(null, null, points);
+ }
+ public MapPolygonImpl(List<? extends ICoordinate> points) {
+ this(null, null, points);
+ }
+ public MapPolygonImpl(String name, List<? extends ICoordinate> points) {
+ this(null, name, points);
+ }
+ public MapPolygonImpl(String name, ICoordinate ... points) {
+ this(null, name, points);
+ }
+ public MapPolygonImpl(Layer layer, List<? extends ICoordinate> points) {
+ this(layer, null, points);
+ }
+ public MapPolygonImpl(Layer layer, String name, List<? extends ICoordinate> points) {
+ this(layer, name, points, getDefaultStyle());
+ }
+ public MapPolygonImpl(Layer layer, String name, ICoordinate ... points) {
+ this(layer, name, Arrays.asList(points), getDefaultStyle());
+ }
+ public MapPolygonImpl(Layer layer, String name, List<? extends ICoordinate> points, Style style) {
+ super(layer, name, style);
+ this.points = points;
+ }
+
+ @Override
+ public List<? extends ICoordinate> getPoints() {
+ return this.points;
+ }
+
+ @Override
+ public void paint(Graphics g, List<Point> points) {
+ Polygon polygon = new Polygon();
+ for (Point p : points) {
+ polygon.addPoint(p.x, p.y);
+ }
+ paint(g, polygon);
+ }
+
+ @Override
+ public void paint(Graphics g, Polygon polygon) {
+ // Prepare graphics
+ Color oldColor = g.getColor();
+ g.setColor(getColor());
+
+ Stroke oldStroke = null;
+ if (g instanceof Graphics2D) {
+ Graphics2D g2 = (Graphics2D) g;
+ oldStroke = g2.getStroke();
+ g2.setStroke(getStroke());
+ }
+ // Draw
+ g.drawPolygon(polygon);
+ if (g instanceof Graphics2D && getBackColor()!=null) {
+ Graphics2D g2 = (Graphics2D) g;
+ Composite oldComposite = g2.getComposite();
+ g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
+ g2.setPaint(getBackColor());
+ g2.fillPolygon(polygon);
+ g2.setComposite(oldComposite);
+ }
+ // Restore graphics
+ g.setColor(oldColor);
+ if (g instanceof Graphics2D) {
+ ((Graphics2D) g).setStroke(oldStroke);
+ }
+ Rectangle rec = polygon.getBounds();
+ Point corner = rec.getLocation();
+ Point p= new Point(corner.x+(rec.width/2), corner.y+(rec.height/2));
+ if(getLayer()==null||getLayer().isVisibleTexts()) paintText(g, p);
+ }
+
+ public static Style getDefaultStyle(){
+ return new Style(Color.BLUE, new Color(100,100,100,50), new BasicStroke(2), getDefaultFont());
+ }
+
+ @Override
+ public String toString() {
+ return "MapPolygon [points=" + points + "]";
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java b/src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java
index 51c8b33..4d09ede 100644
--- a/src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java
+++ b/src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java
@@ -1,78 +1,78 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer;
-
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Stroke;
-
-import org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle;
-
-public class MapRectangleImpl extends MapObjectImpl implements MapRectangle {
-
- private Coordinate topLeft;
- private Coordinate bottomRight;
-
- public MapRectangleImpl(Coordinate topLeft, Coordinate bottomRight) {
- this(null, null, topLeft, bottomRight);
- }
- public MapRectangleImpl(String name, Coordinate topLeft, Coordinate bottomRight) {
- this(null, name, topLeft, bottomRight);
- }
- public MapRectangleImpl(Layer layer, Coordinate topLeft, Coordinate bottomRight) {
- this(layer, null, topLeft, bottomRight);
- }
- public MapRectangleImpl(Layer layer, String name, Coordinate topLeft, Coordinate bottomRight) {
- this(layer, name, topLeft, bottomRight, getDefaultStyle());
- }
- public MapRectangleImpl(Layer layer, String name, Coordinate topLeft, Coordinate bottomRight, Style style) {
- super(layer, name, style);
- this.topLeft = topLeft;
- this.bottomRight = bottomRight;
- }
-
- @Override
- public Coordinate getTopLeft() {
- return topLeft;
- }
-
- @Override
- public Coordinate getBottomRight() {
- return bottomRight;
- }
-
- @Override
- public void paint(Graphics g, Point topLeft, Point bottomRight) {
- // Prepare graphics
- Color oldColor = g.getColor();
- g.setColor(getColor());
- Stroke oldStroke = null;
- if (g instanceof Graphics2D) {
- Graphics2D g2 = (Graphics2D) g;
- oldStroke = g2.getStroke();
- g2.setStroke(getStroke());
- }
- // Draw
- g.drawRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
- // Restore graphics
- g.setColor(oldColor);
- if (g instanceof Graphics2D) {
- ((Graphics2D) g).setStroke(oldStroke);
- }
- int width=bottomRight.x-topLeft.x;
- int height=bottomRight.y-topLeft.y;
- Point p= new Point(topLeft.x+(width/2), topLeft.y+(height/2));
- if(getLayer()==null||getLayer().isVisibleTexts()) paintText(g, p);
- }
-
- public static Style getDefaultStyle(){
- return new Style(Color.BLUE, null, new BasicStroke(2), getDefaultFont());
- }
-
- @Override
- public String toString() {
- return "MapRectangle from " + getTopLeft() + " to " + getBottomRight();
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Stroke;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle;
+
+public class MapRectangleImpl extends MapObjectImpl implements MapRectangle {
+
+ private Coordinate topLeft;
+ private Coordinate bottomRight;
+
+ public MapRectangleImpl(Coordinate topLeft, Coordinate bottomRight) {
+ this(null, null, topLeft, bottomRight);
+ }
+ public MapRectangleImpl(String name, Coordinate topLeft, Coordinate bottomRight) {
+ this(null, name, topLeft, bottomRight);
+ }
+ public MapRectangleImpl(Layer layer, Coordinate topLeft, Coordinate bottomRight) {
+ this(layer, null, topLeft, bottomRight);
+ }
+ public MapRectangleImpl(Layer layer, String name, Coordinate topLeft, Coordinate bottomRight) {
+ this(layer, name, topLeft, bottomRight, getDefaultStyle());
+ }
+ public MapRectangleImpl(Layer layer, String name, Coordinate topLeft, Coordinate bottomRight, Style style) {
+ super(layer, name, style);
+ this.topLeft = topLeft;
+ this.bottomRight = bottomRight;
+ }
+
+ @Override
+ public Coordinate getTopLeft() {
+ return topLeft;
+ }
+
+ @Override
+ public Coordinate getBottomRight() {
+ return bottomRight;
+ }
+
+ @Override
+ public void paint(Graphics g, Point topLeft, Point bottomRight) {
+ // Prepare graphics
+ Color oldColor = g.getColor();
+ g.setColor(getColor());
+ Stroke oldStroke = null;
+ if (g instanceof Graphics2D) {
+ Graphics2D g2 = (Graphics2D) g;
+ oldStroke = g2.getStroke();
+ g2.setStroke(getStroke());
+ }
+ // Draw
+ g.drawRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
+ // Restore graphics
+ g.setColor(oldColor);
+ if (g instanceof Graphics2D) {
+ ((Graphics2D) g).setStroke(oldStroke);
+ }
+ int width=bottomRight.x-topLeft.x;
+ int height=bottomRight.y-topLeft.y;
+ Point p= new Point(topLeft.x+(width/2), topLeft.y+(height/2));
+ if(getLayer()==null||getLayer().isVisibleTexts()) paintText(g, p);
+ }
+
+ public static Style getDefaultStyle(){
+ return new Style(Color.BLUE, null, new BasicStroke(2), getDefaultFont());
+ }
+
+ @Override
+ public String toString() {
+ return "MapRectangle from " + getTopLeft() + " to " + getBottomRight();
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java b/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java
index 4fb527a..ccf61b2 100644
--- a/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java
+++ b/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java
@@ -32,7 +32,7 @@ public class MemoryTileCache implements TileCache {
protected final CacheLinkedListElement lruTiles;
public MemoryTileCache() {
- hash = new HashMap<String, CacheEntry>(cacheSize);
+ hash = new HashMap<>(cacheSize);
lruTiles = new CacheLinkedListElement();
}
diff --git a/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java b/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java
index f82a874..c88c207 100644
--- a/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java
+++ b/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java
@@ -99,7 +99,7 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
log.finest("Tile cache directory: " + cacheDir);
cacheDirBase = cacheDir.getAbsolutePath();
- sourceCacheDirMap = new HashMap<TileSource, File>();
+ sourceCacheDirMap = new HashMap<>();
}
/**
@@ -260,28 +260,23 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
}
protected boolean loadTileFromFile() {
- FileInputStream fin = null;
try {
tileFile = getTileFile();
if (!tileFile.exists())
return false;
loadTagsFromFile();
- if ("no-tile".equals(tile.getValue("tile-info")))
- {
+ if ("no-tile".equals(tile.getValue("tile-info"))) {
tile.setError("No tile at this zoom level");
if (tileFile.exists()) {
tileFile.delete();
}
tileFile = getTagsFile();
} else {
- fin = new FileInputStream(tileFile);
- try {
+ try (FileInputStream fin = new FileInputStream(tileFile)) {
if (fin.available() == 0)
throw new IOException("File empty");
tile.loadImage(fin);
- } finally {
- fin.close();
}
}
@@ -296,13 +291,7 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
listener.tileLoadingFinished(tile, true);
fileTilePainted = true;
} catch (Exception e) {
- try {
- if (fin != null) {
- fin.close();
- tileFile.delete();
- }
- } catch (Exception e1) {
- }
+ tileFile.delete();
tileFile = null;
fileAge = 0;
}
@@ -391,12 +380,11 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
}
protected void saveTileToFile(byte[] rawData) {
- try {
+ try (
FileOutputStream f = new FileOutputStream(tileCacheDir + "/" + tile.getZoom() + "_" + tile.getXtile()
- + "_" + tile.getYtile() + "." + tile.getSource().getTileType());
+ + "_" + tile.getYtile() + "." + tile.getSource().getTileType())
+ ) {
f.write(rawData);
- f.close();
- // System.out.println("Saved tile to file: " + tile);
} catch (Exception e) {
System.err.println("Failed to save tile content: " + e.getLocalizedMessage());
}
@@ -408,13 +396,10 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
tagsFile.delete();
return;
}
- try {
- final PrintWriter f = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tagsFile),
- TAGS_CHARSET));
+ try (PrintWriter f = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tagsFile), TAGS_CHARSET))) {
for (Entry<String, String> entry : tile.getMetadata().entrySet()) {
f.println(entry.getKey() + "=" + entry.getValue());
}
- f.close();
} catch (Exception e) {
System.err.println("Failed to save tile tags: " + e.getLocalizedMessage());
}
@@ -425,11 +410,9 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
File etagFile = new File(tileCacheDir, tile.getZoom() + "_"
+ tile.getXtile() + "_" + tile.getYtile() + ETAG_FILE_EXT);
if (!etagFile.exists()) return;
- try {
- FileInputStream f = new FileInputStream(etagFile);
+ try (FileInputStream f = new FileInputStream(etagFile)) {
byte[] buf = new byte[f.available()];
f.read(buf);
- f.close();
String etag = new String(buf, TAGS_CHARSET.name());
tile.putValue("etag", etag);
if (etagFile.delete()) {
@@ -443,9 +426,7 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
protected void loadTagsFromFile() {
loadOldETagfromFile();
File tagsFile = getTagsFile();
- try {
- final BufferedReader f = new BufferedReader(new InputStreamReader(new FileInputStream(tagsFile),
- TAGS_CHARSET));
+ try (BufferedReader f = new BufferedReader(new InputStreamReader(new FileInputStream(tagsFile), TAGS_CHARSET))) {
for (String line = f.readLine(); line != null; line = f.readLine()) {
final int i = line.indexOf('=');
if (i == -1 || i == 0) {
@@ -454,13 +435,11 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
}
tile.putValue(line.substring(0,i),line.substring(i+1));
}
- f.close();
} catch (FileNotFoundException e) {
} catch (Exception e) {
System.err.println("Failed to load tile tags: " + e.getLocalizedMessage());
}
}
-
}
public long getMaxFileAge() {
diff --git a/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java b/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java
index b84f83e..8bb0955 100644
--- a/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java
+++ b/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java
@@ -24,7 +24,7 @@ public class OsmTileLoader implements TileLoader {
/**
* Holds the HTTP headers. Insert e.g. User-Agent here when default should not be used.
*/
- public Map<String, String> headers = new HashMap<String, String>();
+ public Map<String, String> headers = new HashMap<>();
public int timeoutConnect = 0;
public int timeoutRead = 0;
diff --git a/src/org/openstreetmap/gui/jmapviewer/Tile.java b/src/org/openstreetmap/gui/jmapviewer/Tile.java
index 99b04d7..9e56e71 100644
--- a/src/org/openstreetmap/gui/jmapviewer/Tile.java
+++ b/src/org/openstreetmap/gui/jmapviewer/Tile.java
@@ -296,7 +296,7 @@ public class Tile {
return;
}
if (metadata == null) {
- metadata = new HashMap<String,String>();
+ metadata = new HashMap<>();
}
metadata.put(key, value);
}
diff --git a/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java b/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java
index a3c2c47..7ffc3ce 100644
--- a/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java
+++ b/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java
@@ -1,48 +1,48 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer.events;
-
-import java.util.EventObject;
-
-/**
- * Used for passing events between UI components and other
- * objects that register as a JMapViewerEventListener
- *
- * @author Jason Huntley
- *
- */
-public class JMVCommandEvent extends EventObject {
- public static enum COMMAND {
- MOVE,
- ZOOM
- }
-
- private COMMAND command;
- /**
- *
- */
- private static final long serialVersionUID = 8701544867914969620L;
-
- public JMVCommandEvent(COMMAND cmd, Object source) {
- super(source);
-
- setCommand(cmd);
- }
-
- public JMVCommandEvent(Object source) {
- super(source);
- }
-
- /**
- * @return the command
- */
- public COMMAND getCommand() {
- return command;
- }
-
- /**
- * @param command the command to set
- */
- public void setCommand(COMMAND command) {
- this.command = command;
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.events;
+
+import java.util.EventObject;
+
+/**
+ * Used for passing events between UI components and other
+ * objects that register as a JMapViewerEventListener
+ *
+ * @author Jason Huntley
+ *
+ */
+public class JMVCommandEvent extends EventObject {
+ public static enum COMMAND {
+ MOVE,
+ ZOOM
+ }
+
+ private COMMAND command;
+ /**
+ *
+ */
+ private static final long serialVersionUID = 8701544867914969620L;
+
+ public JMVCommandEvent(COMMAND cmd, Object source) {
+ super(source);
+
+ setCommand(cmd);
+ }
+
+ public JMVCommandEvent(Object source) {
+ super(source);
+ }
+
+ /**
+ * @return the command
+ */
+ public COMMAND getCommand() {
+ return command;
+ }
+
+ /**
+ * @param command the command to set
+ */
+ public void setCommand(COMMAND command) {
+ this.command = command;
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/images/error.png b/src/org/openstreetmap/gui/jmapviewer/images/error.png
index c6a4b4b..16d12d1 100644
Binary files a/src/org/openstreetmap/gui/jmapviewer/images/error.png and b/src/org/openstreetmap/gui/jmapviewer/images/error.png differ
diff --git a/src/org/openstreetmap/gui/jmapviewer/images/hourglass.png b/src/org/openstreetmap/gui/jmapviewer/images/hourglass.png
index 172ac96..e8bba2a 100644
Binary files a/src/org/openstreetmap/gui/jmapviewer/images/hourglass.png and b/src/org/openstreetmap/gui/jmapviewer/images/hourglass.png differ
diff --git a/src/org/openstreetmap/gui/jmapviewer/images/minus.png b/src/org/openstreetmap/gui/jmapviewer/images/minus.png
index 4093e64..429237a 100644
Binary files a/src/org/openstreetmap/gui/jmapviewer/images/minus.png and b/src/org/openstreetmap/gui/jmapviewer/images/minus.png differ
diff --git a/src/org/openstreetmap/gui/jmapviewer/images/plus.png b/src/org/openstreetmap/gui/jmapviewer/images/plus.png
index 6d7df3c..d74f858 100644
Binary files a/src/org/openstreetmap/gui/jmapviewer/images/plus.png and b/src/org/openstreetmap/gui/jmapviewer/images/plus.png differ
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/Attributed.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/Attributed.java
index 862ec81..24d25e6 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/Attributed.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/Attributed.java
@@ -1,50 +1,50 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer.interfaces;
-
-import java.awt.Image;
-
-import org.openstreetmap.gui.jmapviewer.Coordinate;
-
-public interface Attributed {
- /**
- * @return True if the tile source requires attribution in text or image form.
- */
- boolean requiresAttribution();
-
- /**
- * @param zoom The optional zoom level for the view.
- * @param botRight The bottom right of the bounding box for attribution.
- * @param topLeft The top left of the bounding box for attribution.
- * @return Attribution text for the image source.
- */
- String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight);
-
- /**
- * @return The URL to open when the user clicks the attribution text.
- */
- String getAttributionLinkURL();
-
- /**
- * @return The URL for the attribution image. Null if no image should be displayed.
- */
- Image getAttributionImage();
-
- /**
- * @return The URL to open when the user clicks the attribution image.
- * When return value is null, the image is still displayed (provided getAttributionImage()
- * returns a value other than null), but the image does not link to a website.
- */
- String getAttributionImageURL();
-
- /**
- * @return The attribution "Terms of Use" text.
- * In case it returns null, but getTermsOfUseURL() is not null, a default
- * terms of use text is used.
- */
- String getTermsOfUseText();
-
- /**
- * @return The URL to open when the user clicks the attribution "Terms of Use" text.
- */
- String getTermsOfUseURL();
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.interfaces;
+
+import java.awt.Image;
+
+import org.openstreetmap.gui.jmapviewer.Coordinate;
+
+public interface Attributed {
+ /**
+ * @return True if the tile source requires attribution in text or image form.
+ */
+ boolean requiresAttribution();
+
+ /**
+ * @param zoom The optional zoom level for the view.
+ * @param botRight The bottom right of the bounding box for attribution.
+ * @param topLeft The top left of the bounding box for attribution.
+ * @return Attribution text for the image source.
+ */
+ String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight);
+
+ /**
+ * @return The URL to open when the user clicks the attribution text.
+ */
+ String getAttributionLinkURL();
+
+ /**
+ * @return The URL for the attribution image. Null if no image should be displayed.
+ */
+ Image getAttributionImage();
+
+ /**
+ * @return The URL to open when the user clicks the attribution image.
+ * When return value is null, the image is still displayed (provided getAttributionImage()
+ * returns a value other than null), but the image does not link to a website.
+ */
+ String getAttributionImageURL();
+
+ /**
+ * @return The attribution "Terms of Use" text.
+ * In case it returns null, but getTermsOfUseURL() is not null, a default
+ * terms of use text is used.
+ */
+ String getTermsOfUseText();
+
+ /**
+ * @return The URL to open when the user clicks the attribution "Terms of Use" text.
+ */
+ String getTermsOfUseURL();
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/JMapViewerEventListener.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/JMapViewerEventListener.java
index e0914ad..0064aeb 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/JMapViewerEventListener.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/JMapViewerEventListener.java
@@ -1,17 +1,17 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer.interfaces;
-
-import java.util.EventListener;
-
-import org.openstreetmap.gui.jmapviewer.events.JMVCommandEvent;
-
-/**
- * Must be implemented for processing commands while user
- * interacts with map viewer.
- *
- * @author Jason Huntley
- *
- */
-public interface JMapViewerEventListener extends EventListener {
- public void processCommand(JMVCommandEvent command);
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.interfaces;
+
+import java.util.EventListener;
+
+import org.openstreetmap.gui.jmapviewer.events.JMVCommandEvent;
+
+/**
+ * Must be implemented for processing commands while user
+ * interacts with map viewer.
+ *
+ * @author Jason Huntley
+ *
+ */
+public interface JMapViewerEventListener extends EventListener {
+ public void processCommand(JMVCommandEvent command);
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapPolygon.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapPolygon.java
index 8db97da..73b1259 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapPolygon.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapPolygon.java
@@ -1,38 +1,38 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer.interfaces;
-
-import java.awt.Graphics;
-import java.awt.Point;
-import java.awt.Polygon;
-import java.util.List;
-
-/**
- * Interface to be implemented by polygons that can be displayed on the map.
- *
- * @author Vincent
- */
-public interface MapPolygon extends MapObject{
-
- /**
- * @return Latitude/Longitude of each point of polygon
- */
- public List<? extends ICoordinate> getPoints();
-
- /**
- * Paints the map rectangle on the map. The <code>points</code>
- * are specifying the coordinates within <code>g</code>
- *
- * @param g
- * @param points
- */
- public void paint(Graphics g, List<Point> points);
-
- /**
- * Paints the map rectangle on the map. The <code>polygon</code>
- * is specifying the coordinates within <code>g</code>
- *
- * @param g
- * @param polygon
- */
- public void paint(Graphics g, Polygon polygon);
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.interfaces;
+
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Polygon;
+import java.util.List;
+
+/**
+ * Interface to be implemented by polygons that can be displayed on the map.
+ *
+ * @author Vincent
+ */
+public interface MapPolygon extends MapObject{
+
+ /**
+ * @return Latitude/Longitude of each point of polygon
+ */
+ public List<? extends ICoordinate> getPoints();
+
+ /**
+ * Paints the map rectangle on the map. The <code>points</code>
+ * are specifying the coordinates within <code>g</code>
+ *
+ * @param g
+ * @param points
+ */
+ public void paint(Graphics g, List<Point> points);
+
+ /**
+ * Paints the map rectangle on the map. The <code>polygon</code>
+ * is specifying the coordinates within <code>g</code>
+ *
+ * @param g
+ * @param polygon
+ */
+ public void paint(Graphics g, Polygon polygon);
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTileSource.java
index 66456a6..9505330 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTileSource.java
@@ -1,77 +1,77 @@
-// License: GPL. For details, see Readme.txt file.
-package org.openstreetmap.gui.jmapviewer.tilesources;
-
-import java.awt.Image;
-
-import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
-import org.openstreetmap.gui.jmapviewer.Coordinate;
-
-abstract public class AbstractTileSource implements TileSource {
-
- protected String attributionText;
- protected String attributionLinkURL;
- protected Image attributionImage;
- protected String attributionImageURL;
- protected String termsOfUseText;
- protected String termsOfUseURL;
-
- @Override
- public boolean requiresAttribution() {
- return attributionText != null || attributionImage != null || termsOfUseText != null || termsOfUseURL != null;
- }
-
- @Override
- public String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight) {
- return attributionText;
- }
-
- @Override
- public String getAttributionLinkURL() {
- return attributionLinkURL;
- }
-
- @Override
- public Image getAttributionImage() {
- return attributionImage;
- }
-
- @Override
- public String getAttributionImageURL() {
- return attributionImageURL;
- }
-
- @Override
- public String getTermsOfUseText() {
- return termsOfUseText;
- }
-
- @Override
- public String getTermsOfUseURL() {
- return termsOfUseURL;
- }
-
- public void setAttributionText(String attributionText) {
- this.attributionText = attributionText;
- }
-
- public void setAttributionLinkURL(String attributionLinkURL) {
- this.attributionLinkURL = attributionLinkURL;
- }
-
- public void setAttributionImage(Image attributionImage) {
- this.attributionImage = attributionImage;
- }
-
- public void setAttributionImageURL(String attributionImageURL) {
- this.attributionImageURL = attributionImageURL;
- }
-
- public void setTermsOfUseText(String termsOfUseText) {
- this.termsOfUseText = termsOfUseText;
- }
-
- public void setTermsOfUseURL(String termsOfUseURL) {
- this.termsOfUseURL = termsOfUseURL;
- }
-
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.tilesources;
+
+import java.awt.Image;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
+import org.openstreetmap.gui.jmapviewer.Coordinate;
+
+abstract public class AbstractTileSource implements TileSource {
+
+ protected String attributionText;
+ protected String attributionLinkURL;
+ protected Image attributionImage;
+ protected String attributionImageURL;
+ protected String termsOfUseText;
+ protected String termsOfUseURL;
+
+ @Override
+ public boolean requiresAttribution() {
+ return attributionText != null || attributionImage != null || termsOfUseText != null || termsOfUseURL != null;
+ }
+
+ @Override
+ public String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight) {
+ return attributionText;
+ }
+
+ @Override
+ public String getAttributionLinkURL() {
+ return attributionLinkURL;
+ }
+
+ @Override
+ public Image getAttributionImage() {
+ return attributionImage;
+ }
+
+ @Override
+ public String getAttributionImageURL() {
+ return attributionImageURL;
+ }
+
+ @Override
+ public String getTermsOfUseText() {
+ return termsOfUseText;
+ }
+
+ @Override
+ public String getTermsOfUseURL() {
+ return termsOfUseURL;
+ }
+
+ public void setAttributionText(String attributionText) {
+ this.attributionText = attributionText;
+ }
+
+ public void setAttributionLinkURL(String attributionLinkURL) {
+ this.attributionLinkURL = attributionLinkURL;
+ }
+
+ public void setAttributionImage(Image attributionImage) {
+ this.attributionImage = attributionImage;
+ }
+
+ public void setAttributionImageURL(String attributionImageURL) {
+ this.attributionImageURL = attributionImageURL;
+ }
+
+ public void setTermsOfUseText(String termsOfUseText) {
+ this.termsOfUseText = termsOfUseText;
+ }
+
+ public void setTermsOfUseURL(String termsOfUseURL) {
+ this.termsOfUseURL = termsOfUseURL;
+ }
+
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java
index a4cbc16..7504b8a 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java
@@ -3,6 +3,7 @@ package org.openstreetmap.gui.jmapviewer.tilesources;
import java.awt.Image;
import java.io.IOException;
+import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
@@ -45,7 +46,11 @@ public class BingAerialTileSource extends AbstractTMSTileSource {
private static final Pattern subdomainPattern = Pattern.compile("\\{subdomain\\}");
private static final Pattern quadkeyPattern = Pattern.compile("\\{quadkey\\}");
private static final Pattern culturePattern = Pattern.compile("\\{culture\\}");
+ private String brandLogoUri = null;
+ /**
+ * Constructs a new {@code BingAerialTileSource}.
+ */
public BingAerialTileSource() {
super("Bing Aerial Maps", "http://example.com/");
}
@@ -97,6 +102,8 @@ public class BingAerialTileSource extends AbstractTMSTileSource {
subdomains[i] = subdomainTxt.item(i).getNodeValue();
}
+ brandLogoUri = xpath.compile("/Response/BrandLogoUri/text()").evaluate(document);
+
XPathExpression attributionXpath = xpath.compile("Attribution/text()");
XPathExpression coverageAreaXpath = xpath.compile("CoverageArea");
XPathExpression zoomMinXpath = xpath.compile("ZoomMin/text()");
@@ -107,7 +114,7 @@ public class BingAerialTileSource extends AbstractTMSTileSource {
XPathExpression eastLonXpath = xpath.compile("BoundingBox/EastLongitude/text()");
NodeList imageryProviderNodes = (NodeList) xpath.compile("//ImageryMetadata/ImageryProvider").evaluate(document, XPathConstants.NODESET);
- List<Attribution> attributions = new ArrayList<Attribution>(imageryProviderNodes.getLength());
+ List<Attribution> attributions = new ArrayList<>(imageryProviderNodes.getLength());
for (int i = 0; i < imageryProviderNodes.getLength(); i++) {
Node providerNode = imageryProviderNodes.item(i);
@@ -174,10 +181,23 @@ public class BingAerialTileSource extends AbstractTMSTileSource {
@Override
public Image getAttributionImage() {
try {
- return ImageIO.read(JMapViewer.class.getResourceAsStream("images/bing_maps.png"));
+ final InputStream imageResource = JMapViewer.class.getResourceAsStream("images/bing_maps.png");
+ if (imageResource != null) {
+ return ImageIO.read(imageResource);
+ } else {
+ // Some Linux distributions (like Debian) will remove Bing logo from sources, so get it at runtime
+ for (int i = 0; i < 5 && getAttribution() == null; i++) {
+ // Makes sure attribution is loaded
+ }
+ if (brandLogoUri != null && !brandLogoUri.isEmpty()) {
+ System.out.println("Reading Bing logo from "+brandLogoUri);
+ return ImageIO.read(new URL(brandLogoUri));
+ }
+ }
} catch (IOException e) {
- return null;
+ System.err.println("Error while retrieving Bing logo: "+e.getMessage());
}
+ return null;
}
@Override
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java
index 8ec5dbc..3d4ab7f 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java
@@ -16,7 +16,7 @@ public class OsmTileSource {
private static final String[] SERVER = { "a", "b", "c" };
private int SERVER_NUM = 0;
-
+
/**
* Constructs a new {@code "Mapnik"} tile source.
*/
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
index fd48b29..934bd71 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
@@ -93,7 +93,7 @@ public class ScanexTileSource extends TMSTileSource {
public int LatToY(double lat, int zoom) {
return (int )(latToTileY(lat, zoom) * OsmMercator.TILE_SIZE);
}
-
+
@Override
public double YToLat(int y, int zoom) {
return tileYToLat((double )y / OsmMercator.TILE_SIZE, zoom);
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/TemplatedTMSTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/TemplatedTMSTileSource.java
index 1296a06..fea0e5a 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/TemplatedTMSTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/TemplatedTMSTileSource.java
@@ -11,7 +11,7 @@ public class TemplatedTMSTileSource extends TMSTileSource {
private Random rand = null;
private String[] randomParts = null;
- private Map<String, String> headers = new HashMap<String, String>();
+ private Map<String, String> headers = new HashMap<>();
public static final String PATTERN_ZOOM = "\\{(?:(\\d+)-)?z(?:oom)?([+-]\\d+)?\\}";
public static final String PATTERN_X = "\\{x\\}";
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/jmapviewer.git
More information about the Pkg-grass-devel
mailing list