Index: src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 6015)
+++ src/org/openstreetmap/josm/actions/OpenLocationAction.java	(working copy)
@@ -146,7 +146,32 @@
         return result;
     }
 
+
     /**
+     * Summarizes acceptable urls for error message purposes.
+     * @since 6015
+     */
+    public String findSummaryDocumentation() {
+        String result = "";
+        //for (Class<? extends DownloadTask> taskClass : downloadTasks) {
+        for (int i = 0; i < downloadTasks.size(); i++) {
+            Class<? extends DownloadTask> taskClass = downloadTasks.get(i);
+            if (taskClass != null) {
+                try {
+                    DownloadTask task = taskClass.getConstructor().newInstance();
+                    result += "<br/>" + i + " - " + task.acceptsDocumentationSummary();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return result;
+    }
+
+
+
+
+    /**
      * Open the given URL.
      * @param new_layer true if the URL needs to be opened in a new layer, false otherwise
      * @param url The URL to open
@@ -163,11 +188,12 @@
         if (future != null) {
             Main.worker.submit(new PostDownloadHandler(task, future));
         } else {
+            final String details = findSummaryDocumentation();    // Explain what patterns are supported
             SwingUtilities.invokeLater(new Runnable() {
                 public void run() {
                     JOptionPane.showMessageDialog(Main.parent, tr(
-                            "<html>Cannot open URL ''{0}'' because no suitable download task is available.</html>",
-                            url), tr("Download Location"), JOptionPane.ERROR_MESSAGE);
+                            "<html><p>Cannot open URL ''{0}'' because no suitable matching task was found:<br/>{1}</p></html>",
+                            url, details), tr("Download Location"), JOptionPane.ERROR_MESSAGE);
                 }
             });
         }
Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java	(revision 6015)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java	(working copy)
@@ -46,7 +46,15 @@
              || url.matches("https?://.*/.*\\.osc")                             // Remote .osc files
                 );
     }
-
+    @Override
+    public String acceptsDocumentationSummary() {
+        String foo = "DownloadOsmChangeTask:<br/";
+        foo += "<ul>";
+        foo += "<li>" + "http://.*/api/0.6/changeset/\\p{Digit}+/download"; // Keep in sync with above
+        foo += "<li>" + "https?://.*/.*\\.osc"; // Keep in sync with above
+        foo += "</ul>";
+        return foo;
+    }
     /* (non-Javadoc)
      * @see org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask#download(boolean, org.openstreetmap.josm.data.Bounds, org.openstreetmap.josm.gui.progress.ProgressMonitor)
      */
Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 6015)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(working copy)
@@ -81,7 +81,19 @@
         return url != null && (url.matches(PATTERN_TRACE_ID) || url.matches(PATTERN_TRACKPOINTS_BBOX)
                 || url.matches(PATTERN_EXTERNAL_GPX_SCRIPT) || url.matches(PATTERN_EXTERNAL_GPX_FILE));
     }
+    @Override
+    public String acceptsDocumentationSummary() {
+        String foo = "DownloadGPSTask:<br/>";
+        foo += "<ul>";
+        foo += "<li>" + PATTERN_TRACE_ID;
+        foo += "<li>" + PATTERN_TRACKPOINTS_BBOX;
+        foo += "<li>" + PATTERN_EXTERNAL_GPX_SCRIPT;
+        foo += "<li>" + PATTERN_EXTERNAL_GPX_FILE;
+        foo += "</ul>";
+        return foo;
+    }
 
+
     public void cancel() {
         if (downloadTask != null) {
             downloadTask.cancel();
Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeCompressedTask.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeCompressedTask.java	(revision 6015)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeCompressedTask.java	(working copy)
@@ -18,7 +18,14 @@
     public boolean acceptsUrl(String url) {
         return url != null && url.matches("https?://.*/.*\\.osc.(gz|bz2?)"); // Remote .osc.gz / .osc.bz / .osc.bz2 files
     }
-        
+    @Override
+    public String acceptsDocumentationSummary() {
+        String foo = "DownloadOsmChangeCompressedTask:<br/";
+        foo += "<ul>";
+        foo += "<li>" + "https?://.*/.*\\.osc.(gz|bz2?)";       // Keep in sync with above
+        foo += "</ul>";
+        return foo;
+    }
     /**
      * Loads a given URL
      * @param new_layer {@code true} if the data should be saved to a new layer
Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 6015)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(working copy)
@@ -168,6 +168,17 @@
              || url.matches(PATTERN_EXTERNAL_OSM_FILE)     // Remote .osm files
                 );
     }
+    @Override
+    public String acceptsDocumentationSummary() {
+        String foo = "DownloadOsmTask:<br/";
+        foo += "<ul>";
+        foo += "<li>" + PATTERN_OSM_API_URL;
+        foo += "<li>" + PATTERN_OVERPASS_API_URL;
+        foo += "<li>" + PATTERN_OVERPASS_API_XAPI_URL;
+        foo += "<li>" + PATTERN_EXTERNAL_OSM_FILE;
+        foo += "</ul>";
+        return foo;
+    }
 
     public void cancel() {
         if (downloadTask != null) {
Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java	(revision 6015)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java	(working copy)
@@ -79,6 +79,12 @@
     boolean acceptsUrl(String url);
 
     /**
+     * Returns a short html documentation string, describing acceptable URLs.
+     */
+    String acceptsDocumentationSummary();
+
+
+    /**
      * Replies the error objects of the task. Empty list, if no error messages are available.
      *
      * Error objects are either {@link String}s with error messages or {@link Exception}s.
Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmUrlTask.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmUrlTask.java	(revision 6015)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmUrlTask.java	(working copy)
@@ -19,4 +19,12 @@
                 url.matches("http://www\\.openstreetmap\\.org/\\?lat=.*&lon=.*")
                 );
     }
+    @Override
+    public String acceptsDocumentationSummary() {
+        String foo = "DownloadOsmUrlTask:<br/";
+        foo += "<ul>";
+        foo += "<li>" + "http://www.openstreetmap.org/?lat=.*&lon=.*"; // Keep in sync with above
+        foo += "</ul>";
+        return foo;
+    }
 }
Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmCompressedTask.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmCompressedTask.java	(revision 6015)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmCompressedTask.java	(working copy)
@@ -11,15 +11,25 @@
 import org.openstreetmap.josm.io.OsmTransferException;
 
 public class DownloadOsmCompressedTask extends DownloadOsmTask {
-    
+
+    String PATTERN_GZ =  "https?://.*/.*\\.osm.(gz|bz2?)";
+
     /* (non-Javadoc)
      * @see org.openstreetmap.josm.actions.downloadtasks.DownloadTask#acceptsUrl(java.lang.String)
      */
     @Override
     public boolean acceptsUrl(String url) {
-        return url != null && url.matches("https?://.*/.*\\.osm.(gz|bz2?)"); // Remote .osm.gz / .osm.bz / .osm.bz2 files
+        return url != null && url.matches(PATTERN_GZ); // Remote .osm.gz / .osm.bz / .osm.bz2 files
     }
-    
+    @Override
+    public String acceptsDocumentationSummary() {
+        String foo = "DownloadOsmCompressedTask:<br/";
+        foo += "<ul>";
+        foo += "<li>" + PATTERN_GZ;
+        foo += "</ul>";
+        return foo;
+    }
+
     /* (non-Javadoc)
      * @see org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask#download(boolean, org.openstreetmap.josm.data.Bounds, org.openstreetmap.josm.gui.progress.ProgressMonitor)
      */
