Index: trunk/src/org/openstreetmap/josm/actions/DownloadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadAction.java	(revision 434)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadAction.java	(revision 435)
@@ -42,4 +42,5 @@
 		JOptionPane pane = new JOptionPane(downPanel, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
 		JDialog dlg = pane.createDialog(Main.parent, tr("Download"));
+		dialog.setOptionPane(pane);
 
 		if (dlg.getWidth() > 1000)
Index: trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 434)
+++ trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 435)
@@ -8,4 +8,7 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
 
 import javax.swing.DefaultListModel;
@@ -33,5 +36,5 @@
 public class BookmarkSelection implements DownloadSelection {
 
-	private Preferences.Bookmark tempBookmark= null;
+	private Preferences.Bookmark tempBookmark = null;
 	private BookmarkList bookmarks; 
 	
@@ -42,4 +45,16 @@
 
 		bookmarks = new BookmarkList();
+		
+		/* add a handler for "double click" mouse events */
+		MouseListener mouseListener = new MouseAdapter() {
+			@Override public void mouseClicked(MouseEvent e) {
+				if (e.getClickCount() == 2) {
+					int index = bookmarks.locationToIndex(e.getPoint());
+					gui.closeDownloadDialog(true);
+				}
+			}
+		};
+ 		bookmarks.addMouseListener(mouseListener);
+		
 		bookmarks.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
 			public void valueChanged(ListSelectionEvent e) {
Index: trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java	(revision 434)
+++ trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java	(revision 435)
@@ -10,4 +10,5 @@
 import javax.swing.JCheckBox;
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
@@ -33,5 +34,7 @@
 public class DownloadDialog extends JPanel {
 	
-
+	// the JOptionPane that contains this dialog. required for the closeDialog() method.
+	private JOptionPane optionPane;
+	
 	public interface DownloadTask {
 		/**
@@ -138,3 +141,21 @@
 		return tabpane.getSelectedIndex();
 	}
+	
+	/**
+	 * Closes the download dialog. This is intended to be called by one of
+	 * the various download area selection "plugins".
+	 * 
+	 * @param download true to download selected data, false to cancel download
+	 */
+	public void closeDownloadDialog(boolean download) {
+		optionPane.setValue(download ? JOptionPane.OK_OPTION : JOptionPane.CANCEL_OPTION);
+	}
+
+	/**
+	 * Has to be called after this dialog has been added to a JOptionPane.
+	 * @param optionPane
+	 */
+	public void setOptionPane(JOptionPane optionPane) {
+    	this.optionPane = optionPane;
+    }
 }
