001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.datatransfer.importers;
003
004import java.awt.datatransfer.DataFlavor;
005import java.awt.datatransfer.UnsupportedFlavorException;
006import java.io.File;
007import java.io.IOException;
008import java.util.List;
009
010import javax.swing.TransferHandler.TransferSupport;
011
012import org.openstreetmap.josm.actions.OpenFileAction;
013import org.openstreetmap.josm.data.coor.EastNorth;
014import org.openstreetmap.josm.gui.MainApplication;
015import org.openstreetmap.josm.gui.io.importexport.Options;
016import org.openstreetmap.josm.gui.layer.OsmDataLayer;
017
018/**
019 * This transfer support allows us to import a file that is dropped / copied on to the map.
020 * @author Michael Zangl
021 * @since 10604
022 */
023public final class FilePaster extends AbstractOsmDataPaster {
024    /**
025     * Create a new {@link FilePaster}
026     */
027    public FilePaster() {
028        super(DataFlavor.javaFileListFlavor);
029    }
030
031    @Override
032    public boolean importData(TransferSupport support, OsmDataLayer layer, EastNorth pasteAt)
033            throws UnsupportedFlavorException, IOException {
034        @SuppressWarnings("unchecked")
035        List<File> files = (List<File>) support.getTransferable().getTransferData(df);
036        OpenFileAction.OpenFileTask task = new OpenFileAction.OpenFileTask(files, null);
037        task.setOptions(Options.RECORD_HISTORY);
038        MainApplication.worker.submit(task);
039        return true;
040    }
041}