apple2-image-encoder/src/main/java/a2geek/apple2/image/encoder/ui/DropHandler.java

50 lines
1.4 KiB
Java

package a2geek.apple2.image.encoder.ui;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.TransferHandler;
/**
* Provide our own TransferHandler to accept only image files.
* This is not sophisticated enough to identify type of file, however.
*
* @author a2geek@users.noreply.github.com
*/
@SuppressWarnings("serial")
public class DropHandler extends TransferHandler {
/**
* Custom importData method to pull in a single image file.
*/
public boolean importData(JComponent component, Transferable transferable) {
DataFlavor[] flavors = transferable.getTransferDataFlavors();
try {
if (canImportFiles(flavors)) {
List files = (List)transferable.getTransferData(DataFlavor.javaFileListFlavor);
File file = (File) files.get(0);
ImageEncoderApp.loadImage(file);
return true;
}
return false;
} catch (Exception e) {
ImageEncoderApp.showErrorDialog("import", e);
}
return false;
}
/**
* Indicates if we can import these types of data.
*/
public boolean canImport(JComponent c, DataFlavor[] flavors) {
return canImportFiles(flavors);
}
/**
* Determines if we can import this data.
*/
private boolean canImportFiles(DataFlavor[] flavors) {
return Arrays.asList(flavors).contains(DataFlavor.javaFileListFlavor);
}
}