Changeset 34481 in osm for applications/editors/josm


Ignore:
Timestamp:
2018-08-15T14:16:40+02:00 (6 years ago)
Author:
donvip
Message:

fix #josm16543 - Enable downloading of Multiple Tracks and use names (patch by reubot)

Location:
applications/editors/josm/plugins/DirectDownload
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/DirectDownload/.project

    r32286 r34481  
    1616                        </arguments>
    1717                </buildCommand>
     18                <buildCommand>
     19                        <name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
     20                        <arguments>
     21                        </arguments>
     22                </buildCommand>
    1823        </buildSpec>
    1924        <natures>
    2025                <nature>org.eclipse.jdt.core.javanature</nature>
     26                <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
    2127        </natures>
    2228</projectDescription>
  • applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/DirectDownload.java

    r34381 r34481  
    55
    66import java.awt.event.ActionEvent;
     7import java.util.ArrayList;
     8import java.util.HashMap;
    79
    810import org.openstreetmap.josm.Main;
    911import org.openstreetmap.josm.actions.JosmAction;
    1012import org.openstreetmap.josm.data.gpx.GpxData;
     13import org.openstreetmap.josm.data.gpx.GpxTrack;
     14import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
     15import org.openstreetmap.josm.data.gpx.GpxConstants;
     16import org.openstreetmap.josm.data.gpx.ImmutableGpxTrack;
    1117import org.openstreetmap.josm.gui.MainApplication;
    1218import org.openstreetmap.josm.gui.MainMenu;
     
    1723
    1824public class DirectDownload extends Plugin {
     25
    1926    private DownloadAction openaction;
    2027
     
    3239
    3340    static class DownloadAction extends JosmAction {
    34         public DownloadAction() {
     41        DownloadAction() {
    3542            super(tr("Download Track ..."), "DownloadAction",
    3643                    tr("Download GPX track from openstreetmap.org"), null, false);
     
    4249            go.setVisible(true);
    4350
    44             UserTrack track = go.getSelectedUserTrack();
     51            ArrayList<UserTrack> tracks = go.getSelectedUserTracks();
    4552
    46             if (!((go.getValue() == 1) && (track != null))) {
     53            if (!((go.getValue() == 1) && (tracks != null))) {
    4754                return;
    4855            }
    4956
    50             final GpxData data = new GpxServerReader().loadGpx(Long.parseLong(track.id));
    51             if (data == null) {
    52                 return;
    53             }
    54             final GpxLayer gpxLayer = new GpxLayer(data);
     57            for (UserTrack track: tracks) {
    5558
    56             if (data.hasRoutePoints() || data.hasTrackPoints()) {
    57                 MainApplication.getLayerManager().addLayer(gpxLayer);
    58             }
     59                GpxData data = new GpxServerReader().loadGpx(Long.parseLong(track.id));
     60                if (data == null) {
     61                    return;
     62                }
    5963
    60             if (Main.pref.getBoolean("marker.makeautomarkers", true) && !data.waypoints.isEmpty()) {
    61                 MarkerLayer ml = new MarkerLayer(data, tr("Markers from {0}", track.filename), null, gpxLayer);
    62                 if (ml.data.size() > 0) {
    63                     MainApplication.getLayerManager().addLayer(ml);
     64                for (GpxTrack trk : data.getTracks()) {
     65                    HashMap<String, Object> attrib = new HashMap<String, Object>(trk.getAttributes());
     66                    if (!trk.getAttributes().containsKey(GpxConstants.GPX_NAME)) {
     67                        System.out.println(track.filename);
     68                        attrib.put(GpxConstants.GPX_NAME, track.filename);
     69                    }
     70                    if (!trk.getAttributes().containsKey(GpxConstants.GPX_DESC)) {
     71                        System.out.println(track.description);
     72                        attrib.put(GpxConstants.GPX_DESC, track.description);
     73                    }
     74                    // replace the existing trace in the unmodifiable tracks
     75                    data.removeTrack(trk);
     76                    trk = new ImmutableGpxTrack(new ArrayList<GpxTrackSegment>(trk.getSegments()), attrib);
     77                    data.addTrack(trk);
     78                }
     79
     80                final GpxLayer gpxLayer = new GpxLayer(data, (track.filename + " " + track.description).trim());
     81
     82                if (data.hasRoutePoints() || data.hasTrackPoints()) {
     83                    MainApplication.getLayerManager().addLayer(gpxLayer);
     84                }
     85
     86                if (Main.pref.getBoolean("marker.makeautomarkers", true) && !data.waypoints.isEmpty()) {
     87                    MarkerLayer ml = new MarkerLayer(data, tr("Markers from {0}", track.filename), null, gpxLayer);
     88                    if (ml.data.size() > 0) {
     89                        MainApplication.getLayerManager().addLayer(ml);
     90                    }
    6491                }
    6592            }
  • applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/DownloadDataGui.java

    r34381 r34481  
    4848        tblSearchResults = new JTable(model, columnmodel);
    4949        tblSearchResults.setSelectionModel(selectionModel);
    50         tblSearchResults.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     50        tblSearchResults.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    5151        JScrollPane scrollPane = new JScrollPane(tblSearchResults);
    52         scrollPane.setPreferredSize(new Dimension(800,300));
     52        scrollPane.setPreferredSize(new Dimension(800, 300));
    5353        panel.add(scrollPane, BorderLayout.CENTER);
    5454
     
    6363        private ListSelectionModel selectionModel;
    6464
    65         public NamedResultTableModel(ListSelectionModel selectionModel) {
     65        NamedResultTableModel(ListSelectionModel selectionModel) {
    6666            data = new ArrayList<>();
    6767            this.selectionModel = selectionModel;
     
    8484                this.data.clear();
    8585            } else {
    86                 this.data  =new ArrayList<>(data);
     86                this.data = new ArrayList<>(data);
    8787            }
    8888            fireTableDataChanged();
     89        }
     90
     91        public ArrayList<UserTrack> getDataArrayList() {
     92            return data;
    8993        }
    9094
     
    101105    }
    102106
     107    public ArrayList<UserTrack> getSelectedUserTracks() {
     108        ArrayList<UserTrack> DataArray = model.getDataArrayList();
     109        int[] selected = tblSearchResults.getSelectedRows();
     110        ArrayList<UserTrack> selectedTracks = new ArrayList<>(selected.length);
     111        for (int i = 0; i < selected.length; i++) {
     112            selectedTracks.add(DataArray.get(selected[i]));
     113        }
     114        return selectedTracks;
     115    }
     116
    103117    public UserTrack getSelectedUserTrack() {
    104118        return model.getSelectedUserTrack();
     
    135149
    136150            // column 3 - tags
    137         /*
     151
    138152            col = new TableColumn(3);
    139153            col.setHeaderValue(tr("Tags"));
     
    142156            col.setCellRenderer(renderer);
    143157            addColumn(col);
    144         */
    145         }
    146 
    147         public NamedResultTableColumnModel() {
     158
     159        }
     160
     161        NamedResultTableColumnModel() {
    148162            createColumns();
    149163        }
     
    152166    static class NamedResultCellRenderer extends JLabel implements TableCellRenderer {
    153167
    154         public NamedResultCellRenderer() {
     168        NamedResultCellRenderer() {
    155169            setOpaque(true);
    156             setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
     170            setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
    157171        }
    158172
     
    173187
    174188        @Override
    175                 public Component getTableCellRendererComponent(JTable table, Object value,
     189        public Component getTableCellRendererComponent(JTable table, Object value,
    176190                boolean isSelected, boolean hasFocus, int row, int column) {
    177191
     
    191205                setText(sr.description);
    192206                break;
    193         /*
     207
    194208            case 3:
    195209                setText(sr.tags);
    196210                break;
    197         */
     211
    198212            }
    199213            return this;
  • applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/GpxServerReader.java

    r34381 r34481  
    11// License: GPL. For details, see LICENSE file.
    22package org.openstreetmap.josm.plugins.directdownload;
     3
     4import static org.openstreetmap.josm.tools.I18n.tr;
     5
     6import java.io.IOException;
     7import java.io.InputStream;
     8import java.net.URL;
     9
     10import javax.swing.JOptionPane;
    311
    412import org.openstreetmap.josm.Main;
     
    1220import org.xml.sax.SAXException;
    1321
    14 import javax.swing.*;
    15 import java.io.IOException;
    16 import java.io.InputStream;
    17 import java.net.URL;
    18 
    19 import static org.openstreetmap.josm.tools.I18n.tr;
    20 
    2122public class GpxServerReader extends OsmConnection {
    2223
     
    2829            addAuth(client);
    2930
    30             try (final InputStream in = client.connect().uncompressAccordingToContentDisposition(true).getContent()) {
     31            try (InputStream in = client.connect().uncompressAccordingToContentDisposition(true).getContent()) {
    3132                final GpxReader r = new GpxReader(in);
    3233                boolean parsedProperly = r.parse(true);
  • applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/UserTrackReader.java

    r34381 r34481  
    4141
    4242            //parse the file and also register this class for call backs
    43             try (final InputStream in = client.connect().getContent()) {
     43            try (InputStream in = client.connect().getContent()) {
    4444                sp.parse(in, handler);
    4545            }
     
    8080
    8181        @Override
    82         public void characters(char ch[], int start, int length)
     82        public void characters(char[] ch, int start, int length)
    8383                throws SAXException {
    8484            cdata += new String(ch, start, length);
     
    8989            if (qName.equals("description")) {
    9090                data.getFirst().description = cdata;
     91            } else if (qName.equals("tag")) {
     92                data.getFirst().tags = cdata;
     93                cdata = new String();
    9194            }
    92             /*
    93             else if (qName.equals("tag")) {
    94             data.getFirst().tags = cdata;
    95             cdata = new String();
    96             }
    97             */
     95
    9896        }
    9997
Note: See TracChangeset for help on using the changeset viewer.