Package org.openstreetmap.josm.io

Source Code of org.openstreetmap.josm.io.WMSLayerImporter

// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.io;

import static org.openstreetmap.josm.tools.I18n.tr;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.actions.ExtensionFileFilter;
import org.openstreetmap.josm.gui.layer.WMSLayer;
import org.openstreetmap.josm.gui.progress.ProgressMonitor;
import org.openstreetmap.josm.gui.util.GuiHelper;
import org.openstreetmap.josm.tools.CheckParameterUtil;

/**
* Import a WMS layer from a serialized binary file previously exported via {@link WMSLayerExporter}.
* @since 5457
*/
public class WMSLayerImporter extends FileImporter {

    /**
     * The file filter used in "open" and "save" dialogs for WMS layers.
     */
    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
            "wms", "wms", tr("WMS Files (*.wms)"));

    private final WMSLayer wmsLayer;

    /**
     * Constructs a new {@code WMSLayerImporter}.
     */
    public WMSLayerImporter() {
        this(new WMSLayer());
    }

    /**
     * Constructs a new {@code WMSLayerImporter} that will import data to the specified WMS layer.
     * @param wmsLayer The WMS layer.
     */
    public WMSLayerImporter(WMSLayer wmsLayer) {
        super(FILE_FILTER);
        this.wmsLayer = wmsLayer;
    }

    @Override
    public void importData(File file, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
        CheckParameterUtil.ensureParameterNotNull(file, "file");
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
            wmsLayer.readExternal(ois);
        } catch (ClassNotFoundException e) {
            throw new IllegalDataException(e);
        }

        // FIXME: remove UI stuff from IO subsystem
        GuiHelper.runInEDT(new Runnable() {
            @Override
            public void run() {
                Main.main.addLayer(wmsLayer);
                wmsLayer.onPostLoadFromFile();
            }
        });
    }

    /**
     * Replies the imported WMS layer.
     * @return The imported WMS layer.
     * @see #importData(File, ProgressMonitor)
     */
    public final WMSLayer getWmsLayer() {
        return wmsLayer;
    }
}
TOP

Related Classes of org.openstreetmap.josm.io.WMSLayerImporter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.