added file info while replacing
This commit is contained in:
parent
38aa55c463
commit
9b6b309bfe
@ -11,7 +11,7 @@ import java.awt.event.KeyEvent;
|
|||||||
*/
|
*/
|
||||||
public class MainApp {
|
public class MainApp {
|
||||||
|
|
||||||
public static final String APP_VERSION = "0.0.8";
|
public static final String APP_VERSION = "0.0.9";
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// Set application name for X11/Wayland WM_CLASS
|
// Set application name for X11/Wayland WM_CLASS
|
||||||
|
|||||||
@ -140,7 +140,7 @@ public class FileOperationQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FileOperations.OverwriteResponse confirmOverwrite(File file) {
|
public FileOperations.OverwriteResponse confirmOverwrite(File source, File destination) {
|
||||||
// In background queue, we might want a default or auto-rename?
|
// In background queue, we might want a default or auto-rename?
|
||||||
// For now, let's assume YES or handle it in the executor if possible.
|
// For now, let's assume YES or handle it in the executor if possible.
|
||||||
// This is tricky for a background queue.
|
// This is tricky for a background queue.
|
||||||
|
|||||||
@ -45,7 +45,7 @@ public class FileOperations {
|
|||||||
} else if (target.exists()) {
|
} else if (target.exists()) {
|
||||||
if (globalResponse[0] == OverwriteResponse.NO_TO_ALL) continue;
|
if (globalResponse[0] == OverwriteResponse.NO_TO_ALL) continue;
|
||||||
if (globalResponse[0] != OverwriteResponse.YES_TO_ALL) {
|
if (globalResponse[0] != OverwriteResponse.YES_TO_ALL) {
|
||||||
OverwriteResponse res = callback.confirmOverwrite(target);
|
OverwriteResponse res = callback.confirmOverwrite(source, target);
|
||||||
if (res == OverwriteResponse.CANCEL) break;
|
if (res == OverwriteResponse.CANCEL) break;
|
||||||
if (res == OverwriteResponse.NO_TO_ALL) {
|
if (res == OverwriteResponse.NO_TO_ALL) {
|
||||||
globalResponse[0] = OverwriteResponse.NO_TO_ALL;
|
globalResponse[0] = OverwriteResponse.NO_TO_ALL;
|
||||||
@ -193,7 +193,7 @@ public class FileOperations {
|
|||||||
if (Files.exists(targetFile)) {
|
if (Files.exists(targetFile)) {
|
||||||
if (globalResponse[0] == OverwriteResponse.NO_TO_ALL) return FileVisitResult.CONTINUE;
|
if (globalResponse[0] == OverwriteResponse.NO_TO_ALL) return FileVisitResult.CONTINUE;
|
||||||
if (globalResponse[0] != OverwriteResponse.YES_TO_ALL) {
|
if (globalResponse[0] != OverwriteResponse.YES_TO_ALL) {
|
||||||
OverwriteResponse res = callback.confirmOverwrite(targetFile.toFile());
|
OverwriteResponse res = callback.confirmOverwrite(file.toFile(), targetFile.toFile());
|
||||||
if (res == OverwriteResponse.CANCEL) return FileVisitResult.TERMINATE;
|
if (res == OverwriteResponse.CANCEL) return FileVisitResult.TERMINATE;
|
||||||
if (res == OverwriteResponse.NO_TO_ALL) {
|
if (res == OverwriteResponse.NO_TO_ALL) {
|
||||||
globalResponse[0] = OverwriteResponse.NO_TO_ALL;
|
globalResponse[0] = OverwriteResponse.NO_TO_ALL;
|
||||||
@ -275,7 +275,7 @@ public class FileOperations {
|
|||||||
if (Files.exists(target.toPath(), LinkOption.NOFOLLOW_LINKS) && !source.getAbsolutePath().equals(target.getAbsolutePath())) {
|
if (Files.exists(target.toPath(), LinkOption.NOFOLLOW_LINKS) && !source.getAbsolutePath().equals(target.getAbsolutePath())) {
|
||||||
if (globalResponse[0] == OverwriteResponse.NO_TO_ALL) continue;
|
if (globalResponse[0] == OverwriteResponse.NO_TO_ALL) continue;
|
||||||
if (globalResponse[0] != OverwriteResponse.YES_TO_ALL) {
|
if (globalResponse[0] != OverwriteResponse.YES_TO_ALL) {
|
||||||
OverwriteResponse res = callback.confirmOverwrite(target);
|
OverwriteResponse res = callback.confirmOverwrite(source, target);
|
||||||
if (res == OverwriteResponse.CANCEL) break;
|
if (res == OverwriteResponse.CANCEL) break;
|
||||||
if (res == OverwriteResponse.NO_TO_ALL) {
|
if (res == OverwriteResponse.NO_TO_ALL) {
|
||||||
globalResponse[0] = OverwriteResponse.NO_TO_ALL;
|
globalResponse[0] = OverwriteResponse.NO_TO_ALL;
|
||||||
@ -870,7 +870,7 @@ public class FileOperations {
|
|||||||
void onProgress(long current, long total, String currentFile);
|
void onProgress(long current, long total, String currentFile);
|
||||||
default void onFileProgress(long current, long total) {}
|
default void onFileProgress(long current, long total) {}
|
||||||
default boolean isCancelled() { return false; }
|
default boolean isCancelled() { return false; }
|
||||||
default OverwriteResponse confirmOverwrite(File file) { return OverwriteResponse.YES; }
|
default OverwriteResponse confirmOverwrite(File source, File destination) { return OverwriteResponse.YES; }
|
||||||
default ErrorResponse onError(File file, Exception e) { return ErrorResponse.ABORT; }
|
default ErrorResponse onError(File file, Exception e) { return ErrorResponse.ABORT; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,9 +16,11 @@ import java.awt.datatransfer.Transferable;
|
|||||||
import java.awt.datatransfer.UnsupportedFlavorException;
|
import java.awt.datatransfer.UnsupportedFlavorException;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -1973,13 +1975,26 @@ public class FilePanelTab extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FileOperations.OverwriteResponse confirmOverwrite(File file) {
|
public FileOperations.OverwriteResponse confirmOverwrite(File source, File destination) {
|
||||||
final FileOperations.OverwriteResponse[] result = new FileOperations.OverwriteResponse[1];
|
final FileOperations.OverwriteResponse[] result = new FileOperations.OverwriteResponse[1];
|
||||||
try {
|
try {
|
||||||
SwingUtilities.invokeAndWait(() -> {
|
SwingUtilities.invokeAndWait(() -> {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
|
||||||
|
String message = String.format(
|
||||||
|
"File already exists: %s\n\n" +
|
||||||
|
"Source file:\n Size: %s\n Modified: %s\n\n" +
|
||||||
|
"Existing file:\n Size: %s\n Modified: %s\n\n" +
|
||||||
|
"Overwrite?",
|
||||||
|
destination.getName(),
|
||||||
|
FileItem.formatSize(source.length()),
|
||||||
|
sdf.format(new Date(source.lastModified())),
|
||||||
|
FileItem.formatSize(destination.length()),
|
||||||
|
sdf.format(new Date(destination.lastModified()))
|
||||||
|
);
|
||||||
|
|
||||||
Object[] options = {"Yes", "Yes to All", "No", "No to All", "Cancel"};
|
Object[] options = {"Yes", "Yes to All", "No", "No to All", "Cancel"};
|
||||||
int n = JOptionPane.showOptionDialog(progressDialog,
|
int n = JOptionPane.showOptionDialog(progressDialog,
|
||||||
"File already exists: " + file.getName() + "\nOverwrite?",
|
message,
|
||||||
"Overwrite Confirmation",
|
"Overwrite Confirmation",
|
||||||
JOptionPane.DEFAULT_OPTION,
|
JOptionPane.DEFAULT_OPTION,
|
||||||
JOptionPane.QUESTION_MESSAGE,
|
JOptionPane.QUESTION_MESSAGE,
|
||||||
|
|||||||
@ -12,7 +12,9 @@ import java.awt.datatransfer.DataFlavor;
|
|||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2156,13 +2158,26 @@ public class MainWindow extends JFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FileOperations.OverwriteResponse confirmOverwrite(File file) {
|
public FileOperations.OverwriteResponse confirmOverwrite(File source, File destination) {
|
||||||
final FileOperations.OverwriteResponse[] result = new FileOperations.OverwriteResponse[1];
|
final FileOperations.OverwriteResponse[] result = new FileOperations.OverwriteResponse[1];
|
||||||
try {
|
try {
|
||||||
SwingUtilities.invokeAndWait(() -> {
|
SwingUtilities.invokeAndWait(() -> {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
|
||||||
|
String message = String.format(
|
||||||
|
"File already exists: %s\n\n" +
|
||||||
|
"Source file:\n Size: %s\n Modified: %s\n\n" +
|
||||||
|
"Existing file:\n Size: %s\n Modified: %s\n\n" +
|
||||||
|
"Overwrite?",
|
||||||
|
destination.getName(),
|
||||||
|
FileItem.formatSize(source.length()),
|
||||||
|
sdf.format(new Date(source.lastModified())),
|
||||||
|
FileItem.formatSize(destination.length()),
|
||||||
|
sdf.format(new Date(destination.lastModified()))
|
||||||
|
);
|
||||||
|
|
||||||
Object[] options = {"Yes", "Yes to All", "No", "No to All", "Cancel"};
|
Object[] options = {"Yes", "Yes to All", "No", "No to All", "Cancel"};
|
||||||
int n = JOptionPane.showOptionDialog(progressDialog,
|
int n = JOptionPane.showOptionDialog(progressDialog,
|
||||||
"File already exists: " + file.getName() + "\nOverwrite?",
|
message,
|
||||||
"Overwrite Confirmation",
|
"Overwrite Confirmation",
|
||||||
JOptionPane.DEFAULT_OPTION,
|
JOptionPane.DEFAULT_OPTION,
|
||||||
JOptionPane.QUESTION_MESSAGE,
|
JOptionPane.QUESTION_MESSAGE,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user