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}