Index: org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 4272)
+++ org/openstreetmap/josm/gui/layer/GpxLayer.java	(working copy)
@@ -1406,13 +1406,23 @@
 
         @Override
         public void actionPerformed(ActionEvent e) {
-            GPXSettingsPanel panel=new GPXSettingsPanel(getName());
+            boolean hasLocal=false, hasNonlocal=false;
+            for(Layer layer : layers) {
+                if (layer instanceof GpxLayer) {
+                    if (((GpxLayer)layer).isLocalFile) hasLocal=true;
+                    else hasNonlocal=true;
+                }
+            }
+            
+            GPXSettingsPanel panel=new GPXSettingsPanel(getName(), hasLocal, hasNonlocal );
             int answer = JOptionPane.showConfirmDialog(Main.parent, panel,
                     tr("Customize track drawing"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
             if (answer == JOptionPane.CANCEL_OPTION || answer == JOptionPane.CLOSED_OPTION) return;
             for(Layer layer : layers) {
                 // save preferences for all layers
-                panel.savePreferences(layer.getName());
+                boolean f=false;
+                if (layer instanceof GpxLayer) f=((GpxLayer)layer).isLocalFile;
+                panel.savePreferences(layer.getName(),f);
             }
             Main.map.repaint();
         }
Index: org/openstreetmap/josm/gui/preferences/GPXSettingsPanel.java
===================================================================
--- org/openstreetmap/josm/gui/preferences/GPXSettingsPanel.java	(revision 4272)
+++ org/openstreetmap/josm/gui/preferences/GPXSettingsPanel.java	(working copy)
@@ -48,18 +48,20 @@
     private JComboBox waypointLabel = new JComboBox(new String[] {tr("Auto"), /* gpx data field name */ trc("gpx_field", "Name"),
             /* gpx data field name */ trc("gpx_field", "Desc(ription)"), tr("Both"), tr("None")});
     private String spec;
-    private String specSp = "";
-
-    public GPXSettingsPanel(String layerName) {
+    private boolean local; // flag to display Localonly checkbox
+    private boolean nonlocal; // flag to display All lines checkbox
+    
+    public GPXSettingsPanel(String layerName, boolean local, boolean nonlocal) {
         super(new GridBagLayout());
         this.spec="layer "+layerName;
-        specSp = ".layer "+spec;
+        this.local=local; this.nonlocal=nonlocal;
         initComponents();
         loadPreferences();
     }
 
     public GPXSettingsPanel() {
         super(new GridBagLayout());
+        local=false;
         initComponents();
         loadPreferences(); // preferences -> controls
     }
@@ -82,9 +84,9 @@
         add(new JLabel(tr("Draw lines between raw GPS points")), GBC.eol().insets(20,0,0,0));
         if (spec!=null) add(drawRawGpsLinesGlobal, GBC.eol().insets(40,0,0,0));
         add(drawRawGpsLinesNone, GBC.eol().insets(40,0,0,0));
-        add(drawRawGpsLinesLocal, GBC.eol().insets(40,0,0,0));
-        add(drawRawGpsLinesAll, GBC.eol().insets(40,0,0,0));
-
+        if (spec==null || local) add(drawRawGpsLinesLocal, GBC.eol().insets(40,0,0,0));
+        if (spec==null || nonlocal) add(drawRawGpsLinesAll, GBC.eol().insets(40,0,0,0));
+        
         drawRawGpsLinesActionListener = new ActionListener(){
             public void actionPerformed(ActionEvent e) {
                 boolean f=drawRawGpsLinesNone.isSelected()||drawRawGpsLinesGlobal.isSelected();
@@ -200,14 +202,17 @@
      * Loads preferences to UI controls
      */
     public void loadPreferences () {
+        String specSp = "";
+        if (spec!=null) specSp = "."+spec;
+
         makeAutoMarkers.setSelected(Main.pref.getBoolean("marker.makeautomarkers", true));
-        if(spec!=null && !Main.pref.hasKey("draw.rawgps.lines."+spec)
-                && !Main.pref.hasKey("draw.rawgps.lines.local"+spec)){
+        if(spec!=null && !Main.pref.hasKey("draw.rawgps.lines"+specSp)
+                && !Main.pref.hasKey("draw.rawgps.lines.local"+specSp)){
             // no line preferences for layer is found
             drawRawGpsLinesGlobal.setSelected(true);
         } else {
-            Boolean lf = Main.pref.getBoolean("draw.rawgps.lines.local",spec, true);
-            if(Main.pref.getBoolean("draw.rawgps.lines",spec, true)) {
+            Boolean lf = Main.pref.getBoolean("draw.rawgps.lines.local"+specSp, true);
+            if(Main.pref.getBoolean("draw.rawgps.lines"+specSp, true)) {
                 drawRawGpsLinesAll.setSelected(true);
             } else if (lf) {
                 drawRawGpsLinesLocal.setSelected(true);
@@ -216,32 +221,32 @@
             }
         }
 
-        drawRawGpsMaxLineLengthLocal.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.max-line-length.local",spec, -1)));
-        drawRawGpsMaxLineLength.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.max-line-length",spec, 200)));
-        forceRawGpsLines.setSelected(Main.pref.getBoolean("draw.rawgps.lines.force",spec, false));
-        drawGpsArrows.setSelected(Main.pref.getBoolean("draw.rawgps.direction",spec, false));
-        drawGpsArrowsFast.setSelected(Main.pref.getBoolean("draw.rawgps.alternatedirection",spec, false));
-        drawGpsArrowsMinDist.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.min-arrow-distance",spec, 40)));
-        hdopCircleGpsPoints.setSelected(Main.pref.getBoolean("draw.rawgps.hdopcircle",spec, false));
-        largeGpsPoints.setSelected(Main.pref.getBoolean("draw.rawgps.large",spec, false));
+        drawRawGpsMaxLineLengthLocal.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.max-line-length.local"+specSp, -1)));
+        drawRawGpsMaxLineLength.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.max-line-length"+specSp, 200)));
+        forceRawGpsLines.setSelected(Main.pref.getBoolean("draw.rawgps.lines.force"+specSp, false));
+        drawGpsArrows.setSelected(Main.pref.getBoolean("draw.rawgps.direction"+specSp, false));
+        drawGpsArrowsFast.setSelected(Main.pref.getBoolean("draw.rawgps.alternatedirection"+specSp, false));
+        drawGpsArrowsMinDist.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.min-arrow-distance"+specSp, 40)));
+        hdopCircleGpsPoints.setSelected(Main.pref.getBoolean("draw.rawgps.hdopcircle"+specSp, false));
+        largeGpsPoints.setSelected(Main.pref.getBoolean("draw.rawgps.large"+specSp, false));
         drawRawGpsLinesActionListener.actionPerformed(null);
 
-        if(spec!=null && !Main.pref.hasKey("draw.rawgps.colors."+spec)) {
+        if(spec!=null && !Main.pref.hasKey("draw.rawgps.colors"+specSp)) {
             colorTypeGlobal.setSelected(true);
             colorDynamic.setSelected(false);
             colorDynamic.setEnabled(false);
         } else {
-         switch(Main.pref.getInteger("draw.rawgps.colors",spec, 0)) {
+         switch(Main.pref.getInteger("draw.rawgps.colors"+specSp, 0)) {
             case 0: colorTypeNone.setSelected(true);   break;
             case 1: colorTypeVelocity.setSelected(true);  break;
             case 2: colorTypeDilution.setSelected(true);  break;
             case 3: colorTypeDirection.setSelected(true); break;
             case 4: colorTypeTime.setSelected(true);  break;
             }
-            int ccts = Main.pref.getInteger("draw.rawgps.colorTracksTune",spec, 45);
+            int ccts = Main.pref.getInteger("draw.rawgps.colorTracksTune"+specSp, 45);
             colorTypeVelocityTune.setSelectedIndex(ccts==10 ? 2 : (ccts==20 ? 1 : 0));
             colorTypeVelocityTune.setEnabled(colorTypeVelocity.isSelected() && colorTypeVelocity.isEnabled());
-            colorDynamic.setSelected(Main.pref.getBoolean("draw.rawgps.colors.dynamic",spec, false));
+            colorDynamic.setSelected(Main.pref.getBoolean("draw.rawgps.colors.dynamic"+specSp, false));
             colorDynamic.setEnabled(colorTypeVelocity.isSelected() || colorTypeDilution.isSelected());
         }
         if(spec != null)
@@ -255,22 +260,31 @@
      * Save preferences from UI controls for specified layer
      * if spec==null, global preferences are written
      */
-    public boolean savePreferences (String spec) {
+    public boolean savePreferences (String layerName, boolean locLayer) {
+        String specSp = "";
+        if (spec!=null) specSp = ".layer "+layerName;
+        
         Main.pref.put("marker.makeautomarkers"+specSp, makeAutoMarkers.isSelected());
         if (drawRawGpsLinesGlobal.isSelected()) {
-            Main.pref.put("draw.rawgps.lines"+specSp, null);
-            Main.pref.put("draw.rawgps.lines.local"+specSp, null);
-            Main.pref.put("draw.rawgps.max-line-length"+specSp, null);
-            Main.pref.put("draw.rawgps.max-line-length.local"+specSp, null);
+            if (!locLayer)  {
+                Main.pref.put("draw.rawgps.lines"+specSp, null);
+                Main.pref.put("draw.rawgps.max-line-length"+specSp, null);
+            } else {
+                Main.pref.put("draw.rawgps.lines.local"+specSp, null);
+                Main.pref.put("draw.rawgps.max-line-length.local"+specSp, null);
+            }
             Main.pref.put("draw.rawgps.lines.force"+specSp, null);
             Main.pref.put("draw.rawgps.direction"+specSp, null);
             Main.pref.put("draw.rawgps.alternatedirection"+specSp, null);
             Main.pref.put("draw.rawgps.min-arrow-distance"+specSp, null);
         } else {
-            Main.pref.put("draw.rawgps.lines"+specSp, drawRawGpsLinesAll.isSelected());
-            Main.pref.put("draw.rawgps.lines.local"+specSp, drawRawGpsLinesAll.isSelected() || drawRawGpsLinesLocal.isSelected());
-            Main.pref.put("draw.rawgps.max-line-length"+specSp, drawRawGpsMaxLineLength.getText());
-            Main.pref.put("draw.rawgps.max-line-length.local"+specSp, drawRawGpsMaxLineLengthLocal.getText());
+            if (!locLayer) {
+                Main.pref.put("draw.rawgps.lines"+specSp, drawRawGpsLinesAll.isSelected());
+                Main.pref.put("draw.rawgps.max-line-length"+specSp, drawRawGpsMaxLineLength.getText());
+            } else {
+                Main.pref.put("draw.rawgps.lines.local"+specSp, drawRawGpsLinesAll.isSelected() || drawRawGpsLinesLocal.isSelected());
+                Main.pref.put("draw.rawgps.max-line-length.local"+specSp, drawRawGpsMaxLineLengthLocal.getText());
+            }
             Main.pref.put("draw.rawgps.lines.force"+specSp, forceRawGpsLines.isSelected());
             Main.pref.put("draw.rawgps.direction"+specSp, drawGpsArrows.isSelected());
             Main.pref.put("draw.rawgps.alternatedirection"+specSp, drawGpsArrowsFast.isSelected());
@@ -308,6 +322,6 @@
      * Save preferences from UI controls for initial layer or globally
      */
     public void savePreferences() {
-        savePreferences(null);
+        savePreferences(null, false);
     }
 }
