// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.io;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.data.Preferences;
import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryPreferenceEntry;
import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
import org.openstreetmap.josm.gui.layer.Layer;
import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
import org.openstreetmap.josm.tools.CheckParameterUtil;
/**
* Export a WMS layer to a serialized binary file that can be imported later via {@link WMSLayerImporter}.
*
* @since 5457
*/
public class WMSLayerExporter extends FileExporter {
/** Which version of the file we export */
public static final int CURRENT_FILE_VERSION = 6;
/**
* Constructs a new {@code WMSLayerExporter}
*/
public WMSLayerExporter() {
super(WMSLayerImporter.FILE_FILTER);
}
@Override
public void exportData(File file, Layer layer) throws IOException {
CheckParameterUtil.ensureParameterNotNull(file, "file");
CheckParameterUtil.ensureParameterNotNull(layer, "layer");
if (layer instanceof AbstractTileSourceLayer) {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) {
oos.writeInt(CURRENT_FILE_VERSION); // file version
oos.writeObject(Main.map.mapView.getCenter());
ImageryPreferenceEntry entry = new ImageryPreferenceEntry(((AbstractTileSourceLayer) layer).getInfo());
oos.writeObject(Preferences.serializeStruct(entry, ImageryPreferenceEntry.class));
}
}
}
@Override
public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
setEnabled(e.getSource().getActiveLayer() instanceof AbstractTileSourceLayer);
}
}