Ignore:
Timestamp:
2013-09-30T02:51:34+02:00 (11 years ago)
Author:
Don-vip
Message:

fix #9116 - Remember active layer in session

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/session/SessionReader.java

    r6245 r6271  
    8989    private ZipFile zipFile;
    9090    private List<Layer> layers = new ArrayList<Layer>();
     91    private int active = -1;
    9192    private List<Runnable> postLoadTasks = new ArrayList<Runnable>();
    9293    private ViewportData viewport;
     
    9798    public List<Layer> getLayers() {
    9899        return layers;
     100    }
     101
     102    /**
     103     * @return active layer, or {@code null} if not set
     104     * @since 6271
     105     */
     106    public Layer getActive() {
     107        // layers is in reverse order because of the way TreeMap is built
     108        return (active >= 0 && active < layers.size()) ? layers.get(layers.size()-1-active) : null;
    99109    }
    100110
     
    327337        if (layersEl == null) return;
    328338
     339        String activeAtt = layersEl.getAttribute("active");
     340        try {
     341            active = (activeAtt != null && !activeAtt.isEmpty()) ? Integer.parseInt(activeAtt)-1 : -1;
     342        } catch (NumberFormatException e) {
     343            Main.warn("Unsupported value for 'active' layer attribute. Ignoring it. Error was: "+e.getMessage());
     344            active = -1;
     345        }
     346       
    329347        MultiMap<Integer, Integer> deps = new MultiMap<Integer, Integer>();
    330348        Map<Integer, Element> elems = new HashMap<Integer, Element>();
Note: See TracChangeset for help on using the changeset viewer.