Index: src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
===================================================================
--- src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 3878)
+++ src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision )
@@ -157,6 +157,7 @@
 
     private final SizeButton iSizeButton = new SizeButton();
     private final SourceButton iSourceButton;
+    private final AttributionHint iAttributionHint = new AttributionHint(this);
     private Bounds bbox;
 
     // upper left and lower right corners of the selection rectangle (x/y on
@@ -203,13 +204,16 @@
             if (source.getName().equals(mapStyle)) {
                 this.setTileSource(source);
                 iSourceButton.setCurrentMap(source);
+                iAttributionHint.setAttribution(source.getAttributionText(zoom, getPosition(), getPosition()));
                 foundSource = true;
                 break;
             }
         }
         if (!foundSource) {
-            setTileSource(tileSources.get(0));
-            iSourceButton.setCurrentMap(tileSources.get(0));
+            TileSource firstMapSource = tileSources.get(0);
+            setTileSource(firstMapSource);
+            iSourceButton.setCurrentMap(firstMapSource);
+            iAttributionHint.setAttribution(firstMapSource.getAttributionText(zoom, getPosition(), getPosition()));
         }
 
         new SlippyMapControler(this, this, iSizeButton, iSourceButton);
@@ -248,6 +252,7 @@
 
             iSizeButton.paint(g);
             iSourceButton.paint((Graphics2D)g);
+            iAttributionHint.paint(g);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -340,6 +345,9 @@
     public void toggleMapSource(TileSource tileSource) {
         this.tileController.setTileCache(new MemoryTileCache());
         this.setTileSource(tileSource);
+        this.iAttributionHint.setAttribution(
+                tileSource.getAttributionText(zoom, getPosition(), getPosition())
+        );
         PROP_MAPSTYLE.put(tileSource.getName()); // TODO Is name really unique?
     }
 
Index: src/org/openstreetmap/josm/gui/bbox/AttributionHint.java
===================================================================
--- src/org/openstreetmap/josm/gui/bbox/AttributionHint.java	(revision )
+++ src/org/openstreetmap/josm/gui/bbox/AttributionHint.java	(revision )
@@ -0,0 +1,59 @@
+package org.openstreetmap.josm.gui.bbox;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+
+/* A simple component to display attribution information on the slippy map
+ *  */
+public class AttributionHint {
+
+    private static final float FONT_SIZE = 10.0f;
+    private final Timer timer;
+    private boolean isShown = false;
+    private JComponent parentWindow = null;
+    private String attributionText = "";
+    private final int padding = 2;
+
+    public AttributionHint(JComponent parent) {
+        this.parentWindow = parent;
+        timer = new Timer(10 * 1000, new AbstractAction() {
+            public void actionPerformed(ActionEvent actionEvent) {
+                isShown = false;
+                if (parentWindow != null) {
+                    parentWindow.repaint();
+                }
+            }
+        });
+        timer.setRepeats(false);
+    }
+
+    /*
+     * Sets new attribution text to be shown for 10s
+     */
+    public void setAttribution(String attributionText) {
+        this.attributionText = attributionText;
+        this.isShown = true;
+        timer.start();
+    }
+
+    public void paint(Graphics g) {
+        if (isShown) {
+            Graphics2D g2 = (Graphics2D) g;
+            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+            Rectangle bounds = g2.getClipBounds();
+
+            g.setFont(g.getFont().deriveFont(Font.ITALIC).deriveFont(FONT_SIZE));
+            FontMetrics fm = g.getFontMetrics();
+
+            int textWidth = fm.stringWidth(attributionText);
+            int textLeft = (bounds.width - textWidth) / 2;
+            int textTop = bounds.height - fm.getHeight();
+
+            g.setColor(new Color(0, 0, 139, 179));
+            g2.fillRoundRect(textLeft - padding, textTop - padding, textWidth + 2 * padding, fm.getHeight() + padding, 5, 5);
+            g.setColor(Color.WHITE);
+            g2.drawString(attributionText, textLeft, textTop + fm.getAscent());
+        }
+    }
+}
\ No newline at end of file
