[josm-dev] [PATCH] Allow line drawing for local GPX files only

Stefan Breunig stefan at mathphys.fsk.uni-heidelberg.de
Wed Mar 25 19:17:58 GMT 2009


Why isn't the current method suitable? All downloaded layers have the
same name and therefore are normally customizable without additional
effort.

Greetings
xeen

2009/3/25 Jonathan Bennett <openstreetmap at jonno.cix.co.uk>:
> 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
> josm-dev at openstreetmap.org
> http://lists.openstreetmap.org/listinfo/josm-dev
>
>



-- 
Please encrypt your mail:
http://mathphys.fsk.uni-heidelberg.de/~stefan/publickey.asc
FP: 2620 E737 FD50 60AB 86B6 1B9D 3BFD AFFB 5B15 6893




More information about the josm-dev mailing list