diff --git a/src/main/java/forge/gui/DialogMigrateProfile.java b/src/main/java/forge/gui/DialogMigrateProfile.java index e1a2714b0b2..7bb10f8e5e6 100644 --- a/src/main/java/forge/gui/DialogMigrateProfile.java +++ b/src/main/java/forge/gui/DialogMigrateProfile.java @@ -25,7 +25,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels.FileChannel; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -173,6 +172,19 @@ public class DialogMigrateProfile { PREFERENCE_FILE } + private class _UnknownDeckChoice { + public final String name; + public final String path; + + public _UnknownDeckChoice(String name0, String path0) { + name = name0; + path = path0; + } + + @Override + public String toString() { return name; } + } + private class _AnalyzerUpdater extends SwingWorker { private final Map>>> _selections = new HashMap>>>(); @@ -206,9 +218,11 @@ public class DialogMigrateProfile { JPanel unknownDeckPanel = new JPanel(new MigLayout("insets 0, gap 5")); unknownDeckPanel.setOpaque(false); _unknownDeckCombo = new JComboBox(); - for (String choice : Arrays.asList("Constructed", "Draft", "Planar", "Scheme", "Sealed")) { - _unknownDeckCombo.addItem(choice); - } + _unknownDeckCombo.addItem(new _UnknownDeckChoice("Constructed", NewConstants.DECK_CONSTRUCTED_DIR)); + _unknownDeckCombo.addItem(new _UnknownDeckChoice("Draft", NewConstants.DECK_DRAFT_DIR)); + _unknownDeckCombo.addItem(new _UnknownDeckChoice("Planar", NewConstants.DECK_PLANE_DIR)); + _unknownDeckCombo.addItem(new _UnknownDeckChoice("Scheme", NewConstants.DECK_SCHEME_DIR)); + _unknownDeckCombo.addItem(new _UnknownDeckChoice("Sealed", NewConstants.DECK_SEALED_DIR)); unknownDeckPanel.add(new FLabel.Builder().text("Treat decks of unknown type as:").build()); unknownDeckPanel.add(_unknownDeckCombo); knownDeckPanel.add(unknownDeckPanel, "span"); @@ -277,11 +291,17 @@ public class DialogMigrateProfile { } log.append(_moveCheckbox.isSelected() ? "Moving" : "Copying"); log.append(" ").append(totalOps).append(" files\n\n"); - for (Pair>> selection : _selections.values()) { + for (Map.Entry>>> entry : _selections.entrySet()) { + Pair>> selection = entry.getValue(); if (selection.getLeft().isSelected()) { for (Pair op : selection.getRight()) { + File dest = op.getRight(); + if (OpType.UNKNOWN_DECK == entry.getKey()) { + _UnknownDeckChoice choice = (_UnknownDeckChoice)_unknownDeckCombo.getSelectedItem(); + dest = new File(choice.path, dest.getName()); + } log.append(String.format("%s -> %s\n", - op.getLeft().getAbsolutePath(), op.getRight().getAbsolutePath())); + op.getLeft().getAbsolutePath(), dest.getAbsolutePath())); } } } @@ -313,7 +333,8 @@ public class DialogMigrateProfile { _disableAll(); - _Importer importer = new _Importer(_selections, _operationLog, _progressBar, _moveCheckbox.isSelected()); + _Importer importer = new _Importer( + _selections, _unknownDeckCombo, _operationLog, _progressBar, _moveCheckbox.isSelected()); importer.execute(); } }); @@ -327,7 +348,7 @@ public class DialogMigrateProfile { private final JProgressBar _progressBar; private final boolean _move; - public _Importer(Map>>> selections, + public _Importer(Map>>> selections, JComboBox unknownDeckCombo, FTextArea operationLog, JProgressBar progressBar, boolean move) { _operationLog = operationLog; _progressBar = progressBar; @@ -340,6 +361,19 @@ public class DialogMigrateProfile { } } _operations = new ArrayList>(totalOps); + for (Map.Entry>>> entry : selections.entrySet()) { + Pair>> selection = entry.getValue(); + if (selection.getLeft().isSelected()) { + if (OpType.UNKNOWN_DECK != entry.getKey()) { + _operations.addAll(selection.getRight()); + } else { + for (Pair op : selection.getRight()) { + _UnknownDeckChoice choice = (_UnknownDeckChoice)unknownDeckCombo.getSelectedItem(); + _operations.add(Pair.of(op.getLeft(), new File(choice.path, op.getRight().getName()))); + } + } + } + } for (Pair>> selection : selections.values()) { if (selection.getLeft().isSelected()) { _operations.addAll(selection.getRight());