001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.io;
003    
004    import java.io.File;
005    import java.io.FileOutputStream;
006    import java.io.IOException;
007    import java.io.ObjectOutputStream;
008    
009    import org.openstreetmap.josm.gui.layer.Layer;
010    import org.openstreetmap.josm.gui.layer.WMSLayer;
011    import 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     */
018    public 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                ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
033                try {
034                    ((WMSLayer)layer).writeExternal(oos);
035                } finally {
036                    oos.close();
037                }
038            }
039        }
040    
041        @Override
042        public void activeLayerChange(Layer oldLayer, Layer newLayer) {
043            setEnabled(newLayer instanceof WMSLayer);
044        }
045    }