Ignore:
Timestamp:
2009-09-04T08:31:03+02:00 (15 years ago)
Author:
Gubaer
Message:

fixed #3324: Loading a File -> status message

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java

    r2017 r2047  
    88import java.io.File;
    99import java.io.IOException;
     10import java.util.Arrays;
     11import java.util.List;
    1012
    1113import javax.swing.JFileChooser;
     
    1315
    1416import org.openstreetmap.josm.Main;
     17import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    1518import org.openstreetmap.josm.io.FileImporter;
     19import org.openstreetmap.josm.io.OsmTransferException;
    1620import org.openstreetmap.josm.tools.Shortcut;
     21import org.xml.sax.SAXException;
    1722
    1823/**
     
    3742            return;
    3843        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);
    6446    }
    6547
     
    6850        setEnabled(! Main.applet);
    6951    }
     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    }
    70101}
Note: See TracChangeset for help on using the changeset viewer.