001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.datatransfer.data;
003
004import java.awt.datatransfer.DataFlavor;
005import java.util.Arrays;
006import java.util.Collections;
007import java.util.List;
008
009import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
010import org.openstreetmap.josm.gui.datatransfer.LayerTransferable;
011import org.openstreetmap.josm.gui.layer.Layer;
012import org.openstreetmap.josm.gui.layer.LayerManager;
013
014/**
015 * This transferable implements a layer transfer.
016 * @author Michael Zangl
017 * @since 10605
018 */
019public class LayerTransferData extends LayerTransferable.Data {
020    /**
021     * This is a data flavor for all layer types
022     */
023    public static final DataFlavor FLAVOR = ClipboardUtils.newDataFlavor(LayerTransferData.class, "Layer");
024
025    /**
026     * The flavors that are supported by this data type.
027     */
028    private static final List<DataFlavor> FLAVORS = Arrays.asList(LayerTransferData.FLAVOR, LayerTransferable.LAYER_DATA);
029
030    private final Layer layer;
031
032    /**
033     * Create a new transfer data for the given layer
034     * @param layerManager The layer manager that the layer is moved in. May be <code>null</code>
035     * @param layer The layer
036     */
037    public LayerTransferData(LayerManager layerManager, Layer layer) {
038        super(layerManager, Collections.singletonList(layer));
039        this.layer = layer;
040    }
041
042    /**
043     * Gets the layer to be transferred.
044     * @return The layer
045     */
046    public Layer getLayer() {
047        return layer;
048    }
049
050    /**
051     * Gets a list of flavors supported by this data.
052     * @return The flavors.
053     */
054    public List<DataFlavor> getSupportedFlavors() {
055        return Collections.unmodifiableList(FLAVORS);
056    }
057
058    @Override
059    public String toString() {
060        return "LayerTransferData [layer=" + layer + ']';
061    }
062}