Changeset 3924 in josm for trunk/src/org/openstreetmap/josm


Ignore:
Timestamp:
2011-02-21T21:44:31+01:00 (13 years ago)
Author:
bastiK
Message:

applied #5757 - Getting rid of not existing files in "Open Recent" (anonymous contribution)

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

Legend:

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

    r3815 r3924  
    476476            if(!fileList.isEmpty())
    477477            {
    478                 OpenFileAction.openFiles(fileList);
     478                OpenFileAction.openFiles(fileList, true);
    479479            }
    480480        }
  • trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java

    r3758 r3924  
    1414import java.util.Collection;
    1515import java.util.Collections;
     16import java.util.HashSet;
    1617import java.util.LinkedHashSet;
    1718import java.util.LinkedList;
     
    7374     */
    7475    static public void openFiles(List<File> fileList) {
     76        openFiles(fileList, false);
     77    }
     78
     79    static public void openFiles(List<File> fileList, boolean recordHistory) {
    7580        OpenFileTask task = new OpenFileTask(fileList, null);
     81        task.setRecordHistory(recordHistory);
    7682        Main.worker.submit(task);
    7783    }
     
    225231            } else {
    226232                // find appropriate importer
    227                 MultiMap<FileImporter, File> map = new MultiMap<FileImporter, File>();
     233                MultiMap<FileImporter, File> importerMap = new MultiMap<FileImporter, File>();
    228234                List<File> filesWithUnknownImporter = new LinkedList<File>();
    229235                FILES: for (File f : files) {
    230236                    for (FileImporter importer : ExtensionFileFilter.importers) {
    231237                        if (importer.acceptFile(f)) {
    232                             map.put(importer, f);
     238                            importerMap.put(importer, f);
    233239                            continue FILES;
    234240                        }
     
    239245                    alertFilesWithUnknownImporter(filesWithUnknownImporter);
    240246                }
    241                 List<FileImporter> ims = new ArrayList<FileImporter>(map.keySet());
    242                 Collections.sort(ims);
    243                 Collections.reverse(ims);
     247                List<FileImporter> importers = new ArrayList<FileImporter>(importerMap.keySet());
     248                Collections.sort(importers);
     249                Collections.reverse(importers);
    244250
    245251                Set<String> fileHistory = new LinkedHashSet<String>();
    246 
    247                 for (FileImporter importer : ims) {
    248                     List<File> files = new ArrayList<File>(map.get(importer));
     252                Set<String> failedAll = new HashSet<String>();
     253
     254                for (FileImporter importer : importers) {
     255                    List<File> files = new ArrayList<File>(importerMap.get(importer));
    249256                    importData(importer, files);
     257                    // suppose all files will fail to load
     258                    List<File> failedFiles = new ArrayList<File>(files);
    250259
    251260                    if (recordHistory && !importer.isBatchImporter()) {
    252                         for (File f : files) {
     261                        // remove the files which didn't fail to load from the failed list
     262                        failedFiles.removeAll(successfullyOpenedFiles);
     263                        for (File f : successfullyOpenedFiles) {
    253264                            fileHistory.add(f.getPath());
     265                        }
     266                        for (File f : failedFiles) {
     267                            failedAll.add(f.getPath());
    254268                        }
    255269                    }
     
    259273                    Collection<String> oldFileHistory = Main.pref.getCollection("file-open.history");
    260274                    fileHistory.addAll(oldFileHistory);
     275                    // remove the files which failed to load from the list
     276                    fileHistory.removeAll(failedAll);
    261277                    int maxsize = Math.max(0, Main.pref.getInteger("file-open.history.max-size", 15));
    262278                    Collection<String> trimmedFileHistory = new ArrayList<String>(Math.min(maxsize, fileHistory.size()));
Note: See TracChangeset for help on using the changeset viewer.