source: josm/trunk/src/org/openstreetmap/josm/io/OsmImporter.java@ 2875

Last change on this file since 2875 was 2851, checked in by jttt, 14 years ago

Added progress monitor to JpgImporter, allow to cancel importing

File size: 2.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.io.File;
7import java.io.FileInputStream;
8import java.io.FileNotFoundException;
9import java.io.IOException;
10import java.io.InputStream;
11
12import javax.swing.SwingUtilities;
13
14import org.openstreetmap.josm.Main;
15import org.openstreetmap.josm.actions.ExtensionFileFilter;
16import org.openstreetmap.josm.data.osm.DataSet;
17import org.openstreetmap.josm.gui.layer.OsmDataLayer;
18import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
19import org.openstreetmap.josm.gui.progress.ProgressMonitor;
20
21public class OsmImporter extends FileImporter {
22
23 public OsmImporter() {
24 super(new ExtensionFileFilter("osm,xml", "osm", tr("OSM Server Files") + " (*.osm *.xml)"));
25 }
26
27 public OsmImporter(ExtensionFileFilter filter) {
28 super(filter);
29 }
30
31 @Override public void importData(File file, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
32 try {
33 FileInputStream in = new FileInputStream(file);
34 importData(in, file);
35 } catch (FileNotFoundException e) {
36 e.printStackTrace();
37 throw new IOException(tr("File ''{0}'' does not exist.", file.getName()));
38 }
39 }
40
41 protected void importData(InputStream in, File associatedFile) throws IllegalDataException {
42 DataSet dataSet = OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE);
43 final OsmDataLayer layer = new OsmDataLayer(dataSet, associatedFile.getName(), associatedFile);
44 // FIXME: remove UI stuff from IO subsystem
45 //
46 Runnable uiStuff = new Runnable() {
47 public void run() {
48 Main.main.addLayer(layer);
49 layer.fireDataChange();
50 layer.onPostLoadFromFile();
51 }
52 };
53 if (SwingUtilities.isEventDispatchThread()) {
54 uiStuff.run();
55 } else {
56 SwingUtilities.invokeLater(uiStuff);
57 }
58 }
59}
Note: See TracBrowser for help on using the repository browser.