filebot/source/net/filebot/ui/rename/TextColorizer.java

51 lines
1.5 KiB
Java

package net.filebot.ui.rename;
import static net.filebot.util.FileUtilities.*;
import static net.filebot.util.ui.SwingUI.*;
import java.awt.Color;
import java.io.File;
import java.util.List;
import net.filebot.util.FileUtilities;
public class TextColorizer {
private Color pathRainbowBeginColor;
private Color pathRainbowEndColor;
public TextColorizer() {
this(new Color(0xCC3300), new Color(0x008080));
}
public TextColorizer(Color pathRainbowBeginColor, Color pathRainbowEndColor) {
this.pathRainbowBeginColor = pathRainbowBeginColor;
this.pathRainbowEndColor = pathRainbowEndColor;
}
public StringBuilder colorizePath(StringBuilder html, File file, boolean hasExtension) {
List<File> path = listPath(file);
// colorize parent path
for (int i = 0; i < path.size() - 1; i++) {
float f = (path.size() <= 2) ? 1 : (float) i / (path.size() - 2);
Color c = interpolateHSB(pathRainbowBeginColor, pathRainbowEndColor, f);
html.append(String.format("<span style='color:rgb(%1$d, %2$d, %3$d)'>%4$s</span><span style='color:rgb(%1$d, %2$d, %3$d)'>/</span>", c.getRed(), c.getGreen(), c.getBlue(), escapeHTML(FileUtilities.getFolderName(path.get(i)))));
}
// only colorize extension
if (hasExtension) {
html.append(escapeHTML(FileUtilities.getName(file)));
String extension = FileUtilities.getExtension(file);
if (extension != null) {
html.append(String.format("<span style='color:#607080'>.%s</span>", escapeHTML(extension))); // highlight extension
}
} else {
html.append(file.getName());
}
return html;
}
}