/* * Copyright (C) 2015 たんらる */ package fourthline.mabiicco; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.File; import java.io.IOException; import java.util.List; import javax.swing.TransferHandler; /** * ファイルドロップ: 開く * Ctrl+ファイルドロップ: インポート */ public final class FileTransferHandler extends TransferHandler { private static final long serialVersionUID = 7618330769836269887L; private final ActionDispatcher dispacher; public FileTransferHandler(ActionDispatcher dispatcher) { super(); this.dispacher = dispatcher; } @Override public boolean canImport(TransferSupport support) { int action = support.getDropAction(); if ( (action == MOVE) || (action == COPY) ) { return support.isDataFlavorSupported(DataFlavor.javaFileListFlavor); } return false; } @Override public boolean importData(TransferSupport support) { if (!canImport(support)) { return false; } int action = support.getDropAction(); try { for (Object obj : (List<?>) support.getTransferable().getTransferData(DataFlavor.javaFileListFlavor)) { if (obj instanceof File) { File file = (File) obj; if (file.isFile()) { if (action == MOVE) { dispacher.checkAndOpenMMLFile(file); } else { dispacher.fileImport(file); } return true; } } } } catch (UnsupportedFlavorException | IOException e) { e.printStackTrace(); } return false; } }