mirror of
https://github.com/mitb-archive/filebot
synced 2024-11-17 14:55:09 -05:00
* Added Revert button for people that can't figure out the Revert ContextMenu
This commit is contained in:
parent
576b239a8c
commit
ea9cc3bca7
BIN
source/net/sourceforge/filebot/resources/action.revert.png
Normal file
BIN
source/net/sourceforge/filebot/resources/action.revert.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
@ -132,7 +132,8 @@ class HistoryDialog extends JDialog {
|
|||||||
|
|
||||||
content.add(new JButton(importAction), "wmin button, hmin 25px, gap indent, sg button");
|
content.add(new JButton(importAction), "wmin button, hmin 25px, gap indent, sg button");
|
||||||
content.add(new JButton(new SaveAction("Export", null, exportHandler)), "gap rel, sg button");
|
content.add(new JButton(new SaveAction("Export", null, exportHandler)), "gap rel, sg button");
|
||||||
content.add(new JButton(closeAction), "gap left unrel:push, gap right indent, sg button");
|
content.add(new JButton(new RevertCurrentSelectionAction()), "gap left unrel:push, sgy button");
|
||||||
|
content.add(new JButton(closeAction), "gap left unrel, gap right indent, sg button");
|
||||||
|
|
||||||
JComponent pane = (JComponent) getContentPane();
|
JComponent pane = (JComponent) getContentPane();
|
||||||
pane.setLayout(new MigLayout("fill, insets 0, nogrid"));
|
pane.setLayout(new MigLayout("fill, insets 0, nogrid"));
|
||||||
@ -315,7 +316,6 @@ class HistoryDialog extends JDialog {
|
|||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private final Action closeAction = new AbstractAction("Close") {
|
private final Action closeAction = new AbstractAction("Close") {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -377,7 +377,7 @@ class HistoryDialog extends JDialog {
|
|||||||
|
|
||||||
if (selection.size() > 0) {
|
if (selection.size() > 0) {
|
||||||
JPopupMenu menu = new JPopupMenu();
|
JPopupMenu menu = new JPopupMenu();
|
||||||
menu.add(new RevertAction(selection, HistoryDialog.this));
|
menu.add(new RevertSelectionAction(selection));
|
||||||
|
|
||||||
// display popup
|
// display popup
|
||||||
menu.show(table, e.getX(), e.getY());
|
menu.show(table, e.getX(), e.getY());
|
||||||
@ -387,22 +387,65 @@ class HistoryDialog extends JDialog {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
private static class RevertAction extends AbstractAction {
|
private class RevertCurrentSelectionAction extends RevertAction {
|
||||||
|
|
||||||
|
public RevertCurrentSelectionAction() {
|
||||||
|
super("Revert Selection", HistoryDialog.this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Element> elements() {
|
||||||
|
List<Element> selection = new ArrayList<Element>();
|
||||||
|
|
||||||
|
if (sequenceTable.getSelectedRow() >= 0) {
|
||||||
|
for (int i : sequenceTable.getSelectedRows()) {
|
||||||
|
int index = sequenceTable.convertRowIndexToModel(i);
|
||||||
|
selection.addAll(sequenceModel.getRow(index).elements());
|
||||||
|
}
|
||||||
|
} else if (elementTable.getSelectedRow() >= 0) {
|
||||||
|
for (int i : elementTable.getSelectedRows()) {
|
||||||
|
int index = elementTable.convertRowIndexToModel(i);
|
||||||
|
selection.add(elementModel.getRow(index));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return selection;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private class RevertSelectionAction extends RevertAction {
|
||||||
|
|
||||||
public static final String ELEMENTS = "elements";
|
public static final String ELEMENTS = "elements";
|
||||||
|
|
||||||
|
|
||||||
|
public RevertSelectionAction(Collection<Element> elements) {
|
||||||
|
super("Revert...", HistoryDialog.this);
|
||||||
|
putValue(ELEMENTS, elements.toArray(new Element[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Element> elements() {
|
||||||
|
return Arrays.asList((Element[]) getValue(ELEMENTS));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static abstract class RevertAction extends AbstractAction {
|
||||||
|
|
||||||
public static final String PARENT = "parent";
|
public static final String PARENT = "parent";
|
||||||
|
|
||||||
|
|
||||||
public RevertAction(Collection<Element> elements, HistoryDialog parent) {
|
public RevertAction(String name, HistoryDialog parent) {
|
||||||
putValue(NAME, "Revert...");
|
putValue(NAME, name);
|
||||||
putValue(ELEMENTS, elements.toArray(new Element[0]));
|
putValue(SMALL_ICON, ResourceManager.getIcon("action.revert"));
|
||||||
putValue(PARENT, parent);
|
putValue(PARENT, parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Element[] elements() {
|
public abstract List<Element> elements();
|
||||||
return (Element[]) getValue(ELEMENTS);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public HistoryDialog parent() {
|
public HistoryDialog parent() {
|
||||||
@ -437,6 +480,10 @@ class HistoryDialog extends JDialog {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
List<Element> elements = elements();
|
||||||
|
if (elements.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
// use default directory
|
// use default directory
|
||||||
File directory = null;
|
File directory = null;
|
||||||
|
|
||||||
@ -451,7 +498,7 @@ class HistoryDialog extends JDialog {
|
|||||||
Set<Option> options;
|
Set<Option> options;
|
||||||
|
|
||||||
if (missingFiles.isEmpty()) {
|
if (missingFiles.isEmpty()) {
|
||||||
message = String.format("Are you sure you want to rename %d file(s)?", elements().length);
|
message = String.format("Are you sure you want to rename %d file(s)?", elements.size());
|
||||||
type = QUESTION_MESSAGE;
|
type = QUESTION_MESSAGE;
|
||||||
options = EnumSet.of(Option.Rename, Option.ChangeDirectory, Option.Cancel);
|
options = EnumSet.of(Option.Rename, Option.ChangeDirectory, Option.Cancel);
|
||||||
} else {
|
} else {
|
||||||
@ -500,12 +547,12 @@ class HistoryDialog extends JDialog {
|
|||||||
|
|
||||||
// rename files
|
// rename files
|
||||||
if (selectedOption == Option.Rename) {
|
if (selectedOption == Option.Rename) {
|
||||||
rename(directory);
|
rename(directory, elements);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void rename(File directory) {
|
private void rename(File directory, List<Element> elements) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
for (Entry<File, File> entry : getRenameMap(directory).entrySet()) {
|
for (Entry<File, File> entry : getRenameMap(directory).entrySet()) {
|
||||||
@ -519,11 +566,11 @@ class HistoryDialog extends JDialog {
|
|||||||
|
|
||||||
JLabel status = parent().getInfoLabel();
|
JLabel status = parent().getInfoLabel();
|
||||||
|
|
||||||
if (count == elements().length) {
|
if (count == elements.size()) {
|
||||||
status.setText(String.format("%d file(s) have been renamed.", count));
|
status.setText(String.format("%d file(s) have been renamed.", count));
|
||||||
status.setIcon(ResourceManager.getIcon("status.ok"));
|
status.setIcon(ResourceManager.getIcon("status.ok"));
|
||||||
} else {
|
} else {
|
||||||
status.setText(String.format("Failed to revert %d file(s).", elements().length - count, elements().length));
|
status.setText(String.format("Failed to revert %d file(s).", elements.size() - count, elements.size()));
|
||||||
status.setIcon(ResourceManager.getIcon("status.error"));
|
status.setIcon(ResourceManager.getIcon("status.error"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -568,7 +615,6 @@ class HistoryDialog extends JDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private final FileTransferablePolicy importHandler = new FileTransferablePolicy() {
|
private final FileTransferablePolicy importHandler = new FileTransferablePolicy() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user