package dev.kske.chess.ui; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; import java.io.File; import java.io.IOException; import java.util.List; /** * Enables drag and drop support of {@code FEN} and {@code PGN} files for the * {@link MainWindow}.
*
* Project: Chess
* File: GameDropTarget.java
* Created: 13 Aug 2019
* * @since Chess v0.3-alpha * @author Kai S. K. Engelbart */ public class GameDropTarget extends DropTargetAdapter { private MainWindow mainWindow; /** * Creates an instance of {@link GameDropTarget}. * * @param mainWindow the {@link MainWindow} onto which {@code FEN} and * {@code PGN} files can be dropped */ public GameDropTarget(MainWindow mainWindow) { this.mainWindow = mainWindow; } @SuppressWarnings("unchecked") @Override public void drop(DropTargetDropEvent evt) { try { evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); mainWindow.loadFiles( (List) evt.getTransferable() .getTransferData(DataFlavor.javaFileListFlavor) ); } catch (UnsupportedFlavorException | IOException ex) { ex.printStackTrace(); evt.rejectDrop(); } } }