001// License: GPL. For details, see Readme.txt file. 002package org.openstreetmap.gui.jmapviewer.tilesources; 003 004import java.awt.Image; 005import java.util.List; 006import java.util.Map; 007 008import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate; 009import org.openstreetmap.gui.jmapviewer.interfaces.TileSource; 010 011public abstract class AbstractTileSource implements TileSource { 012 013 protected String attributionText; 014 protected String attributionLinkURL; 015 protected Image attributionImage; 016 protected String attributionImageURL; 017 protected String termsOfUseText; 018 protected String termsOfUseURL; 019 020 @Override 021 public boolean requiresAttribution() { 022 return attributionText != null || attributionLinkURL != null || attributionImage != null 023 || termsOfUseText != null || termsOfUseURL != null; 024 } 025 026 @Override 027 public String getAttributionText(int zoom, ICoordinate topLeft, ICoordinate botRight) { 028 return attributionText; 029 } 030 031 @Override 032 public String getAttributionLinkURL() { 033 return attributionLinkURL; 034 } 035 036 @Override 037 public Image getAttributionImage() { 038 return attributionImage; 039 } 040 041 @Override 042 public String getAttributionImageURL() { 043 return attributionImageURL; 044 } 045 046 @Override 047 public String getTermsOfUseText() { 048 return termsOfUseText; 049 } 050 051 @Override 052 public String getTermsOfUseURL() { 053 return termsOfUseURL; 054 } 055 056 public void setAttributionText(String attributionText) { 057 this.attributionText = attributionText; 058 } 059 060 public void setAttributionLinkURL(String attributionLinkURL) { 061 this.attributionLinkURL = attributionLinkURL; 062 } 063 064 public void setAttributionImage(Image attributionImage) { 065 this.attributionImage = attributionImage; 066 } 067 068 public void setAttributionImageURL(String attributionImageURL) { 069 this.attributionImageURL = attributionImageURL; 070 } 071 072 public void setTermsOfUseText(String termsOfUseText) { 073 this.termsOfUseText = termsOfUseText; 074 } 075 076 public void setTermsOfUseURL(String termsOfUseURL) { 077 this.termsOfUseURL = termsOfUseURL; 078 } 079 080 @Override 081 public boolean isNoTileAtZoom(Map<String, List<String>> headers, int statusCode, byte[] content) { 082 // default handler - when HTTP 404 is returned, then treat this situation as no tile at this zoom level 083 return statusCode == 404; 084 } 085}