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

fix #9116 - Remember active layer in session

Location:
trunk/src/org/openstreetmap/josm/io/session
Files:
2 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>();
  • trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java

    r6142 r6271  
    8080    }
    8181
    82     private List<Layer> layers;
    83     private Map<Layer, SessionLayerExporter> exporters;
    84     private MultiMap<Layer, Layer> dependencies;
    85     private boolean zip;
     82    private final List<Layer> layers;
     83    private final int active;
     84    private final Map<Layer, SessionLayerExporter> exporters;
     85    private final MultiMap<Layer, Layer> dependencies;
     86    private final boolean zip;
    8687
    8788    private ZipOutputStream zipOut;
    8889
    89     public SessionWriter(List<Layer> layers, Map<Layer, SessionLayerExporter> exporters,
     90    /**
     91     * Constructs a new {@code SessionWriter}.
     92     * @param layers The ordered list of layers to save
     93     * @param active The index of active layer in {@code layers} (starts to 0). Ignored if set to -1
     94     * @param exporters The exprters to use to save layers
     95     * @param zip {@code true} if a joz archive has to be created, {@code false otherwise}
     96     * @since 6271
     97     */
     98    public SessionWriter(List<Layer> layers, int active, Map<Layer, SessionLayerExporter> exporters,
    9099                MultiMap<Layer, Layer> dependencies, boolean zip) {
    91100        this.layers = layers;
     101        this.active = active;
    92102        this.exporters = exporters;
    93103        this.dependencies = dependencies;
     
    182192
    183193        Element layersEl = doc.createElement("layers");
     194        if (active >= 0) {
     195            layersEl.setAttribute("active", Integer.toString(active+1));
     196        }
    184197        root.appendChild(layersEl);
    185198
Note: See TracChangeset for help on using the changeset viewer.