Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileSource.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileSource.java	(revision 24460)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/OsmTileSource.java	(revision 24485)
@@ -1,5 +1,10 @@
 package org.openstreetmap.gui.jmapviewer;
 
+import java.awt.Image;
+
+import javax.swing.ImageIcon;
+
 import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
+import org.openstreetmap.josm.data.coor.LatLon;
 
 public class OsmTileSource {
@@ -11,8 +16,19 @@
         protected String NAME;
         protected String BASE_URL;
-        public AbstractOsmTileSource(String name, String base_url)
+        protected String ATTR_IMG_URL;
+        protected boolean REQUIRES_ATTRIBUTION = true;
+
+        public AbstractOsmTileSource(String name, String base_url) {
+            this(name, base_url, null);
+        }
+
+        public AbstractOsmTileSource(String name, String base_url, String attr_img_url)
         {
             NAME = name;
             BASE_URL = base_url;
+            ATTR_IMG_URL = attr_img_url;
+            if(ATTR_IMG_URL == null) {
+                REQUIRES_ATTRIBUTION = false;
+            }
         }
 
@@ -56,4 +72,19 @@
         public int getTileSize() {
             return 256;
+        }
+
+        public Image getAttributionImage() {
+            if(ATTR_IMG_URL != null)
+                return new ImageIcon(ATTR_IMG_URL).getImage();
+            else
+                return null;
+        }
+
+        public boolean requiresAttribution() {
+            return REQUIRES_ATTRIBUTION;
+        }
+
+        public String getAttributionText(int zoom, LatLon topLeft, LatLon botRight) {
+            return "CC-BY-SA OpenStreetMap and Contributors";
         }
     }
Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileSource.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileSource.java	(revision 24460)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileSource.java	(revision 24485)
@@ -1,5 +1,8 @@
 package org.openstreetmap.gui.jmapviewer.interfaces;
 
+import java.awt.Image;
+
 import org.openstreetmap.gui.jmapviewer.JMapViewer;
+import org.openstreetmap.josm.data.coor.LatLon;
 
 //License: GPL. Copyright 2008 by Jan Peter Stotz
@@ -92,3 +95,21 @@
      */
     public int getTileSize();
+
+    /**
+     * @return True if the tile source requires attribution.
+     */
+    public 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.
+     */
+    public String getAttributionText(int zoom, LatLon topLeft, LatLon botRight);
+
+    /**
+     * @return The URL for the attribution image. Null if no image should be displayed.
+     */
+    public Image getAttributionImage();
 }
