diff --git a/source/net/filebot/ui/analyze/FileTreeTransferablePolicy.java b/source/net/filebot/ui/analyze/FileTreeTransferablePolicy.java index 0060f4e6..f59b2662 100644 --- a/source/net/filebot/ui/analyze/FileTreeTransferablePolicy.java +++ b/source/net/filebot/ui/analyze/FileTreeTransferablePolicy.java @@ -52,7 +52,7 @@ class FileTreeTransferablePolicy extends BackgroundFileTransferablePolicy files) { + protected void load(List files, TransferAction action) { try { if (files.size() > 1 || containsOnly(files, FILES)) { files = Arrays.asList(files.get(0).getParentFile()); diff --git a/source/net/filebot/ui/list/FileListTransferablePolicy.java b/source/net/filebot/ui/list/FileListTransferablePolicy.java index b985da89..8d20565f 100644 --- a/source/net/filebot/ui/list/FileListTransferablePolicy.java +++ b/source/net/filebot/ui/list/FileListTransferablePolicy.java @@ -33,7 +33,7 @@ class FileListTransferablePolicy extends FileTransferablePolicy { } @Override - protected void load(List files) throws IOException { + protected void load(List files, TransferAction action) throws IOException { // set title based on parent folder of first file list.setTitle(FileUtilities.getFolderName(files.get(0).getParentFile())); diff --git a/source/net/filebot/ui/rename/FilesListTransferablePolicy.java b/source/net/filebot/ui/rename/FilesListTransferablePolicy.java index a6f325db..e1d78a4a 100644 --- a/source/net/filebot/ui/rename/FilesListTransferablePolicy.java +++ b/source/net/filebot/ui/rename/FilesListTransferablePolicy.java @@ -3,7 +3,6 @@ package net.filebot.ui.rename; import static java.util.Arrays.*; import static net.filebot.MediaTypes.*; import static net.filebot.ui.NotificationLogging.*; -import static net.filebot.ui.transfer.FileTransferable.*; import static net.filebot.util.FileUtilities.*; import java.awt.datatransfer.Transferable; @@ -40,19 +39,16 @@ class FilesListTransferablePolicy extends BackgroundFileTransferablePolicy @Override public void handleTransferable(Transferable tr, TransferAction action) throws Exception { - if (action == TransferAction.LINK) { - // special handling for do-not-resolve-folders-drop + if (action == TransferAction.LINK || action == TransferAction.PUT) { clear(); - load(getFilesFromTransferable(tr), false); - } else { - // load files recursively by default - super.handleTransferable(tr, action); } + + super.handleTransferable(tr, action); } @Override - protected void load(List files) { - load(files, true); + protected void load(List files, TransferAction action) { + load(files, action != TransferAction.LINK); } protected void load(List files, boolean recursive) { @@ -111,7 +107,7 @@ class FilesListTransferablePolicy extends BackgroundFileTransferablePolicy @Override protected void process(List chunks) { - model.addAll(FastFile.create(chunks)); + model.addAll(chunks); } @Override diff --git a/source/net/filebot/ui/rename/HistoryDialog.java b/source/net/filebot/ui/rename/HistoryDialog.java index a89ba3ec..d2f64c02 100644 --- a/source/net/filebot/ui/rename/HistoryDialog.java +++ b/source/net/filebot/ui/rename/HistoryDialog.java @@ -614,7 +614,7 @@ class HistoryDialog extends JDialog { } @Override - protected void load(List files) throws IOException { + protected void load(List files, TransferAction action) throws IOException { History history = getModel(); try { diff --git a/source/net/filebot/ui/rename/NamesListTransferablePolicy.java b/source/net/filebot/ui/rename/NamesListTransferablePolicy.java index 0eb36da4..6029bd64 100644 --- a/source/net/filebot/ui/rename/NamesListTransferablePolicy.java +++ b/source/net/filebot/ui/rename/NamesListTransferablePolicy.java @@ -61,7 +61,7 @@ class NamesListTransferablePolicy extends FileTransferablePolicy { model.addAll(Arrays.asList((Episode[]) tr.getTransferData((episodeArrayFlavor)))); } else if (hasFileListFlavor(tr)) { // file transferable - load(getFilesFromTransferable(tr)); + load(getFilesFromTransferable(tr), action); } else if (tr.isDataFlavorSupported(stringFlavor)) { // string transferable load((String) tr.getTransferData(stringFlavor)); @@ -83,7 +83,7 @@ class NamesListTransferablePolicy extends FileTransferablePolicy { } @Override - protected void load(List files) throws IOException { + protected void load(List files, TransferAction action) throws IOException { List values = new ArrayList(); if (containsOnly(files, LIST_FILES)) { diff --git a/source/net/filebot/ui/sfv/ChecksumTableTransferablePolicy.java b/source/net/filebot/ui/sfv/ChecksumTableTransferablePolicy.java index ca6d279e..aecb118c 100644 --- a/source/net/filebot/ui/sfv/ChecksumTableTransferablePolicy.java +++ b/source/net/filebot/ui/sfv/ChecksumTableTransferablePolicy.java @@ -46,10 +46,11 @@ class ChecksumTableTransferablePolicy extends BackgroundFileTransferablePolicy files) { + protected void handleInBackground(List files, TransferAction action) { if (files.size() == 1 && getHashType(files.get(0)) != null) { model.setHashType(getHashType(files.get(0))); } + super.handleInBackground(files, action); } @Override @@ -66,7 +67,7 @@ class ChecksumTableTransferablePolicy extends BackgroundFileTransferablePolicy verificationTracker = new ThreadLocal(); @Override - protected void load(List files) throws IOException { + protected void load(List files, TransferAction action) throws IOException { // initialize drop parameters executor.set(computationService.newExecutor()); verificationTracker.set(new VerificationTracker(3)); diff --git a/source/net/filebot/ui/transfer/BackgroundFileTransferablePolicy.java b/source/net/filebot/ui/transfer/BackgroundFileTransferablePolicy.java index 4c55e788..9838ab86 100644 --- a/source/net/filebot/ui/transfer/BackgroundFileTransferablePolicy.java +++ b/source/net/filebot/ui/transfer/BackgroundFileTransferablePolicy.java @@ -29,14 +29,11 @@ public abstract class BackgroundFileTransferablePolicy extends FileTransferab clear(); } - prepare(files); - - // create and start worker - new BackgroundWorker(files).execute(); + handleInBackground(files, action); } - protected void prepare(List files) { - + protected void handleInBackground(List files, TransferAction action) { + new BackgroundWorker(files, action).execute(); } @Override @@ -91,9 +88,11 @@ public abstract class BackgroundFileTransferablePolicy extends FileTransferab protected class BackgroundWorker extends SwingWorker { private final List files; + private final TransferAction action; - public BackgroundWorker(List files) { + public BackgroundWorker(List files, TransferAction action) { this.files = files; + this.action = action; // register this worker synchronized (workers) { @@ -109,7 +108,7 @@ public abstract class BackgroundFileTransferablePolicy extends FileTransferab threadLocalWorker.set(this); try { - load(files); + load(files, action); } finally { threadLocalWorker.remove(); } diff --git a/source/net/filebot/ui/transfer/FileTransferablePolicy.java b/source/net/filebot/ui/transfer/FileTransferablePolicy.java index 8713e5fa..5a8ddd16 100644 --- a/source/net/filebot/ui/transfer/FileTransferablePolicy.java +++ b/source/net/filebot/ui/transfer/FileTransferablePolicy.java @@ -37,12 +37,12 @@ public abstract class FileTransferablePolicy extends TransferablePolicy { clear(); } - load(files); + load(files, action); } protected abstract boolean accept(List files); - protected abstract void load(List files) throws IOException; + protected abstract void load(List files, TransferAction action) throws IOException; protected abstract void clear();