Changeset 2047 in josm for trunk/src/org/openstreetmap/josm/actions
- Timestamp:
- 2009-09-04T08:31:03+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
r2017 r2047 8 8 import java.io.File; 9 9 import java.io.IOException; 10 import java.util.Arrays; 11 import java.util.List; 10 12 11 13 import javax.swing.JFileChooser; … … 13 15 14 16 import org.openstreetmap.josm.Main; 17 import org.openstreetmap.josm.gui.PleaseWaitRunnable; 15 18 import org.openstreetmap.josm.io.FileImporter; 19 import org.openstreetmap.josm.io.OsmTransferException; 16 20 import org.openstreetmap.josm.tools.Shortcut; 21 import org.xml.sax.SAXException; 17 22 18 23 /** … … 37 42 return; 38 43 File[] files = fc.getSelectedFiles(); 39 for (int i = files.length; i > 0; --i) { 40 openFile(files[i-1]); 41 } 42 } 43 44 /** 45 * Open the given file. 46 */ 47 public void openFile(File file) { 48 try { 49 System.out.println("Open file: " + file.getAbsolutePath() + " (" + file.length() + " bytes)"); 50 for (FileImporter importer : ExtensionFileFilter.importers) 51 if (importer.acceptFile(file)) { 52 importer.importData(file); 53 } 54 } catch (IOException x) { 55 x.printStackTrace(); 56 JOptionPane.showMessageDialog( 57 Main.parent, 58 tr("<html>Could not read file ''{0}\''. Error is: <br>{1}</html>", file.getName(), x.getMessage()), 59 tr("Error"), 60 JOptionPane.ERROR_MESSAGE 61 ); 62 63 } 44 OpenFileTask task = new OpenFileTask(Arrays.asList(files)); 45 Main.worker.submit(task); 64 46 } 65 47 … … 68 50 setEnabled(! Main.applet); 69 51 } 52 53 static public void openFile(File f) throws IOException { 54 for (FileImporter importer : ExtensionFileFilter.importers) 55 if (importer.acceptFile(f)) { 56 importer.importData(f); 57 } 58 } 59 60 static public class OpenFileTask extends PleaseWaitRunnable { 61 private List<File> files; 62 private boolean cancelled; 63 64 public OpenFileTask(List<File> files) { 65 super(tr("Opening files"), false /* don't ignore exception */); 66 this.files = files; 67 } 68 @Override 69 protected void cancel() { 70 this.cancelled = true; 71 } 72 73 @Override 74 protected void finish() { 75 // do nothing 76 } 77 78 @Override 79 protected void realRun() throws SAXException, IOException, OsmTransferException { 80 if (files == null || files.isEmpty()) return; 81 getProgressMonitor().setTicks(files.size()); 82 for (File f : files) { 83 if (cancelled) return; 84 getProgressMonitor().subTask(tr("Opening file ''{0}'' ...", f.getAbsolutePath())); 85 try { 86 System.out.println("Open file: " + f.getAbsolutePath() + " (" + f.length() + " bytes)"); 87 openFile(f); 88 } catch (Exception e) { 89 e.printStackTrace(); 90 JOptionPane.showMessageDialog( 91 Main.parent, 92 tr("<html>Could not read file ''{0}\''.<br> Error is: <br>{1}</html>", f.getName(), e.getMessage()), 93 tr("Error"), 94 JOptionPane.ERROR_MESSAGE 95 ); 96 } 97 getProgressMonitor().worked(1); 98 } 99 } 100 } 70 101 }
Note:
See TracChangeset
for help on using the changeset viewer.