Ignore:
Timestamp:
2016-02-06T22:04:49+01:00 (8 years ago)
Author:
Don-vip
Message:

fix #12497 - add support for notes in session files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/NoteImporter.java

    r8895 r9746  
    3737        }
    3838        try (InputStream is = Compression.getUncompressedFileInputStream(file)) {
    39             final List<Note> fileNotes = new NoteReader(is).parse();
    40 
    41             List<NoteLayer> noteLayers = null;
    42             if (Main.map != null) {
    43                 noteLayers = Main.map.mapView.getLayersOfType(NoteLayer.class);
    44             }
    45             if (noteLayers != null && !noteLayers.isEmpty()) {
    46                 noteLayers.get(0).getNoteData().addNotes(fileNotes);
    47             } else {
     39            final NoteLayer layer = loadLayer(is, file, file.getName(), progressMonitor);
     40            if (!Main.map.mapView.hasLayer(layer)) {
    4841                GuiHelper.runInEDT(new Runnable() {
    4942                    @Override
    5043                    public void run() {
    51                         Main.main.addLayer(new NoteLayer(fileNotes, file.getName()));
     44                        Main.main.addLayer(layer);
    5245                    }
    5346                });
     
    5952        }
    6053    }
     54
     55    /**
     56     * Load note layer from InputStream.
     57     * @param in input stream
     58     * @param associatedFile filename of data (can be <code>null</code> if the stream does not come from a file)
     59     * @param layerName name of generated layer
     60     * @param progressMonitor handler for progress monitoring and canceling
     61     * @return note layer
     62     * @throws IOException
     63     * @throws SAXException
     64     * @since 9746
     65     */
     66    public NoteLayer loadLayer(InputStream in, final File associatedFile, final String layerName, ProgressMonitor progressMonitor)
     67            throws SAXException, IOException {
     68        final List<Note> fileNotes = new NoteReader(in).parse();
     69        List<NoteLayer> noteLayers = null;
     70        if (Main.map != null) {
     71            noteLayers = Main.map.mapView.getLayersOfType(NoteLayer.class);
     72        }
     73        final NoteLayer layer;
     74        if (noteLayers != null && !noteLayers.isEmpty()) {
     75            layer = noteLayers.get(0);
     76            layer.getNoteData().addNotes(fileNotes);
     77        } else {
     78            layer = new NoteLayer(fileNotes, associatedFile != null ? associatedFile.getName() : tr("Notes"));
     79        }
     80        return layer;
     81    }
    6182}
Note: See TracChangeset for help on using the changeset viewer.