Index: applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapLayer.java
===================================================================
--- applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapLayer.java	(revision 24486)
+++ applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapLayer.java	(revision 24487)
@@ -15,4 +15,7 @@
 import java.awt.event.MouseEvent;
 import java.awt.image.ImageObserver;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -106,4 +109,5 @@
     Tile showMetadataTile;
     private Image attrImage;
+    private Rectangle attrImageBounds;
     private Font attrFont = Font.decode("Arial-10");
 
@@ -256,8 +260,19 @@
                     @Override
                     public void mouseClicked(MouseEvent e) {
-                        if (e.getButton() != MouseEvent.BUTTON3)
-                            return;
-                        clickedTile = getTileForPixelpos(e.getX(), e.getY());
-                        tileOptionMenu.show(e.getComponent(), e.getX(), e.getY());
+                        if (e.getButton() == MouseEvent.BUTTON3) {
+                            clickedTile = getTileForPixelpos(e.getX(), e.getY());
+                            tileOptionMenu.show(e.getComponent(), e.getX(), e.getY());
+                        } else if (e.getButton() == MouseEvent.BUTTON1) {
+                            if(attrImageBounds.contains(e.getPoint()) && tileSource.requiresAttribution()) {
+                                try {
+                                    java.awt.Desktop desktop = java.awt.Desktop.getDesktop();
+                                    desktop.browse(new URI(tileSource.getAttributionLinkURL()));
+                                } catch (IOException e1) {
+                                    e1.printStackTrace();
+                                } catch (URISyntaxException e1) {
+                                    e1.printStackTrace();
+                                }
+                            }
+                        }
                     }
                 });
@@ -933,5 +948,8 @@
             // Draw attribution logo
             if(attrImage != null) {
-                g.drawImage(attrImage, 5, mv.getHeight() - attrImage.getHeight(this) - 5, this);
+                int x = 5;
+                int y = mv.getHeight() - attrImage.getHeight(this) - 5;
+                attrImageBounds = new Rectangle(x, y, attrImage.getWidth(this), attrImage.getHeight(this));
+                g.drawImage(attrImage, x, y, this);
             }
         }
Index: applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapPreferences.java
===================================================================
--- applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapPreferences.java	(revision 24486)
+++ applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapPreferences.java	(revision 24487)
@@ -406,4 +406,8 @@
         }
         
+        public String getAttributionLinkURL() {
+            return "http://bing.com/maps";
+        }
+        
         public String getAttributionText(int zoom, LatLon topLeft, LatLon botRight) {
             Bounds windowBounds = new Bounds(topLeft, botRight);
@@ -418,5 +422,4 @@
                         a.append(attr.attribution);
                         a.append(" ");
-                    } else {
                     }
                 }
