OSDN Git Service
(root)
/
charactermanaj
/
CharacterManaJ.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
OSXのファイルのドロップ処理時のURI判定の修正
[charactermanaj/CharacterManaJ.git]
/
src
/
main
/
java
/
charactermanaj
/
ui
/
util
/
FileDropTarget.java
diff --git
a/src/main/java/charactermanaj/ui/util/FileDropTarget.java
b/src/main/java/charactermanaj/ui/util/FileDropTarget.java
index
9788be6
..
834a748
100644
(file)
--- 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 {
* ロガー
*/
private final Logger logger = Logger.getLogger(getClass().getName());
* ロガー
*/
private final Logger logger = Logger.getLogger(getClass().getName());
-
+
protected FileDropListener fileDropListener;
public FileDropTarget() {
this(null);
}
protected FileDropListener fileDropListener;
public FileDropTarget() {
this(null);
}
-
+
public FileDropTarget(FileDropListener fileDropListener) {
this.fileDropListener = fileDropListener;
}
public FileDropTarget(FileDropListener fileDropListener) {
this.fileDropListener = fileDropListener;
}
-
+
public FileDropListener getFileDropListener() {
return fileDropListener;
}
public FileDropListener getFileDropListener() {
return fileDropListener;
}
-
+
public void setFileDropListener(FileDropListener fileDropListener) {
this.fileDropListener = fileDropListener;
}
public void setFileDropListener(FileDropListener fileDropListener) {
this.fileDropListener = fileDropListener;
}
-
+
protected void onDropFiles(List<File> dropFiles) {
if (fileDropListener != null) {
if ( !dropFiles.isEmpty()) {
protected void onDropFiles(List<File> dropFiles) {
if (fileDropListener != null) {
if ( !dropFiles.isEmpty()) {
@@
-52,7
+52,7
@@
public class FileDropTarget extends DropTargetAdapter {
}
}
}
}
}
}
-
+
public void drop(DropTargetDropEvent dtde) {
try {
// urlListFlavor (RFC 2483 for the text/uri-list format)
public void drop(DropTargetDropEvent dtde) {
try {
// urlListFlavor (RFC 2483 for the text/uri-list format)
@@
-68,7
+68,7
@@
public class FileDropTarget extends DropTargetAdapter {
// ドロップされたものが1つのファイルであれば受け入れる。
for (DataFlavor flavor : dtde.getCurrentDataFlavors()) {
logger.log(Level.FINE, "flavor: " + flavor);
// ドロップされたものが1つのファイルであれば受け入れる。
for (DataFlavor flavor : dtde.getCurrentDataFlavors()) {
logger.log(Level.FINE, "flavor: " + flavor);
-
+
if (DataFlavor.javaFileListFlavor.equals(flavor)) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
@SuppressWarnings({ "unchecked", "rawtypes" })
if (DataFlavor.javaFileListFlavor.equals(flavor)) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
@SuppressWarnings({ "unchecked", "rawtypes" })
@@
-88,18
+88,25
@@
public class FileDropTarget extends DropTargetAdapter {
continue;
}
try {
continue;
}
try {
- URI uri = new URI(fileStr);
- File dropFile = new File(uri);
+ File dropFile;
+ if (fileStr.startsWith("/")) {
+ // protocolがなく、ルートから始まる場合はファイルと仮定する
+ dropFile = new File(fileStr);
+ } else {
+ URI uri = new URI(fileStr);
+ dropFile = new File(uri);
+ }
dropFiles.add(dropFile);
break;
dropFiles.add(dropFile);
break;
-
+ } catch (RuntimeException ex) {
+ logger.log(Level.WARNING, "invalid drop file: " + fileStr, ex);
} catch (URISyntaxException ex) {
logger.log(Level.WARNING, "invalid drop file: " + fileStr, ex);
}
}
}
}
} catch (URISyntaxException ex) {
logger.log(Level.WARNING, "invalid drop file: " + fileStr, ex);
}
}
}
}
-
+
// 存在しないファイルを除去する.
for (Iterator<File> ite = dropFiles.iterator(); ite.hasNext();) {
File dropFile = ite.next();
// 存在しないファイルを除去する.
for (Iterator<File> ite = dropFiles.iterator(); ite.hasNext();) {
File dropFile = ite.next();
@@
-110,7
+117,7
@@
public class FileDropTarget extends DropTargetAdapter {
// ドロップされたファイルを通知する.
onDropFiles(dropFiles);
// ドロップされたファイルを通知する.
onDropFiles(dropFiles);
-
+
} catch (UnsupportedFlavorException ex) {
logger.log(Level.WARNING, "unsipported flovaor." , ex);
onException(ex);
} catch (UnsupportedFlavorException ex) {
logger.log(Level.WARNING, "unsipported flovaor." , ex);
onException(ex);
@@
-120,7
+127,7
@@
public class FileDropTarget extends DropTargetAdapter {
onException(ex);
}
}
onException(ex);
}
}
-
+
protected void onException(Exception ex) {
// do nothing.
}
protected void onException(Exception ex) {
// do nothing.
}