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}