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 += "
" + 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(
- "Cannot open URL ''{0}'' because no suitable download task is available.",
- url), tr("Download Location"), JOptionPane.ERROR_MESSAGE);
+ "
Cannot open URL ''{0}''
The following load tasks accept the URL patterns shown:
{1}
",
+ 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 = "Download OSM Change:
";
+ foo += "" + "http://.*/api/0.6/changeset/\\p{Digit}+/download"; // Keep in sync with above
+ foo += "" + "https?://.*/.*\\.osc"; // Keep in sync with above
+ foo += "";
+ 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 = "Download GPS:
";
+ foo += "";
+ foo += "- " + PATTERN_TRACE_ID;
+ foo += "
- " + PATTERN_TRACKPOINTS_BBOX;
+ foo += "
- " + PATTERN_EXTERNAL_GPX_SCRIPT;
+ foo += "
- " + PATTERN_EXTERNAL_GPX_FILE;
+ foo += "
";
+ 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 = "Download Compressed OSM Change:
";
+ foo += "" + "https?://.*/.*\\.osc.(gz|bz2?)"; // Keep in sync with above
+ foo += "";
+ 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 = "Download Osm:
";
+ foo += "" + PATTERN_OSM_API_URL;
+ foo += "" + PATTERN_OVERPASS_API_URL;
+ foo += "" + PATTERN_OVERPASS_API_XAPI_URL;
+ foo += "" + PATTERN_EXTERNAL_OSM_FILE;
+ foo += "";
+ 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 = "Download OSM URL:
";
+ foo += "" + "http://www.openstreetmap.org/?lat=.*&lon=.*"; // Keep in sync with above
+ foo += "";
+ 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 = "Download Compressed OSM:
";
+ foo += "" + PATTERN_GZ;
+ foo += "";
+ return foo;
+ }
+
/* (non-Javadoc)
* @see org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask#download(boolean, org.openstreetmap.josm.data.Bounds, org.openstreetmap.josm.gui.progress.ProgressMonitor)
*/