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 || attributionImage != null || termsOfUseText != null || termsOfUseURL != null; 023 } 024 025 @Override 026 public String getAttributionText(int zoom, ICoordinate topLeft, ICoordinate botRight) { 027 return attributionText; 028 } 029 030 @Override 031 public String getAttributionLinkURL() { 032 return attributionLinkURL; 033 } 034 035 @Override 036 public Image getAttributionImage() { 037 return attributionImage; 038 } 039 040 @Override 041 public String getAttributionImageURL() { 042 return attributionImageURL; 043 } 044 045 @Override 046 public String getTermsOfUseText() { 047 return termsOfUseText; 048 } 049 050 @Override 051 public String getTermsOfUseURL() { 052 return termsOfUseURL; 053 } 054 055 public void setAttributionText(String attributionText) { 056 this.attributionText = attributionText; 057 } 058 059 public void setAttributionLinkURL(String attributionLinkURL) { 060 this.attributionLinkURL = attributionLinkURL; 061 } 062 063 public void setAttributionImage(Image attributionImage) { 064 this.attributionImage = attributionImage; 065 } 066 067 public void setAttributionImageURL(String attributionImageURL) { 068 this.attributionImageURL = attributionImageURL; 069 } 070 071 public void setTermsOfUseText(String termsOfUseText) { 072 this.termsOfUseText = termsOfUseText; 073 } 074 075 public void setTermsOfUseURL(String termsOfUseURL) { 076 this.termsOfUseURL = termsOfUseURL; 077 } 078 079 @Override 080 public boolean isNoTileAtZoom(Map<String, List<String>> headers, int statusCode, byte[] content) { 081 // default handler - when HTTP 404 is returned, then treat this situation as no tile at this zoom level 082 return statusCode == 404; 083 } 084}