// License: GPL. For details, see Readme.txt file. package org.openstreetmap.gui.jmapviewer.tilesources; import java.awt.Image; import java.util.List; import java.util.Map; import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate; import org.openstreetmap.gui.jmapviewer.interfaces.TileSource; public abstract 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, ICoordinate topLeft, ICoordinate 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; } @Override public boolean isNoTileAtZoom(Map<String, List<String>> headers, int statusCode, byte[] content) { // default handler - when HTTP 404 is returned, then treat this situation as no tile at this zoom level return statusCode == 404; } }