001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.datatransfer; 003 004import java.awt.datatransfer.DataFlavor; 005import java.awt.datatransfer.Transferable; 006import java.awt.datatransfer.UnsupportedFlavorException; 007import java.io.IOException; 008import java.util.List; 009import java.util.stream.Collectors; 010import java.util.stream.Stream; 011 012import org.openstreetmap.josm.data.osm.Changeset; 013 014/** 015 * This class allows to transfer a list of {@link Changeset}s 016 */ 017public class ChangesetTransferable implements Transferable { 018 private final List<Changeset> changesets; 019 020 /** 021 * Constructs a new transferable 022 * @param changesets the list of changesets 023 */ 024 public ChangesetTransferable(List<Changeset> changesets) { 025 this.changesets = changesets; 026 } 027 028 @Override 029 public DataFlavor[] getTransferDataFlavors() { 030 return new DataFlavor[]{DataFlavor.stringFlavor}; 031 } 032 033 @Override 034 public boolean isDataFlavorSupported(DataFlavor flavor) { 035 return Stream.of(getTransferDataFlavors()).anyMatch(f -> f.equals(flavor)); 036 } 037 038 @Override 039 public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { 040 if (DataFlavor.stringFlavor.equals(flavor)) { 041 return changesets.stream().map(Changeset::toString).collect(Collectors.joining("\n")); 042 } else { 043 throw new UnsupportedFlavorException(flavor); 044 } 045 } 046}