• R/O
  • HTTP
  • SSH
  • HTTPS

CharacterManaJ: Commit

キャラクターなんとかJの本体


Commit MetaInfo

Revisionbce77cbc6649a1dc5e7166cbe85a7cbbd5f0575c (tree)
Time2019-01-17 08:40:26
Authorseraphy <seraphy@user...>
Commiterseraphy

Log Message

OSXのファイルのドロップ処理時のURI判定の修正

Change Summary

Incremental Difference

--- a/src/main/java/charactermanaj/ui/util/FileDropTarget.java
+++ b/src/main/java/charactermanaj/ui/util/FileDropTarget.java
@@ -26,25 +26,25 @@ public class FileDropTarget extends DropTargetAdapter {
2626 * ロガー
2727 */
2828 private final Logger logger = Logger.getLogger(getClass().getName());
29-
29+
3030 protected FileDropListener fileDropListener;
3131
3232 public FileDropTarget() {
3333 this(null);
3434 }
35-
35+
3636 public FileDropTarget(FileDropListener fileDropListener) {
3737 this.fileDropListener = fileDropListener;
3838 }
39-
39+
4040 public FileDropListener getFileDropListener() {
4141 return fileDropListener;
4242 }
43-
43+
4444 public void setFileDropListener(FileDropListener fileDropListener) {
4545 this.fileDropListener = fileDropListener;
4646 }
47-
47+
4848 protected void onDropFiles(List<File> dropFiles) {
4949 if (fileDropListener != null) {
5050 if ( !dropFiles.isEmpty()) {
@@ -52,7 +52,7 @@ public class FileDropTarget extends DropTargetAdapter {
5252 }
5353 }
5454 }
55-
55+
5656 public void drop(DropTargetDropEvent dtde) {
5757 try {
5858 // urlListFlavor (RFC 2483 for the text/uri-list format)
@@ -68,7 +68,7 @@ public class FileDropTarget extends DropTargetAdapter {
6868 // ドロップされたものが1つのファイルであれば受け入れる。
6969 for (DataFlavor flavor : dtde.getCurrentDataFlavors()) {
7070 logger.log(Level.FINE, "flavor: " + flavor);
71-
71+
7272 if (DataFlavor.javaFileListFlavor.equals(flavor)) {
7373 dtde.acceptDrop(DnDConstants.ACTION_COPY);
7474 @SuppressWarnings({ "unchecked", "rawtypes" })
@@ -88,18 +88,25 @@ public class FileDropTarget extends DropTargetAdapter {
8888 continue;
8989 }
9090 try {
91- URI uri = new URI(fileStr);
92- File dropFile = new File(uri);
91+ File dropFile;
92+ if (fileStr.startsWith("/")) {
93+ // protocolがなく、ルートから始まる場合はファイルと仮定する
94+ dropFile = new File(fileStr);
95+ } else {
96+ URI uri = new URI(fileStr);
97+ dropFile = new File(uri);
98+ }
9399 dropFiles.add(dropFile);
94100 break;
95-
101+ } catch (RuntimeException ex) {
102+ logger.log(Level.WARNING, "invalid drop file: " + fileStr, ex);
96103 } catch (URISyntaxException ex) {
97104 logger.log(Level.WARNING, "invalid drop file: " + fileStr, ex);
98105 }
99106 }
100107 }
101108 }
102-
109+
103110 // 存在しないファイルを除去する.
104111 for (Iterator<File> ite = dropFiles.iterator(); ite.hasNext();) {
105112 File dropFile = ite.next();
@@ -110,7 +117,7 @@ public class FileDropTarget extends DropTargetAdapter {
110117
111118 // ドロップされたファイルを通知する.
112119 onDropFiles(dropFiles);
113-
120+
114121 } catch (UnsupportedFlavorException ex) {
115122 logger.log(Level.WARNING, "unsipported flovaor." , ex);
116123 onException(ex);
@@ -120,7 +127,7 @@ public class FileDropTarget extends DropTargetAdapter {
120127 onException(ex);
121128 }
122129 }
123-
130+
124131 protected void onException(Exception ex) {
125132 // do nothing.
126133 }
Show on old repository browser