// try to merge overlapping path sections

This commit is contained in:
Reinhard Pointner 2016-04-13 12:34:04 +00:00
parent af3c60eeef
commit 69311852d1
3 changed files with 18 additions and 10 deletions

View File

@ -2,6 +2,7 @@ package net.filebot.ui.rename;
import static net.filebot.Logging.*;
import static net.filebot.media.MediaDetection.*;
import static net.filebot.util.FileUtilities.*;
import java.io.File;
import java.text.Format;
@ -75,9 +76,14 @@ class ExpressionFormatter implements MatchFormatter {
// try to resolve against structure root folder by default
try {
File structureRoot = getStructureRoot(source);
if (structureRoot != null) {
File destinationRoot = listPath(parent).get(0);
while (structureRoot != null) {
// try to merge overlapping path sections
if (!structureRoot.getName().equals(destinationRoot.getName())) {
return new File(structureRoot, destination).getPath();
}
structureRoot = structureRoot.getParentFile();
}
} catch (Exception e) {
debug.log(Level.SEVERE, "Failed to resolve structure root: " + source, e);
}

View File

@ -35,6 +35,7 @@ import net.miginfocom.swing.MigLayout;
class RenameListCellRenderer extends DefaultFancyListCellRenderer {
private RenameModel renameModel;
private String home;
private TypeRenderer typeRenderer = new TypeRenderer();
@ -46,12 +47,13 @@ class RenameListCellRenderer extends DefaultFancyListCellRenderer {
private TextColorizer textColorizer = new TextColorizer();
public RenameListCellRenderer(RenameModel renameModel) {
public RenameListCellRenderer(RenameModel renameModel, File home) {
super(new Insets(4, 7, 4, 7));
this.renameModel = renameModel;
setHighlightingEnabled(false);
this.home = home.getPath();
setHighlightingEnabled(false);
setLayout(new MigLayout("insets 0, fill", "align left", "align center"));
this.add(typeRenderer, "gap rel:push, hidemode 3");
}
@ -169,14 +171,15 @@ class RenameListCellRenderer extends DefaultFancyListCellRenderer {
}
protected String formatPath(File file) {
if (file.getPath().startsWith(home)) {
return "~" + normalizePathSeparators(file.getPath().substring(home.length()));
}
return normalizePathSeparators(file.getPath());
}
protected String colorizePath(File file, boolean hasExtension) {
StringBuilder html = new StringBuilder(512);
html.append("<html><nobr>");
textColorizer.colorizePath(html, file, hasExtension);
html.append("</nobr></html>");
StringBuilder html = new StringBuilder(256);
textColorizer.colorizePath(html, new File(formatPath(file)), hasExtension);
return html.toString();
}
@ -185,7 +188,6 @@ class RenameListCellRenderer extends DefaultFancyListCellRenderer {
if (!f.isAbsolute()) {
f = new File(targetDir, f.getPath()); // resolve path against target folder
}
return f.getAbsoluteFile();
}

View File

@ -152,7 +152,7 @@ public class RenamePanel extends JComponent {
renameModel.useFormatter(FileInfo.class, new FileNameFormatter(renameModel.preserveExtension()));
}
RenameListCellRenderer cellrenderer = new RenameListCellRenderer(renameModel);
RenameListCellRenderer cellrenderer = new RenameListCellRenderer(renameModel, ApplicationFolder.UserHome.getCanonicalFile());
namesList.getListComponent().setCellRenderer(cellrenderer);
filesList.getListComponent().setCellRenderer(cellrenderer);