From 10f314ff7c076856c2463db157670d7fd2cf06c4 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Sun, 16 Jun 2013 01:09:48 +0000 Subject: [PATCH] * added status indicators for files that can't be renamed because target already exists or because source and target are the same path @see http://www.filebot.net/forums/viewtopic.php?f=6&t=751#p4881 --- .../ui/rename/RenameListCellRenderer.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/source/net/sourceforge/filebot/ui/rename/RenameListCellRenderer.java b/source/net/sourceforge/filebot/ui/rename/RenameListCellRenderer.java index 7ff0c29f..b8df0a1d 100644 --- a/source/net/sourceforge/filebot/ui/rename/RenameListCellRenderer.java +++ b/source/net/sourceforge/filebot/ui/rename/RenameListCellRenderer.java @@ -105,8 +105,7 @@ class RenameListCellRenderer extends DefaultFancyListCellRenderer { if (!renameModel.preserveExtension() && renameModel.hasComplement(index)) { // absolute path mode File file = renameModel.getMatch(index).getCandidate(); - File targetDir = file.getParentFile(); - File path = resolveAbsolutePath(targetDir, formattedFuture.toString()); + File path = resolveAbsolutePath(file.getParentFile(), formattedFuture.toString(), null); setText(isSelected || matchProbablity < 1 ? formatPath(path) : colorizePath(path, true)); String ext = getExtension(path); @@ -148,7 +147,18 @@ class RenameListCellRenderer extends DefaultFancyListCellRenderer { typeRenderer.setText(formattedFuture.getMatch().getValue().toString()); } } - + } + + // check if files already exist + FormattedFuture pathFuture = (FormattedFuture) value; + if (pathFuture.isDone() && !pathFuture.isCancelled()) { + File from = renameModel.getMatch(index).getCandidate(); + File to = resolveAbsolutePath(from.getParentFile(), pathFuture.toString(), renameModel.preserveExtension() ? getExtension(from) : null); + if (from.equals(to)) { + setIcon(ResourceManager.getIcon("dialog.continue")); + } else if (to.exists()) { + setIcon(ResourceManager.getIcon("dialog.cancel")); + } } } } @@ -187,10 +197,10 @@ class RenameListCellRenderer extends DefaultFancyListCellRenderer { } - protected File resolveAbsolutePath(File targetDir, String path) { - File f = new File(path); + protected File resolveAbsolutePath(File targetDir, String path, String extension) { + File f = new File(extension == null || extension.isEmpty() ? path : String.format("%s.%s", path, extension)); if (!f.isAbsolute()) { - f = new File(targetDir, path); // resolve path against target folder + f = new File(targetDir, f.getPath()); // resolve path against target folder } try {