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.LayerManager; 012import org.openstreetmap.josm.gui.layer.OsmDataLayer; 013 014/** 015 * A special form of {@link LayerTransferData} that ensures you that the layer is an OSM data layer 016 * @author Michael Zangl 017 * @since 10605 018 */ 019public class OsmLayerTransferData extends LayerTransferData { 020 021 /** 022 * This is a data flavor specific for OSM data layers. 023 * @see LayerTransferData#FLAVOR 024 * @see #FLAVORS 025 */ 026 public static final DataFlavor OSM_FLAVOR = ClipboardUtils.newDataFlavor(OsmLayerTransferData.class, "Layer"); 027 028 /** 029 * The flavors that are supported by this data type. 030 */ 031 public static final List<DataFlavor> FLAVORS = Collections 032 .unmodifiableList(Arrays.asList(OSM_FLAVOR, LayerTransferData.FLAVOR, LayerTransferable.LAYER_DATA)); 033 034 private final OsmDataLayer osmLayer; 035 036 /** 037 * Create a new {@link OsmLayerTransferData} object 038 * @param layerManager The layer manager 039 * @param layer The layer that is moved. 040 */ 041 public OsmLayerTransferData(LayerManager layerManager, OsmDataLayer layer) { 042 super(layerManager, layer); 043 osmLayer = layer; 044 } 045 046 /** 047 * Gets the OSM data layer. 048 * @return The layer 049 */ 050 public OsmDataLayer getOsmLayer() { 051 return osmLayer; 052 } 053 054 @Override 055 public List<DataFlavor> getSupportedFlavors() { 056 return FLAVORS; 057 } 058 059 @Override 060 public String toString() { 061 return "OsmLayerTransferData [osmLayer=" + osmLayer + ']'; 062 } 063}