Changeset 4695 in josm
- Timestamp:
- 2011-12-22T11:49:23+01:00 (13 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java
r4668 r4695 127 127 cancel(); 128 128 throw e; 129 } catch ( Throwable t) {129 } catch (Error e) { 130 130 cancel(); 131 throw new RuntimeException(t);131 throw e; 132 132 } 133 133 } -
trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java
r3707 r4695 4 4 import java.awt.Component; 5 5 import java.awt.Container; 6 7 import javax.swing.SwingUtilities; 6 8 7 9 /** … … 24 26 } 25 27 28 public static void runInEDT(Runnable task) { 29 if (SwingUtilities.isEventDispatchThread()) { 30 task.run(); 31 } else { 32 SwingUtilities.invokeLater(task); 33 } 34 } 35 26 36 } -
trunk/src/org/openstreetmap/josm/io/GpxImporter.java
r4310 r4695 19 19 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer; 20 20 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 21 import org.openstreetmap.josm.gui.util.GuiHelper; 21 22 import org.xml.sax.SAXException; 22 23 23 24 public class GpxImporter extends FileImporter { 25 26 protected GpxLayer gpxLayer; 27 protected MarkerLayer markerLayer; 28 protected Runnable postLayerTask; 24 29 25 30 public GpxImporter() { … … 27 32 } 28 33 29 @Override public void importData(final File file, ProgressMonitor progressMonitor) throws IOException { 30 final String fn = file.getName(); 34 @Override public void importData(File file, ProgressMonitor progressMonitor) throws IOException { 35 InputStream is; 36 if (file.getName().endsWith(".gpx.gz")) { 37 is = new GZIPInputStream(new FileInputStream(file)); 38 } else { 39 is = new FileInputStream(file); 40 } 41 String fileName = file.getName(); 42 loadLayers(is, file, fileName, tr("Markers from {0}", fileName), progressMonitor); 31 43 44 // FIXME: remove UI stuff from the IO subsystem 45 GuiHelper.runInEDT(new Runnable() { 46 public void run() { 47 if (markerLayer != null) { 48 Main.main.addLayer(markerLayer); 49 } 50 if (gpxLayer != null) { 51 Main.main.addLayer(gpxLayer); 52 } 53 postLayerTask.run(); 54 } 55 }); 56 } 57 58 public void loadLayers(InputStream is, final File associatedFile, 59 final String gpxLayerName, String markerLayerName, ProgressMonitor progressMonitor) throws IOException { 32 60 try { 33 InputStream is;34 if (file.getName().endsWith(".gpx.gz")) {35 is = new GZIPInputStream(new FileInputStream(file));36 } else {37 is = new FileInputStream(file);38 }39 61 final GpxReader r = new GpxReader(is); 40 62 final boolean parsedProperly = r.parse(true); 41 r.data.storageFile = file; 42 final GpxLayer gpxLayer = new GpxLayer(r.data, fn, true); 43 44 // FIXME: remove UI stuff from the IO subsystem 45 // 46 Runnable task = new Runnable() { 63 r.data.storageFile = associatedFile; 64 if (r.data.hasRoutePoints() || r.data.hasTrackPoints()) { 65 gpxLayer = new GpxLayer(r.data, gpxLayerName, associatedFile != null); 66 } 67 if (Main.pref.getBoolean("marker.makeautomarkers", true) && !r.data.waypoints.isEmpty()) { 68 markerLayer = new MarkerLayer(r.data, markerLayerName, associatedFile, gpxLayer); 69 if (markerLayer.data.size() == 0) { 70 markerLayer = null; 71 } 72 } 73 postLayerTask = new Runnable() { 74 @Override 47 75 public void run() { 48 if (r.data.hasRoutePoints() || r.data.hasTrackPoints()) { 49 Main.main.addLayer(gpxLayer); 50 } 51 if (Main.pref.getBoolean("marker.makeautomarkers", true) && !r.data.waypoints.isEmpty()) { 52 MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), file, gpxLayer); 53 if (ml.data.size() > 0) { 54 Main.main.addLayer(ml); 76 if (!parsedProperly) { 77 String msg; 78 if (associatedFile == null) { 79 msg = tr("Error occurred while parsing gpx data for layer ''{0}''. Only a part of the file will be available.", 80 gpxLayerName); 81 } else { 82 msg = tr("Error occurred while parsing gpx file ''{0}''. Only a part of the file will be available.", 83 associatedFile.getPath()); 55 84 } 56 } 57 if (!parsedProperly) { 58 JOptionPane.showMessageDialog(null, tr("Error occurred while parsing gpx file {0}. Only a part of the file will be available.", file.getName())); 85 JOptionPane.showMessageDialog(null, msg); 59 86 } 60 87 } 61 88 }; 62 if (SwingUtilities.isEventDispatchThread()) {63 task.run();64 } else {65 SwingUtilities.invokeLater(task);66 }67 } catch (FileNotFoundException e) {68 e.printStackTrace();69 throw new IOException(tr("File \"{0}\" does not exist", file.getName()));70 89 } catch (SAXException e) { 71 90 e.printStackTrace(); 72 throw new IOException(tr("Parsing file \"{0}\" failed", file.getName()));91 throw new IOException(tr("Parsing data for layer ''{0}'' failed", gpxLayerName)); 73 92 } 74 93 } 94 95 public GpxLayer getGpxLayer() { 96 return gpxLayer; 97 } 98 99 public MarkerLayer getMarkerLayer() { 100 return markerLayer; 101 } 102 103 public Runnable getPostLayerTask() { 104 return postLayerTask; 105 } 75 106 } -
trunk/src/org/openstreetmap/josm/io/OsmImporter.java
r4687 r4695 19 19 import org.openstreetmap.josm.gui.progress.NullProgressMonitor; 20 20 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 21 import org.openstreetmap.josm.gui.util.GuiHelper; 21 22 22 23 public class OsmImporter extends FileImporter { 23 24 24 pr ivateOsmDataLayer layer;25 pr ivateRunnable postLayerTask;25 protected OsmDataLayer layer; 26 protected Runnable postLayerTask; 26 27 27 28 public OsmImporter() { … … 47 48 loadLayer(in, associatedFile, associatedFile == null ? OsmDataLayer.createNewName() : associatedFile.getName(), NullProgressMonitor.INSTANCE); 48 49 // FIXME: remove UI stuff from IO subsystem 49 Runnable uiStuff =new Runnable() {50 GuiHelper.runInEDT(new Runnable() { 50 51 @Override 51 52 public void run() { … … 54 55 layer.onPostLoadFromFile(); 55 56 } 56 }; 57 if (SwingUtilities.isEventDispatchThread()) { 58 uiStuff.run(); 59 } else { 60 SwingUtilities.invokeLater(uiStuff); 61 } 57 }); 62 58 } 63 59
Note:
See TracChangeset
for help on using the changeset viewer.