* set "preserve extension" via action popup
* make VerificationFileScanner more fault-tolerant
This commit is contained in:
parent
ca032f3b56
commit
416384901b
|
@ -88,7 +88,7 @@ public class VerificationFileScanner implements Iterator<Entry<File, String>>, C
|
||||||
* | Group 1 | | Group 2 |
|
* | Group 1 | | Group 2 |
|
||||||
* </pre>
|
* </pre>
|
||||||
*/
|
*/
|
||||||
private final Pattern pattern = Pattern.compile("(\\p{XDigit}+)\\s+(?:\\?\\w+)?\\*(.+)");
|
private final Pattern pattern = Pattern.compile("(\\p{XDigit}+)\\s+(?:\\?\\w+)?\\*?(.+)");
|
||||||
|
|
||||||
|
|
||||||
protected Entry<File, String> parseLine(String line) throws IllegalSyntaxException {
|
protected Entry<File, String> parseLine(String line) throws IllegalSyntaxException {
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 748 B |
Binary file not shown.
After Width: | Height: | Size: 586 B |
Binary file not shown.
After Width: | Height: | Size: 273 B |
|
@ -23,6 +23,7 @@ import java.util.prefs.Preferences;
|
||||||
import javax.script.ScriptException;
|
import javax.script.ScriptException;
|
||||||
import javax.swing.AbstractAction;
|
import javax.swing.AbstractAction;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
|
import javax.swing.Icon;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
@ -75,10 +76,13 @@ public class RenamePanel extends JComponent {
|
||||||
filesList.setTitle("Original Files");
|
filesList.setTitle("Original Files");
|
||||||
filesList.setTransferablePolicy(new FilesListTransferablePolicy(renameModel.files()));
|
filesList.setTransferablePolicy(new FilesListTransferablePolicy(renameModel.files()));
|
||||||
|
|
||||||
|
// restore state
|
||||||
|
renameModel.setPreserveExtension(Boolean.valueOf(Settings.userRoot().get("rename.preserveExtension", "true")));
|
||||||
|
|
||||||
// filename formatter
|
// filename formatter
|
||||||
renameModel.useFormatter(File.class, new FileNameFormatter());
|
renameModel.useFormatter(File.class, new FileNameFormatter());
|
||||||
|
|
||||||
// custom episode formatter, if any
|
// restore custom episode formatter
|
||||||
renameModel.useFormatter(Episode.class, persistentFormatExpression.getValue());
|
renameModel.useFormatter(Episode.class, persistentFormatExpression.getValue());
|
||||||
|
|
||||||
RenameListCellRenderer cellrenderer = new RenameListCellRenderer(renameModel);
|
RenameListCellRenderer cellrenderer = new RenameListCellRenderer(renameModel);
|
||||||
|
@ -106,13 +110,16 @@ public class RenamePanel extends JComponent {
|
||||||
renameButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
renameButton.setVerticalTextPosition(SwingConstants.BOTTOM);
|
||||||
renameButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
renameButton.setHorizontalTextPosition(SwingConstants.CENTER);
|
||||||
|
|
||||||
// setup fetch action popup
|
// create fetch popup
|
||||||
ActionPopup fetchPopup = createFetchPopup();
|
ActionPopup fetchPopup = createFetchPopup();
|
||||||
|
|
||||||
namesList.getListComponent().setComponentPopupMenu(fetchPopup);
|
namesList.getListComponent().setComponentPopupMenu(fetchPopup);
|
||||||
matchButton.setComponentPopupMenu(fetchPopup);
|
matchButton.setComponentPopupMenu(fetchPopup);
|
||||||
matchButton.addActionListener(showPopupAction);
|
matchButton.addActionListener(showPopupAction);
|
||||||
|
|
||||||
|
// create settings popup
|
||||||
|
renameButton.setComponentPopupMenu(createSettingsPopup());
|
||||||
|
|
||||||
setLayout(new MigLayout("fill, insets dialog, gapx 10px", "[fill][align center, pref!][fill]", "align 33%"));
|
setLayout(new MigLayout("fill, insets dialog, gapx 10px", "[fill][align center, pref!][fill]", "align 33%"));
|
||||||
|
|
||||||
add(filesList, "grow, sizegroupx list");
|
add(filesList, "grow, sizegroupx list");
|
||||||
|
@ -171,6 +178,18 @@ public class RenamePanel extends JComponent {
|
||||||
return actionPopup;
|
return actionPopup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected ActionPopup createSettingsPopup() {
|
||||||
|
ActionPopup actionPopup = new ActionPopup("Settings", ResourceManager.getIcon("action.rename.small"));
|
||||||
|
|
||||||
|
actionPopup.addDescription(new JLabel("Extension:"));
|
||||||
|
|
||||||
|
actionPopup.add(new PreserveExtensionAction(true, "Preserve", ResourceManager.getIcon("action.extension.preserve")));
|
||||||
|
actionPopup.add(new PreserveExtensionAction(false, "Include", ResourceManager.getIcon("action.extension.include")));
|
||||||
|
|
||||||
|
return actionPopup;
|
||||||
|
}
|
||||||
|
|
||||||
protected final Action showPopupAction = new AbstractAction("Show Popup") {
|
protected final Action showPopupAction = new AbstractAction("Show Popup") {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -186,6 +205,31 @@ public class RenamePanel extends JComponent {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
protected class PreserveExtensionAction extends AbstractAction {
|
||||||
|
|
||||||
|
private final boolean activate;
|
||||||
|
|
||||||
|
|
||||||
|
private PreserveExtensionAction(boolean activate, String name, Icon icon) {
|
||||||
|
super(name, icon);
|
||||||
|
this.activate = activate;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent evt) {
|
||||||
|
renameModel.setPreserveExtension(activate);
|
||||||
|
|
||||||
|
// display changed state
|
||||||
|
filesList.repaint();
|
||||||
|
|
||||||
|
// save state
|
||||||
|
Settings.userRoot().put("rename.preserveExtension", Boolean.toString(activate));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected class AutoFetchEpisodeListAction extends AbstractAction {
|
protected class AutoFetchEpisodeListAction extends AbstractAction {
|
||||||
|
|
||||||
private final EpisodeListProvider provider;
|
private final EpisodeListProvider provider;
|
||||||
|
|
Loading…
Reference in New Issue