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;
012import org.openstreetmap.josm.tools.Utils;
013
014/**
015 * Export a WMS layer to a serialized binary file that can be imported later via {@link WMSLayerImporter}.
016 *
017 * @since 5457
018 */
019public class WMSLayerExporter extends FileExporter {
020
021    /**
022     * Constructs a new {@code WMSLayerExporter}
023     */
024    public WMSLayerExporter() {
025        super(WMSLayerImporter.FILE_FILTER);
026    }
027
028    @Override
029    public void exportData(File file, Layer layer) throws IOException {
030        CheckParameterUtil.ensureParameterNotNull(file, "file");
031        CheckParameterUtil.ensureParameterNotNull(layer, "layer");
032        if (layer instanceof WMSLayer) {
033            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
034            try {
035                ((WMSLayer)layer).writeExternal(oos);
036            } finally {
037                Utils.close(oos);
038            }
039        }
040    }
041
042    @Override
043    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
044        setEnabled(newLayer instanceof WMSLayer);
045    }
046}