Changeset 4371 in josm


Ignore:
Timestamp:
Aug 28, 2011 1:30:33 PM (21 months ago)
Author:
simon04
Message:

fix #6728 - add saved files to "open recent" menu

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

Legend:

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

    r4310 r4371  
    276276                    fileHistory.removeAll(failedAll); 
    277277                    int maxsize = Math.max(0, Main.pref.getInteger("file-open.history.max-size", 15)); 
    278                     Collection<String> trimmedFileHistory = new ArrayList<String>(Math.min(maxsize, fileHistory.size())); 
    279                     int i = 0; 
    280                     for (String s : fileHistory) { 
    281                         if (++i > maxsize) { 
    282                             break; 
    283                         } 
    284                         trimmedFileHistory.add(s); 
    285                     } 
    286                     Main.pref.putCollection("file-open.history", trimmedFileHistory); 
     278                    Main.pref.putCollectionBounded("file-open.history", maxsize, fileHistory); 
    287279                } 
    288280            } 
  • trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java

    r4114 r4371  
    77import java.io.File; 
    88import java.io.IOException; 
    9  
     9import java.util.Collection; 
     10import java.util.LinkedList; 
     11import java.util.List; 
    1012import javax.swing.JFileChooser; 
    1113import javax.swing.JOptionPane; 
     
    2325 
    2426public abstract class SaveActionBase extends DiskAccessAction { 
     27    private File file; 
    2528 
    2629    public SaveActionBase(String name, String iconName, String tooltip, Shortcut shortcut) { 
     
    2831    } 
    2932 
     33    @Override 
    3034    public void actionPerformed(ActionEvent e) { 
    31         if (!isEnabled()) 
    32             return; 
    33         doSave(); 
     35        if (!isEnabled()) { 
     36            return; 
     37        } 
     38        boolean saved = doSave(); 
     39        if (saved) { 
     40            addToFileOpenHistory(); 
     41        } 
    3442    } 
    3543 
     
    4856        if(!checkSaveConditions(layer)) 
    4957            return false; 
    50         return doInternalSave(layer, getFile(layer)); 
     58        file = getFile(layer); 
     59        return doInternalSave(layer, file); 
    5160    } 
    5261 
     
    224233        return true; 
    225234    } 
     235 
     236    protected void addToFileOpenHistory() { 
     237        String filepath; 
     238        try { 
     239            filepath = file.getCanonicalPath(); 
     240        } catch (IOException ign) { 
     241            return; 
     242        } 
     243 
     244        int maxsize = Math.max(0, Main.pref.getInteger("file-open.history.max-size", 15)); 
     245        Collection<String> oldHistory = Main.pref.getCollection("file-open.history"); 
     246        List<String> history = new LinkedList<String>(oldHistory); 
     247        history.add(0, filepath); 
     248        Main.pref.putCollectionBounded("file-open.history", maxsize, history); 
     249    } 
    226250} 
  • trunk/src/org/openstreetmap/josm/data/Preferences.java

    r4310 r4371  
    741741    } 
    742742 
     743    /** 
     744     * Saves at most {@code maxsize} items of collection {@code val}. 
     745     */ 
     746    public boolean putCollectionBounded(String key, int maxsize, Collection<String> val) { 
     747        Collection<String> newCollection = new ArrayList<String>(maxsize); 
     748        for (String i : val) { 
     749            if (newCollection.size() >= maxsize) { 
     750                break; 
     751            } 
     752            newCollection.add(i); 
     753        } 
     754        return putCollection(key, newCollection); 
     755    } 
     756 
    743757    synchronized private void putCollectionDefault(String key, Collection<String> val) { 
    744758        putDefault(key, Utils.join("\u001e", val)); 
Note: See TracChangeset for help on using the changeset viewer.