OSDN Git Service

r74までのコメントのみに関わる変更.
[coroid/inqubus.git] / frontend / src / saccubus / util / FileDropTarget.java
1 /**
2  * \83h\83\89\83b\83N\81E\83A\83\93\83h\81E\83h\83\8d\83b\83v\82ð\8eÀ\8c»\82·\82é\82½\82ß\82Ì\83N\83\89\83X\81B
3  */
4 package saccubus.util;
5
6 import java.awt.datatransfer.*;
7 import java.awt.dnd.*;
8 import java.io.File;
9 import java.io.IOException;
10
11 import javax.swing.JTextField;
12
13 /**
14  * @author PSI
15  *
16  */
17 public class FileDropTarget extends DropTargetAdapter {
18         private final JTextField Field;
19
20         private final boolean isFolder;
21
22         public FileDropTarget(JTextField field, boolean is_folder) {
23                 isFolder = is_folder;
24                 Field = field;
25         }
26
27         public void dragOver(DropTargetDragEvent dtde) {
28                 if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
29                         dtde.acceptDrag(DnDConstants.ACTION_COPY);
30                         return;
31                 }
32                 dtde.rejectDrag();
33         }
34
35         public void drop(DropTargetDropEvent dtde) {
36                 try {
37                         if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
38                                 dtde.acceptDrop(DnDConstants.ACTION_COPY);
39                                 Transferable t = dtde.getTransferable();
40                                 java.util.List list = (java.util.List) t
41                                                 .getTransferData(DataFlavor.javaFileListFlavor);
42                                 for (Object o : list) {
43                                         if (o instanceof File) {
44                                                 File file = (File) o;
45                                                 if (isFolder) {
46                                                         if (file.isDirectory()) {
47                                                                 Field.setText(file.getPath());
48                                                         } else {
49                                                                 Field.setText(file.getParent());
50                                                         }
51                                                 } else {
52                                                         if (file.isFile()) {
53                                                                 Field.setText(file.getPath());
54                                                         }
55                                                 }
56                                         }
57                                 }
58                                 dtde.dropComplete(true);
59                         }
60                 } catch (UnsupportedFlavorException e) {
61                         e.printStackTrace();
62                 } catch (IOException e) {
63                         e.printStackTrace();
64                 }
65         }
66
67 }