Changeset 2047 in josm


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

fixed #3324: Loading a File -> status message

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

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

    r2039 r2047  
    1111import java.awt.event.KeyEvent;
    1212import java.io.File;
     13import java.io.IOException;
    1314import java.net.URI;
    1415import java.net.URISyntaxException;
     
    3031import javax.swing.UIManager;
    3132
     33import org.openstreetmap.josm.actions.OpenFileAction;
    3234import org.openstreetmap.josm.actions.SaveAction;
    3335import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
     
    412414            dialog.setVisible(true);
    413415            switch(dialog.getUserAction()) {
    414             case CANCEL: return false;
    415             case PROCEED: return true;
    416             default: return false;
     416                case CANCEL: return false;
     417                case PROCEED: return true;
     418                default: return false;
    417419            }
    418420        }
     
    455457
    456458        switch(ed.getValue()) {
    457         case 2: /* discard and exit */ return true;
    458         case 3: /* cancel */ return false;
     459            case 2: /* discard and exit */ return true;
     460            case 3: /* cancel */ return false;
    459461        }
    460462        boolean savefailed = false;
     
    486488
    487489        if (s.startsWith("file:")) {
     490            File f = null;
    488491            try {
    489                 main.menu.openFile.openFile(new File(new URI(s)));
     492                f = new File(new URI(s));
    490493            } catch (URISyntaxException e) {
    491494                JOptionPane.showMessageDialog(
     
    496499                );
    497500            }
     501            try {
     502                if (f!=null) {
     503                    OpenFileAction.openFile(f);
     504                }
     505            }catch(IOException e) {
     506                e.printStackTrace();
     507                JOptionPane.showMessageDialog(
     508                        Main.parent,
     509                        tr("<html>Could not read file ''{0}\''.<br> Error is: <br>{1}</html>", f.getName(), e.getMessage()),
     510                        tr("Error"),
     511                        JOptionPane.ERROR_MESSAGE
     512                );
     513            }
    498514            return;
    499515        }
     
    508524            }
    509525        }
    510 
    511         main.menu.openFile.openFile(new File(s));
     526        File f = new File(s);
     527        try {
     528            OpenFileAction.openFile(f);
     529        }catch(IOException e) {
     530            e.printStackTrace();
     531            JOptionPane.showMessageDialog(
     532                    Main.parent,
     533                    tr("<html>Could not read file ''{0}\''.<br> Error is: <br>{1}</html>", f.getName(), e.getMessage()),
     534                    tr("Error"),
     535                    JOptionPane.ERROR_MESSAGE
     536            );
     537        }
    512538    }
    513539
  • 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}
  • trunk/src/org/openstreetmap/josm/gui/FileDrop.java

    r2039 r2047  
    99import java.io.PrintStream;
    1010import java.io.Reader;
     11import java.util.Arrays;
    1112import java.util.List;
    1213
    1314import javax.swing.BorderFactory;
    1415
     16import org.openstreetmap.josm.Main;
    1517import org.openstreetmap.josm.actions.OpenFileAction;
    1618
     
    7072
    7173    /* Constructor for JOSM file drop */
    72     public FileDrop(final java.awt.Component c)
    73     {   this(
    74             null,  // Logging stream
    75             c,     // Drop target
    76             BorderFactory.createMatteBorder( 2, 2, 2, 2, defaultBorderColor ), // Drag border
    77             true, // Recursive
    78             new FileDrop.Listener()
    79             {
    80                 public void filesDropped( java.io.File[] files )
    81                 {
    82                     OpenFileAction ofa = new OpenFileAction();
    83                     for( int i = 0; i < files.length; i++ )
    84                     {
    85                         ofa.openFile(files[i]);
    86                     }   // end for: through each dropped file
    87                 }   // end filesDropped
    88             }); // end FileDrop.Listener
     74    public FileDrop(final java.awt.Component c){
     75        this(
     76                null,  // Logging stream
     77                c,     // Drop target
     78                BorderFactory.createMatteBorder( 2, 2, 2, 2, defaultBorderColor ), // Drag border
     79                true, // Recursive
     80                new FileDrop.Listener(){
     81                    public void filesDropped( java.io.File[] files ){
     82                        // start asynchronous loading of files
     83                        OpenFileAction.OpenFileTask task = new OpenFileAction.OpenFileTask(Arrays.asList(files));
     84                        Main.worker.submit(task);
     85                    }
     86                }
     87        );
    8988    }
    90 
    9189
    9290    /**
Note: See TracChangeset for help on using the changeset viewer.