The attached patch modifies the options for GPX line drawing to allow
lines to be drawn only for files loaded from a local drive, and not for
layers downloaded from the OSM server. Per-layer/file preferences still
override this behaviour.


-- 
Jonathan (Jonobennett)
# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: Z:\Projects\JOSM\src
# This patch can be applied using context Tools: Patch action on respective 
folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
Index: org/openstreetmap/josm/actions/OpenFileAction.java
--- org/openstreetmap/josm/actions/OpenFileAction.java Base (BASE)
+++ org/openstreetmap/josm/actions/OpenFileAction.java Locally Modified (Based 
On LOCAL)
@@ -116,7 +116,7 @@
             }
             r = new GpxReader(is,file.getAbsoluteFile().getParentFile());
             r.data.storageFile = file;
-            GpxLayer gpxLayer = new GpxLayer(r.data, fn);
+            GpxLayer gpxLayer = new GpxLayer(r.data, fn, true);
             Main.main.addLayer(gpxLayer);
             if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
                 MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from 
{0}", fn), file, gpxLayer);
@@ -154,7 +154,7 @@
             NmeaReader r = new NmeaReader(new FileInputStream(file), 
file.getAbsoluteFile().getParentFile());
             if(r.getNumberOfCoordinates()>0) {
                 r.data.storageFile = file;
-                GpxLayer gpxLayer = new GpxLayer(r.data, fn);
+                GpxLayer gpxLayer = new GpxLayer(r.data, fn, true);
                 Main.main.addLayer(gpxLayer);
                 if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
                     MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from 
{0}", fn), file, gpxLayer);
Index: org/openstreetmap/josm/gui/layer/GpxLayer.java
--- org/openstreetmap/josm/gui/layer/GpxLayer.java Base (BASE)
+++ org/openstreetmap/josm/gui/layer/GpxLayer.java Locally Modified (Based On 
LOCAL)
@@ -82,6 +82,7 @@
     private Color computeCacheColorUsed;
     private colorModes computeCacheColored;
     private int computeCacheColorTracksTune;
+       private boolean isLocalFile;
 
     public GpxLayer(GpxData d) {
         super((String) d.attr.get("name"));
@@ -95,6 +96,12 @@
         this.name = name;
     }
 
+       public GpxLayer(GpxData d, String name, boolean isLocal) {
+               this(d);
+               this.name = name;
+               this.isLocalFile = isLocal;
+       }
+
     @Override public Icon getIcon() {
         return ImageProvider.get("layer", "gpx_small");
     }
@@ -389,7 +396,7 @@
         // don't draw lines if longer than x meters
         int maxLineLength = 
Main.pref.getInteger("draw.rawgps.max-line-length", -1);
         // draw line between points, global setting
-        boolean lines = Main.pref.getBoolean("draw.rawgps.lines");
+        boolean lines = (Main.pref.getBoolean("draw.rawgps.lines") || 
(Main.pref.getBoolean("draw.rawgps.lines.localfiles") && this.isLocalFile));
         String linesKey = "draw.rawgps.lines.layer "+name;
         // draw lines, per-layer setting
         if (Main.pref.hasKey(linesKey))
Index: org/openstreetmap/josm/gui/preferences/DrawingPreference.java
--- org/openstreetmap/josm/gui/preferences/DrawingPreference.java Base (BASE)
+++ org/openstreetmap/josm/gui/preferences/DrawingPreference.java Locally 
Modified (Based On LOCAL)
@@ -26,7 +26,11 @@
 
 public class DrawingPreference implements PreferenceSetting {
 
-    private JCheckBox drawRawGpsLines = new JCheckBox(tr("Draw lines between 
raw gps points."));
+    private ButtonGroup gpsLinesGroup;
+       private JRadioButton drawRawGpsLinesAll = new JRadioButton(tr("All"));
+    private JRadioButton drawRawGpsLinesLocal = new JRadioButton(tr("Local 
files"));
+       private JRadioButton drawRawGpsLinesNone = new JRadioButton(tr("None"));
+       private ActionListener drawRawGpsLinesActionListener;
     private JTextField drawRawGpsMaxLineLength = new JTextField(8);
     private JCheckBox forceRawGpsLines = new JCheckBox(tr("Force lines if no 
segments imported."));
     private JCheckBox largeGpsPoints = new JCheckBox(tr("Draw large GPS 
points."));
@@ -53,30 +57,49 @@
         panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
 
         // drawRawGpsLines
-        drawRawGpsLines.addActionListener(new ActionListener(){
+               gpsLinesGroup = new ButtonGroup();
+               gpsLinesGroup.add(drawRawGpsLinesNone);
+               gpsLinesGroup.add(drawRawGpsLinesLocal);
+               gpsLinesGroup.add(drawRawGpsLinesAll);
+
+               if(Main.pref.getBoolean("draw.rawgps.lines")) {
+                       drawRawGpsLinesAll.setSelected(true);
+               } else if 
(Main.pref.getBoolean("draw.rawgps.lines.localfiles")) {
+                       drawRawGpsLinesLocal.setSelected(true);
+               } else {
+                       drawRawGpsLinesNone.setSelected(true);
+               }
+               
+               panel.add(new JLabel(tr("Draw lines between raw GPS points")), 
GBC.eol().insets(20,0,0,0));
+        panel.add(drawRawGpsLinesNone, GBC.eol().insets(40,0,0,0));
+        panel.add(drawRawGpsLinesLocal, GBC.eol().insets(40,0,0,0));
+        panel.add(drawRawGpsLinesAll, GBC.eol().insets(40,0,0,0));
+
+           drawRawGpsLinesActionListener = new ActionListener(){
             public void actionPerformed(ActionEvent e) {
-                forceRawGpsLines.setEnabled(drawRawGpsLines.isSelected());
-                
drawRawGpsMaxLineLength.setEnabled(drawRawGpsLines.isSelected());
-                drawGpsArrows.setEnabled(drawRawGpsLines.isSelected());
+                forceRawGpsLines.setEnabled(!drawRawGpsLinesNone.isSelected());
+                
drawRawGpsMaxLineLength.setEnabled(!drawRawGpsLinesNone.isSelected());
+                drawGpsArrows.setEnabled(!drawRawGpsLinesNone.isSelected() );
                 drawGpsArrowsFast.setEnabled(drawGpsArrows.isSelected() && 
drawGpsArrows.isEnabled());
                 drawGpsArrowsMinDist.setEnabled(drawGpsArrows.isSelected() && 
drawGpsArrows.isEnabled());
             }
-        });
-        drawRawGpsLines.setSelected(Main.pref.getBoolean("draw.rawgps.lines"));
-        drawRawGpsLines.setToolTipText(tr("If your gps device draws too few 
lines, select this to draw lines along your way."));
-        panel.add(drawRawGpsLines, GBC.eol().insets(20,0,0,0));
+        };
 
+               
drawRawGpsLinesNone.addActionListener(drawRawGpsLinesActionListener);
+               
drawRawGpsLinesLocal.addActionListener(drawRawGpsLinesActionListener);
+               
drawRawGpsLinesAll.addActionListener(drawRawGpsLinesActionListener);
+
         // drawRawGpsMaxLineLength
         
drawRawGpsMaxLineLength.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.max-line-length",
 -1)));
         drawRawGpsMaxLineLength.setToolTipText(tr("Maximum length (in meters) 
to draw lines. Set to '-1' to draw all lines."));
-        drawRawGpsMaxLineLength.setEnabled(drawRawGpsLines.isSelected());
+        drawRawGpsMaxLineLength.setEnabled(!drawRawGpsLinesNone.isSelected());
         panel.add(new JLabel(tr("Maximum length (meters)")), 
GBC.std().insets(40,0,0,0));
         panel.add(drawRawGpsMaxLineLength, 
GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
 
         // forceRawGpsLines
         forceRawGpsLines.setToolTipText(tr("Force drawing of lines if the 
imported data contain no line information."));
         
forceRawGpsLines.setSelected(Main.pref.getBoolean("draw.rawgps.lines.force"));
-        forceRawGpsLines.setEnabled(drawRawGpsLines.isSelected());
+        forceRawGpsLines.setEnabled(!drawRawGpsLinesNone.isSelected());
         panel.add(forceRawGpsLines, GBC.eop().insets(40,0,0,0));
 
         // drawGpsArrows
@@ -88,7 +111,7 @@
         });
         drawGpsArrows.setToolTipText(tr("Draw direction arrows for lines, 
connecting GPS points."));
         
drawGpsArrows.setSelected(Main.pref.getBoolean("draw.rawgps.direction"));
-        drawGpsArrows.setEnabled(drawRawGpsLines.isSelected());
+        drawGpsArrows.setEnabled(!drawRawGpsLinesNone.isSelected());
         panel.add(drawGpsArrows, GBC.eop().insets(40,0,0,0));
 
         // drawGpsArrowsFast
@@ -220,7 +243,8 @@
     }
 
     public boolean ok() {
-        Main.pref.put("draw.rawgps.lines", drawRawGpsLines.isSelected());
+        Main.pref.put("draw.rawgps.lines", drawRawGpsLinesAll.isSelected());
+        Main.pref.put("draw.rawgps.lines.localfiles", 
drawRawGpsLinesLocal.isSelected());
         Main.pref.put("draw.rawgps.max-line-length", 
drawRawGpsMaxLineLength.getText());
         Main.pref.put("draw.rawgps.lines.force", 
forceRawGpsLines.isSelected());
         Main.pref.put("draw.rawgps.direction", drawGpsArrows.isSelected());
_______________________________________________
josm-dev mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/josm-dev

Reply via email to