diff --git a/src/main/java/me/goudham/ClipboardListener.java b/src/main/java/me/goudham/ClipboardListener.java index 08c66e4..1850d5d 100644 --- a/src/main/java/me/goudham/ClipboardListener.java +++ b/src/main/java/me/goudham/ClipboardListener.java @@ -3,12 +3,8 @@ package me.goudham; import java.awt.Image; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.Transferable; -import java.awt.datatransfer.UnsupportedFlavorException; import java.io.File; import java.util.List; -import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -138,60 +134,4 @@ abstract class ClipboardListener { void setFileMonitored(boolean fileMonitored) { this.fileMonitored = fileMonitored; } - - static class TransferableFileList implements Transferable { - - private final List fileList; - - public TransferableFileList(@NotNull List fileList) { - this.fileList = fileList; - } - - @Override - public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { - if (flavor.equals(DataFlavor.javaFileListFlavor)) { - return fileList; - } else { - throw new UnsupportedFlavorException(flavor); - } - } - - @Override - public DataFlavor[] getTransferDataFlavors() { - return new DataFlavor[] { DataFlavor.javaFileListFlavor }; - } - - @Override - public boolean isDataFlavorSupported(DataFlavor flavor) { - return flavor == DataFlavor.javaFileListFlavor; - } - } - - static class TransferableImage implements Transferable { - - private final Image image; - - public TransferableImage(@NotNull Image image) { - this.image = image; - } - - @Override - public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { - if (flavor.equals(DataFlavor.imageFlavor)) { - return image; - } else { - throw new UnsupportedFlavorException(flavor); - } - } - - @Override - public DataFlavor[] getTransferDataFlavors() { - return new DataFlavor[] { DataFlavor.imageFlavor }; - } - - @Override - public boolean isDataFlavorSupported(DataFlavor flavor) { - return flavor == DataFlavor.imageFlavor; - } - } } diff --git a/src/main/java/me/goudham/MacClipboardListener.java b/src/main/java/me/goudham/MacClipboardListener.java index 802ec63..fc06f87 100644 --- a/src/main/java/me/goudham/MacClipboardListener.java +++ b/src/main/java/me/goudham/MacClipboardListener.java @@ -11,6 +11,8 @@ import java.util.concurrent.TimeUnit; import me.goudham.domain.ClipboardContent; import me.goudham.domain.GenericClipboardContent; import me.goudham.domain.MyBufferedImage; +import me.goudham.domain.TransferableFile; +import me.goudham.domain.TransferableImage; import static java.lang.Thread.sleep; import static me.goudham.Contents.FILE; @@ -163,7 +165,7 @@ class MacClipboardListener extends ClipboardListener implements Runnable { logger.error("Exception Thrown As Thread Cannot Sleep", ie); } - clipboard.setContents(new TransferableFileList(fileContent), null); + clipboard.setContents(new TransferableFile(fileContent), null); } @Override diff --git a/src/main/java/me/goudham/WindowsOrUnixClipboardListener.java b/src/main/java/me/goudham/WindowsOrUnixClipboardListener.java index 38e5cb4..6d041aa 100644 --- a/src/main/java/me/goudham/WindowsOrUnixClipboardListener.java +++ b/src/main/java/me/goudham/WindowsOrUnixClipboardListener.java @@ -11,6 +11,8 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import me.goudham.domain.ClipboardContent; import me.goudham.domain.MyBufferedImage; +import me.goudham.domain.TransferableFile; +import me.goudham.domain.TransferableImage; import static java.lang.Thread.currentThread; import static java.lang.Thread.sleep; @@ -145,7 +147,7 @@ class WindowsOrUnixClipboardListener extends ClipboardListener implements Runnab } try { - clipboard.setContents(new TransferableFileList(fileContent), this); + clipboard.setContents(new TransferableFile(fileContent), this); } catch (IllegalStateException ise) { logger.error("Exception Thrown As Clipboard Cannot Be Accessed", ise); executorService.submit(this); diff --git a/src/main/java/me/goudham/domain/TransferableFile.java b/src/main/java/me/goudham/domain/TransferableFile.java new file mode 100644 index 0000000..9b84ef1 --- /dev/null +++ b/src/main/java/me/goudham/domain/TransferableFile.java @@ -0,0 +1,35 @@ +package me.goudham.domain; + +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.io.File; +import java.util.List; + +public class TransferableFile implements Transferable { + + private final List files; + + public TransferableFile(List files) { + this.files = files; + } + + @Override + public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { + if (flavor.equals(DataFlavor.javaFileListFlavor)) { + return files; + } else { + throw new UnsupportedFlavorException(flavor); + } + } + + @Override + public DataFlavor[] getTransferDataFlavors() { + return new DataFlavor[] { DataFlavor.javaFileListFlavor }; + } + + @Override + public boolean isDataFlavorSupported(DataFlavor flavor) { + return flavor == DataFlavor.javaFileListFlavor; + } +} diff --git a/src/main/java/me/goudham/domain/TransferableImage.java b/src/main/java/me/goudham/domain/TransferableImage.java new file mode 100644 index 0000000..7f20dcd --- /dev/null +++ b/src/main/java/me/goudham/domain/TransferableImage.java @@ -0,0 +1,35 @@ +package me.goudham.domain; + +import java.awt.Image; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import org.jetbrains.annotations.NotNull; + +public class TransferableImage implements Transferable { + + private final Image image; + + public TransferableImage(@NotNull Image image) { + this.image = image; + } + + @Override + public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { + if (flavor.equals(DataFlavor.imageFlavor)) { + return image; + } else { + throw new UnsupportedFlavorException(flavor); + } + } + + @Override + public DataFlavor[] getTransferDataFlavors() { + return new DataFlavor[] { DataFlavor.imageFlavor }; + } + + @Override + public boolean isDataFlavorSupported(DataFlavor flavor) { + return flavor == DataFlavor.imageFlavor; + } +} diff --git a/src/test/java/me/goudham/ClipboardUtilsTest.java b/src/test/java/me/goudham/ClipboardUtilsTest.java index 20c7442..1258dfd 100644 --- a/src/test/java/me/goudham/ClipboardUtilsTest.java +++ b/src/test/java/me/goudham/ClipboardUtilsTest.java @@ -12,6 +12,8 @@ import java.util.stream.Stream; import me.goudham.domain.ClipboardContent; import me.goudham.domain.GenericClipboardContent; import me.goudham.domain.MyBufferedImage; +import me.goudham.domain.TransferableFile; +import me.goudham.domain.TransferableImage; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -78,7 +80,7 @@ class ClipboardUtilsTest { void successfullyGetImageContent() { BufferedImage expectedBufferedImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB); MyBufferedImage expectedImageContent = new MyBufferedImage(expectedBufferedImage); - Transferable expectedTransferable = new ClipboardListener.TransferableImage(expectedBufferedImage); + Transferable expectedTransferable = new TransferableImage(expectedBufferedImage); MyBufferedImage actualImageContent = sut.getImageContent(expectedTransferable); @@ -104,7 +106,7 @@ class ClipboardUtilsTest { @Test void successfullyGetFileContent() { List expectedFileContent = List.of(new File("testFile")); - Transferable expectedTransferable = new ClipboardListener.TransferableFileList(expectedFileContent); + Transferable expectedTransferable = new TransferableFile(expectedFileContent); List actualFileContent = sut.getFileContent(expectedTransferable);