001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.io;
003
004import java.io.File;
005import java.io.FileOutputStream;
006import java.io.IOException;
007import java.io.ObjectOutputStream;
008
009import org.openstreetmap.josm.gui.layer.Layer;
010import org.openstreetmap.josm.gui.layer.WMSLayer;
011import org.openstreetmap.josm.tools.CheckParameterUtil;
012
013/**
014 * Export a WMS layer to a serialized binary file that can be imported later via {@link WMSLayerImporter}.
015 *
016 * @since 5457
017 */
018public class WMSLayerExporter extends FileExporter {
019
020    /**
021     * Constructs a new {@code WMSLayerExporter}
022     */
023    public WMSLayerExporter() {
024        super(WMSLayerImporter.FILE_FILTER);
025    }
026
027    @Override
028    public void exportData(File file, Layer layer) throws IOException {
029        CheckParameterUtil.ensureParameterNotNull(file, "file");
030        CheckParameterUtil.ensureParameterNotNull(layer, "layer");
031        if (layer instanceof WMSLayer) {
032            try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) {
033                ((WMSLayer)layer).writeExternal(oos);
034            }
035        }
036    }
037
038    @Override
039    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
040        setEnabled(newLayer instanceof WMSLayer);
041    }
042}