Ignore:
Timestamp:
2010-12-10T10:15:21+01:00 (13 years ago)
Author:
bastiK
Message:

new list of recently opened files; little preference rework

File:
1 edited

Legend:

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

    r3679 r3710  
    1414import java.util.Collection;
    1515import java.util.Collections;
     16import java.util.LinkedHashSet;
    1617import java.util.LinkedList;
    1718import java.util.List;
    1819
     20import java.util.Set;
    1921import javax.swing.JFileChooser;
    2022import javax.swing.JOptionPane;
     
    5759        File[] files = fc.getSelectedFiles();
    5860        OpenFileTask task = new OpenFileTask(Arrays.asList(files), fc.getFileFilter());
     61        task.setRecordHistory(true);
    5962        Main.worker.submit(task);
    6063    }
     
    7982        private FileFilter fileFilter;
    8083        private boolean cancelled;
     84        private boolean recordHistory = false;
    8185
    8286        public OpenFileTask(List<File> files, FileFilter fileFilter, String title) {
     
    8892        public OpenFileTask(List<File> files, FileFilter fileFilter) {
    8993            this(files, fileFilter, tr("Opening files"));
     94        }
     95
     96        /**
     97         * save filename in history (for list of recently opened files)
     98         * default: false
     99         */
     100        public void setRecordHistory(boolean recordHistory) {
     101            this.recordHistory = recordHistory;
     102        }
     103
     104        public boolean isRecordHistory() {
     105            return recordHistory;
    90106        }
    91107
     
    167183            }
    168184            /**
    169              * If the filter wasn't changed in the dialog, chosenImporter is null now.
    170              * When the filter was explicitly set to AllFormatsImporter, treat this the same.
     185             * If the filter hasn't been changed in the dialog, chosenImporter is null now.
     186             * When the filter has been set explicitly to AllFormatsImporter, treat this the same.
    171187             */
    172188            if (chosenImporter instanceof AllFormatsImporter) {
     
    210226                // find appropriate importer
    211227                MultiMap<FileImporter, File> map = new MultiMap<FileImporter, File>();
    212                 List<File> filesWithKnownImporter = new LinkedList<File>();
    213228                List<File> filesWithUnknownImporter = new LinkedList<File>();
    214229                FILES: for (File f : files) {
     
    216231                        if (importer.acceptFile(f)) {
    217232                            map.put(importer, f);
    218                             filesWithKnownImporter.add(f);
    219233                            continue FILES;
    220234                        }
     
    228242                Collections.sort(ims);
    229243                Collections.reverse(ims);
     244
     245                Set<String> fileHistory = new LinkedHashSet<String>();
     246
    230247                for (FileImporter importer : ims) {
    231248                    List<File> files = new ArrayList<File>(map.get(importer));
    232249                    importData(importer, files);
     250
     251                    if (recordHistory && !importer.isBatchImporter()) {
     252                        for (File f : files) {
     253                            fileHistory.add(f.getPath());
     254                        }
     255                    }
     256                }
     257
     258                if (recordHistory) {
     259                    Collection<String> oldFileHistory = Main.pref.getCollection("file-open.history");
     260                    fileHistory.addAll(oldFileHistory);
     261                    int maxsize = Math.max(0, Main.pref.getInteger("file-open.history.max-size", 15));
     262                    Collection<String> trimmedFileHistory = new ArrayList<String>(Math.min(maxsize, fileHistory.size()));
     263                    int i = 0;
     264                    for (String s : fileHistory) {
     265                        if (++i > maxsize) {
     266                            break;
     267                        }
     268                        trimmedFileHistory.add(s);
     269                    }
     270                    Main.pref.putCollection("file-open.history", trimmedFileHistory);
    233271                }
    234272            }
Note: See TracChangeset for help on using the changeset viewer.