Index: trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 9803)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 9804)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
 import java.awt.geom.Area;
@@ -110,6 +111,6 @@
                 tr("<html>This action will require {0} individual<br>" + "download requests. Do you wish<br>to continue?</html>",
                         toDownload.size())), GBC.eol());
-        if (JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(Main.parent, msg, title,
-                JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)) {
+        if (!GraphicsEnvironment.isHeadless() && JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(
+                Main.parent, msg, title, JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)) {
             return;
         }
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 9803)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 9804)
@@ -7,4 +7,5 @@
 import java.awt.Component;
 import java.awt.Dimension;
+import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
@@ -271,21 +272,25 @@
         msg.add(scrollPane, GBC.eol().fill(GBC.BOTH));
 
-        // build dialog
-        ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Set track visibility for {0}", layer.getName()),
-                new String[]{tr("Show all"), tr("Show selected only"), tr("Cancel")});
-        ed.setButtonIcons(new String[]{"eye", "dialogs/filter", "cancel"});
-        ed.setContent(msg, false);
-        ed.setDefaultButton(2);
-        ed.setCancelButton(3);
-        ed.configureContextsensitiveHelp("/Action/ChooseTrackVisibility", true);
-        ed.setRememberWindowGeometry(getClass().getName() + ".geometry", WindowGeometry.centerInWindow(Main.parent, new Dimension(1000, 500)));
-        ed.showDialog();
-        dateFilter.saveInPrefs();
-        int v = ed.getValue();
-        // cancel for unknown buttons and copy back original settings
-        if (v != 1 && v != 2) {
-            layer.trackVisibility = Arrays.copyOf(trackVisibilityBackup, layer.trackVisibility.length);
-            Main.map.repaint();
-            return;
+        int v = 1;
+        if (!GraphicsEnvironment.isHeadless()) {
+            // build dialog
+            ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Set track visibility for {0}", layer.getName()),
+                    new String[]{tr("Show all"), tr("Show selected only"), tr("Cancel")});
+            ed.setButtonIcons(new String[]{"eye", "dialogs/filter", "cancel"});
+            ed.setContent(msg, false);
+            ed.setDefaultButton(2);
+            ed.setCancelButton(3);
+            ed.configureContextsensitiveHelp("/Action/ChooseTrackVisibility", true);
+            ed.setRememberWindowGeometry(getClass().getName() + ".geometry",
+                    WindowGeometry.centerInWindow(Main.parent, new Dimension(1000, 500)));
+            ed.showDialog();
+            dateFilter.saveInPrefs();
+            v = ed.getValue();
+            // cancel for unknown buttons and copy back original settings
+            if (v != 1 && v != 2) {
+                layer.trackVisibility = Arrays.copyOf(trackVisibilityBackup, layer.trackVisibility.length);
+                Main.map.repaint();
+                return;
+            }
         }
         // set visibility (1 = show all, 2 = filter). If no tracks are selected
@@ -299,7 +304,10 @@
         layer.setVisible(v == 1 || !s.isSelectionEmpty());
 
-        Main.map.mapView.preferenceChanged(null);
-        Main.map.repaint();
-    }
-
+        if (Main.isDisplayingMapView()) {
+            Main.map.mapView.preferenceChanged(null);
+        }
+        if (Main.map != null) {
+            Main.map.repaint();
+        }
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 9803)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 9804)
@@ -5,4 +5,5 @@
 
 import java.awt.Dimension;
+import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
 
@@ -185,6 +186,9 @@
         });
 
-        int ret = HelpAwareOptionPane.showOptionDialog(Main.parent, this, title,
-                JOptionPane.QUESTION_MESSAGE, null, options, options[0], helpTopic);
+        int ret = 0;
+        if (!GraphicsEnvironment.isHeadless()) {
+            ret = HelpAwareOptionPane.showOptionDialog(Main.parent, this, title,
+                    JOptionPane.QUESTION_MESSAGE, null, options, options[0], helpTopic);
+        }
         if (0 == ret) {
             rememberSettings();
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java	(revision 9803)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java	(revision 9804)
@@ -23,4 +23,5 @@
  *
  * @author fred
+ * @since 5715
  */
 public class DownloadAlongTrackAction extends DownloadAlongAction {
@@ -48,7 +49,5 @@
     }
 
-    @Override
-    public void actionPerformed(ActionEvent e) {
-
+    PleaseWaitRunnable createTask() {
         final DownloadAlongPanel panel = new DownloadAlongPanel(
                 PREF_DOWNLOAD_ALONG_TRACK_OSM, PREF_DOWNLOAD_ALONG_TRACK_GPS,
@@ -56,5 +55,5 @@
 
         if (0 != panel.showInDownloadDialog(tr("Download from OSM along this track"), HelpUtil.ht("/Action/DownloadAlongTrack"))) {
-            return;
+            return null;
         }
 
@@ -186,5 +185,10 @@
         }
 
-        Main.worker.submit(new CalculateDownloadArea());
+        return new CalculateDownloadArea();
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        Main.worker.submit(createTask());
     }
 }
