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.Main; 010import org.openstreetmap.josm.data.Preferences; 011import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry; 012import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer; 013import org.openstreetmap.josm.gui.layer.Layer; 014import org.openstreetmap.josm.tools.CheckParameterUtil; 015 016/** 017 * Export a WMS layer to a serialized binary file that can be imported later via {@link WMSLayerImporter}. 018 * 019 * @since 5457 020 */ 021public class WMSLayerExporter extends FileExporter { 022 023 /** Which version of the file we export */ 024 public static final int CURRENT_FILE_VERSION = 6; 025 026 /** 027 * Constructs a new {@code WMSLayerExporter} 028 */ 029 public WMSLayerExporter() { 030 super(WMSLayerImporter.FILE_FILTER); 031 } 032 033 @Override 034 public void exportData(File file, Layer layer) throws IOException { 035 CheckParameterUtil.ensureParameterNotNull(file, "file"); 036 CheckParameterUtil.ensureParameterNotNull(layer, "layer"); 037 038 if (layer instanceof AbstractTileSourceLayer) { 039 try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) { 040 oos.writeInt(CURRENT_FILE_VERSION); // file version 041 oos.writeObject(Main.map.mapView.getCenter()); 042 ImageryPreferenceEntry entry = new ImageryPreferenceEntry(((AbstractTileSourceLayer) layer).getInfo()); 043 oos.writeObject(Preferences.serializeStruct(entry, ImageryPreferenceEntry.class)); 044 } 045 } 046 047 } 048 049 @Override 050 public void activeLayerChange(Layer oldLayer, Layer newLayer) { 051 setEnabled(newLayer instanceof AbstractTileSourceLayer); 052 } 053}