1 package yukihane.inqubus.gui;
3 import java.awt.datatransfer.DataFlavor;
4 import java.awt.datatransfer.Transferable;
5 import java.awt.datatransfer.UnsupportedFlavorException;
7 import java.io.IOException;
9 import java.util.logging.Level;
10 import java.util.logging.Logger;
11 import javax.swing.JCheckBox;
12 import javax.swing.TransferHandler;
13 import javax.swing.text.JTextComponent;
16 * メイン画面の動画/コメント入力フィールド用TransferHandler
19 class ContentTransferHandler extends TransferHandler {
21 private static final long serialVersionUID = 1L;
22 private static final Logger logger = Logger.getLogger(ContentTransferHandler.class.getName());
23 private final JCheckBox cbLocal;
24 private final TransferHandler defaultTransferHandler;
28 * @param defaultTransferHandler 対象JTextFieldインスタンスのデフォルトtransfer handler.
29 * @param cbLocal 対応するローカルチェックボックス.
31 ContentTransferHandler(TransferHandler defaultTransferHandler, JCheckBox cbLocal) {
32 this.defaultTransferHandler = defaultTransferHandler;
33 this.cbLocal = cbLocal;
37 public boolean canImport(TransferHandler.TransferSupport support) {
38 if (!cbLocal.isSelected()) {
39 return defaultTransferHandler.canImport(support);
42 if (!support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)
43 && !support.isDataFlavorSupported(DataFlavor.stringFlavor)) {
47 if (support.isDrop()) {
48 support.setDropAction(LINK);
54 public boolean importData(TransferHandler.TransferSupport support) {
55 if (!cbLocal.isSelected() || !support.isDrop()) {
56 return defaultTransferHandler.importData(support);
59 final Transferable tr = support.getTransferable();
62 if (tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
63 @SuppressWarnings("unchecked")
64 final List<File> files = (List<File>) tr.getTransferData(DataFlavor.javaFileListFlavor);
65 if (files.size() > 0) {
66 File file = files.get(0);
67 text = file.getPath();
71 } else if (tr.isDataFlavorSupported(DataFlavor.stringFlavor)) {
72 text = (String) tr.getTransferData(DataFlavor.stringFlavor);
76 final JTextComponent comp = (JTextComponent) support.getComponent();
79 } catch (UnsupportedFlavorException | IOException ex) {
80 logger.log(Level.SEVERE, null, ex);