1 | // License: GPL. For details, see LICENSE file.
|
---|
2 | package org.openstreetmap.josm.gui.datatransfer;
|
---|
3 |
|
---|
4 | import java.awt.datatransfer.DataFlavor;
|
---|
5 | import java.awt.datatransfer.Transferable;
|
---|
6 | import java.awt.datatransfer.UnsupportedFlavorException;
|
---|
7 | import java.io.IOException;
|
---|
8 | import java.util.List;
|
---|
9 |
|
---|
10 | import org.openstreetmap.josm.gui.datatransfer.data.LayerTransferData;
|
---|
11 | import org.openstreetmap.josm.gui.datatransfer.data.OsmLayerTransferData;
|
---|
12 | import org.openstreetmap.josm.gui.layer.Layer;
|
---|
13 | import org.openstreetmap.josm.gui.layer.LayerManager;
|
---|
14 | import org.openstreetmap.josm.gui.layer.OsmDataLayer;
|
---|
15 |
|
---|
16 | /**
|
---|
17 | * This class handles the transfer of a layer inside this JOSM instance.
|
---|
18 | * @author Michael Zangl
|
---|
19 | * @since 10605
|
---|
20 | */
|
---|
21 | public class SingleLayerTransferable implements Transferable {
|
---|
22 | private final LayerTransferData data;
|
---|
23 |
|
---|
24 | /**
|
---|
25 | * Create a new {@link SingleLayerTransferable}
|
---|
26 | * @param manager The manager the layer belongs to
|
---|
27 | * @param layer The layer that is transfered.
|
---|
28 | */
|
---|
29 | public SingleLayerTransferable(LayerManager manager, Layer layer) {
|
---|
30 | if (layer instanceof OsmDataLayer) {
|
---|
31 | this.data = new OsmLayerTransferData(manager, (OsmDataLayer) layer);
|
---|
32 | } else {
|
---|
33 | this.data = new LayerTransferData(manager, layer);
|
---|
34 | }
|
---|
35 | }
|
---|
36 |
|
---|
37 | @Override
|
---|
38 | public DataFlavor[] getTransferDataFlavors() {
|
---|
39 | List<DataFlavor> flavors = data.getSupportedFlavors();
|
---|
40 | return flavors.toArray(new DataFlavor[flavors.size()]);
|
---|
41 | }
|
---|
42 |
|
---|
43 | @Override
|
---|
44 | public boolean isDataFlavorSupported(DataFlavor flavor) {
|
---|
45 | return data.getSupportedFlavors().contains(flavor);
|
---|
46 | }
|
---|
47 |
|
---|
48 | @Override
|
---|
49 | public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
|
---|
50 | if (isDataFlavorSupported(flavor)) {
|
---|
51 | return data;
|
---|
52 | } else {
|
---|
53 | throw new UnsupportedFlavorException(flavor);
|
---|
54 | }
|
---|
55 | }
|
---|
56 | }
|
---|