diff --git a/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java b/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java
index d7bbf67a941..887940fc145 100644
--- a/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java
+++ b/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java
@@ -27,8 +27,8 @@ import forge.deck.DeckGroup;
import forge.game.limited.BoosterDraft;
import forge.game.limited.IBoosterDraft;
import forge.gui.deckeditor.tables.DeckController;
-import forge.gui.deckeditor.tables.SColumnUtil;
import forge.gui.deckeditor.tables.EditorTableView;
+import forge.gui.deckeditor.tables.SColumnUtil;
import forge.gui.deckeditor.views.VAllDecks;
import forge.gui.deckeditor.views.VCardCatalog;
import forge.gui.deckeditor.views.VCurrentDeck;
@@ -54,7 +54,7 @@ import forge.view.FView;
public class CEditorDraftingProcess extends ACEditorBase {
private IBoosterDraft boosterDraft;
- private String CCAddLabel = new String();
+ private String ccAddLabel = new String();
private DragCell filtersParent = null;
private DragCell allDecksParent = null;
private DragCell deckGenParent = null;
@@ -106,7 +106,7 @@ public class CEditorDraftingProcess extends ACEditorBase
});
*/
- CCAddLabel = VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().getText();
+ ccAddLabel = VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().getText();
VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setText("Choose Card");
}
@@ -189,31 +189,48 @@ public class CEditorDraftingProcess extends ACEditorBase
*
*/
private void saveDraft() {
- String s = "";
- while ((s == null) || (s.length() == 0)) {
- s = JOptionPane.showInputDialog(null,
- "Save this draft as:",
- "Save draft",
- JOptionPane.QUESTION_MESSAGE);
+ String s = JOptionPane.showInputDialog(null,
+ "Save this draft as:",
+ "Save draft",
+ JOptionPane.QUESTION_MESSAGE);
+
+ // Cancel button will be null; OK will return string.
+ // Must check for null value first, then string length.
+ if (s != null) {
+ // Recurse, if empty string.
+ if (s.length() == 0) {
+ saveDraft();
+ return;
+ }
+
+ // Check for overwrite case
+ for (DeckGroup d : Singletons.getModel().getDecks().getDraft()) {
+ if (s.equalsIgnoreCase(d.getName())) {
+ final int m = JOptionPane.showConfirmDialog(null,
+ "There is already a deck named '" + s + "'. Overwrite?",
+ "Overwrite Deck?",
+ JOptionPane.YES_NO_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+
+ // If no overwrite, recurse.
+ if (m == JOptionPane.NO_OPTION) {
+ saveDraft();
+ return;
+ }
+ break;
+ }
+ }
+
+ // Construct computer's decks and save draft
+ final Deck[] computer = this.boosterDraft.getDecks();
+
+ final DeckGroup finishedDraft = new DeckGroup(s);
+ finishedDraft.setHumanDeck((Deck) this.getPlayersDeck().copyTo(s));
+ finishedDraft.addAiDecks(computer);
+
+ Singletons.getModel().getDecks().getDraft().add(finishedDraft);
}
- // TODO: check if overwriting the same name, and let the user delete old
- // drafts
- // construct computer's decks
- // save draft
- final Deck[] computer = this.boosterDraft.getDecks();
-
- final DeckGroup finishedDraft = new DeckGroup(s);
- finishedDraft.setHumanDeck((Deck) this.getPlayersDeck().copyTo(s));
- finishedDraft.addAiDecks(computer);
-
- // DeckManager deckManager = new
- // DeckManager(ForgeProps.getFile(NEW_DECKS));
-
- // write the file
- Singletons.getModel().getDecks().getDraft().add(finishedDraft);
-
- CSubmenuDraft.SINGLETON_INSTANCE.update();
FControl.SINGLETON_INSTANCE.changeState(FControl.HOME_SCREEN);
}
@@ -319,7 +336,7 @@ public class CEditorDraftingProcess extends ACEditorBase
VCurrentDeck.SINGLETON_INSTANCE.getPnlHeader().setVisible(true);
//Re-rename buttons
- VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setText(CCAddLabel);
+ VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setText(ccAddLabel);
//Re-add tabs
if (filtersParent != null) {