diff --git a/src/main/java/forge/Constant.java b/src/main/java/forge/Constant.java
index 44282a7c214..050441d36a2 100644
--- a/src/main/java/forge/Constant.java
+++ b/src/main/java/forge/Constant.java
@@ -2,10 +2,7 @@ package forge;
import forge.deck.Deck;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
+import forge.game.GameType;
/**
@@ -19,11 +16,11 @@ public interface Constant {
public static final String ProgramName = "Forge - http://cardforge.org";
//used to pass information between the GUI screens
- public interface Runtime {
+ public abstract class Runtime {
public static final Deck[] HumanDeck = new Deck[1];
public static final Deck[] ComputerDeck = new Deck[1];
- public static final String[] GameType = new String[1];
-
+ public static GameType gameType = GameType.Constructed;
+
public static final boolean[] Smooth = new boolean[1];
public static final boolean[] Mill = new boolean[1];
public static final boolean[] DevMode = new boolean[1]; // one for normal mode one for quest mode
@@ -40,14 +37,6 @@ public interface Constant {
public static final int[] stackOffset = new int[1];
}
- public interface GameType {
- public static final String Constructed = "constructed";
- public static final String Sealed = "sealed";
- public static final String Draft = "draft";
- public static final List GameTypes = Collections.unmodifiableList(Arrays.asList(Constructed,
- Sealed, Draft));
- }
-
//public interface IO {
// probably should read this from a file, or set from GUI
diff --git a/src/main/java/forge/FileUtil.java b/src/main/java/forge/FileUtil.java
index e135c6366ae..9e701923f74 100644
--- a/src/main/java/forge/FileUtil.java
+++ b/src/main/java/forge/FileUtil.java
@@ -1,12 +1,20 @@
package forge;
import forge.error.ErrorViewer;
+import forge.properties.ForgeProps;
+import forge.properties.NewConstants.LANG.Gui_DownloadPictures.ERRORS;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
+import java.io.IOException;
+import java.net.Proxy;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -114,4 +122,30 @@ public final class FileUtil {
return list;
} //readFile()
+
+ public static void downloadUrlIntoFile(final String url, final File target)
+ {
+ try{
+ byte[] buf = new byte[1024];
+ int len;
+
+ Proxy p = Proxy.NO_PROXY;
+ BufferedInputStream in = new BufferedInputStream(new URL(url).openConnection(p).getInputStream());
+ BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(target));
+
+ //while - read and write file
+ while ((len = in.read(buf)) != -1) {
+ out.write(buf, 0, len);
+
+ }//while - read and write file
+ in.close();
+ out.flush();
+ out.close();
+ }
+ catch (IOException ioex)
+ {
+ ErrorViewer.showError(ioex, ForgeProps.getLocalized(ERRORS.OTHER), "deck_temp.html", url);
+ }
+
+ }
}
diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java
index 6ba5530eb5d..6aac8091705 100644
--- a/src/main/java/forge/GameAction.java
+++ b/src/main/java/forge/GameAction.java
@@ -21,6 +21,7 @@ import forge.card.trigger.Trigger;
import forge.deck.Deck;
import forge.game.GameEndReason;
import forge.game.GameSummary;
+import forge.game.GameType;
import forge.game.PlayerIndex;
import forge.gui.GuiUtils;
import forge.gui.input.Input_Mulligan;
@@ -1120,7 +1121,7 @@ public class GameAction {
Card.resetUniqueNumber();
- boolean canRandomFoil = Constant.Runtime.RndCFoil[0] && Constant.Runtime.GameType[0].equals(Constant.GameType.Constructed);
+ boolean canRandomFoil = Constant.Runtime.RndCFoil[0] && Constant.Runtime.gameType.equals(GameType.Constructed);
Random generator = MyRandom.random;
for (Entry stackOfCards : humanDeck.getMain()) {
diff --git a/src/main/java/forge/Gui_WinLose.java b/src/main/java/forge/Gui_WinLose.java
index 85e9c1e4298..dbe1397b0a4 100644
--- a/src/main/java/forge/Gui_WinLose.java
+++ b/src/main/java/forge/Gui_WinLose.java
@@ -9,7 +9,6 @@ import forge.game.GamePlayerRating;
import forge.game.GameSummary;
import forge.game.PlayerIndex;
import forge.gui.CardListViewer;
-import forge.gui.GuiUtils;
import forge.gui.ListChooser;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
@@ -38,7 +37,6 @@ import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
/**
diff --git a/src/main/java/forge/SetUtils.java b/src/main/java/forge/SetUtils.java
index 4607c4e0578..f2bf99d5ba2 100644
--- a/src/main/java/forge/SetUtils.java
+++ b/src/main/java/forge/SetUtils.java
@@ -9,8 +9,6 @@ import java.util.Map;
import org.apache.commons.lang3.StringUtils;
-import net.slightlymagic.maxmtg.Predicate;
-
import forge.card.CardBlock;
import forge.card.CardSet;
import forge.game.GameFormat;
diff --git a/src/main/java/forge/card/CardBlock.java b/src/main/java/forge/card/CardBlock.java
index de2d49a3411..5a93f12df10 100644
--- a/src/main/java/forge/card/CardBlock.java
+++ b/src/main/java/forge/card/CardBlock.java
@@ -1,7 +1,6 @@
package forge.card;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import net.slightlymagic.maxmtg.Predicate;
diff --git a/src/main/java/forge/card/CardPrinted.java b/src/main/java/forge/card/CardPrinted.java
index 2740ea279ab..5d729ef2780 100644
--- a/src/main/java/forge/card/CardPrinted.java
+++ b/src/main/java/forge/card/CardPrinted.java
@@ -3,7 +3,6 @@ package forge.card;
import java.util.Arrays;
import java.util.List;
-import org.apache.axis.utils.ArrayUtil;
import org.apache.commons.lang3.ArrayUtils;
import net.slightlymagic.braids.util.lambda.Lambda1;
diff --git a/src/main/java/forge/deck/Deck.java b/src/main/java/forge/deck/Deck.java
index c8d8ad0489a..72203155b16 100644
--- a/src/main/java/forge/deck/Deck.java
+++ b/src/main/java/forge/deck/Deck.java
@@ -1,11 +1,11 @@
package forge.deck;
-import forge.Constant;
import forge.PlayerType;
import forge.card.CardDb;
import forge.card.CardPool;
import forge.card.CardPoolView;
import forge.card.CardPrinted;
+import forge.game.GameType;
import java.io.Serializable;
import java.util.*;
@@ -22,10 +22,10 @@ public final class Deck implements Comparable, Serializable {
*/
private static final long serialVersionUID = -7478025567887481994L;
- //gameType is from Constant.GameType, like Constant.GameType.Regular
+ //gameType is from Constant.GameType, like GameType.Regular
private String name;
- private String deckType;
+ private GameType deckType;
private String comment = null;
private PlayerType playerType = null;
@@ -37,7 +37,7 @@ public final class Deck implements Comparable, Serializable {
- //gameType is from Constant.GameType, like Constant.GameType.Regular
+ //gameType is from Constant.GameType, like GameType.Regular
/**
* Constructor for Deck.
*/
@@ -54,7 +54,7 @@ public final class Deck implements Comparable, Serializable {
* @param sideboard a {@link java.util.List} object.
* @param name a {@link java.lang.String} object.
*/
- public Deck(String deckType, List main, List sideboard, String name) {
+ public Deck(GameType deckType, List main, List sideboard, String name) {
setDeckType(deckType);
setName(name);
@@ -67,7 +67,7 @@ public final class Deck implements Comparable, Serializable {
*
* @param type a {@link java.lang.String} object.
*/
- public Deck(final String type) {
+ public Deck(final GameType type) {
this();
setDeckType(type);
}
@@ -95,7 +95,7 @@ public final class Deck implements Comparable, Serializable {
*
* @return a {@link java.lang.String} object.
*/
- public String getDeckType() {
+ public GameType getDeckType() {
return deckType;
}
@@ -105,17 +105,12 @@ public final class Deck implements Comparable, Serializable {
*
* @param deckType a {@link java.lang.String} object.
*/
- void setDeckType(String deckType) {
+ void setDeckType(GameType deckType) {
if (this.getDeckType() != null) {
throw new IllegalStateException(
"Deck : setDeckType() error, deck type has already been set");
}
- if (!Constant.GameType.GameTypes.contains(deckType)) {
- throw new RuntimeException(
- "Deck : setDeckType() error, invalid deck type - " + deckType);
- }
-
this.deckType = deckType;
}
@@ -202,7 +197,7 @@ public final class Deck implements Comparable, Serializable {
* @return a boolean.
*/
public boolean isDraft() {
- return getDeckType().equals(Constant.GameType.Draft);
+ return getDeckType().equals(GameType.Draft);
}
/**
@@ -211,7 +206,7 @@ public final class Deck implements Comparable, Serializable {
* @return a boolean.
*/
public boolean isSealed() {
- return getDeckType().equals(Constant.GameType.Sealed);
+ return getDeckType().equals(GameType.Sealed);
}
/**
@@ -220,7 +215,7 @@ public final class Deck implements Comparable, Serializable {
* @return a boolean.
*/
public boolean isRegular() {
- return getDeckType().equals(Constant.GameType.Constructed);
+ return getDeckType().equals(GameType.Constructed);
}
/**
diff --git a/src/main/java/forge/deck/DeckManager.java b/src/main/java/forge/deck/DeckManager.java
index f6b413a92bc..e92335f73ac 100644
--- a/src/main/java/forge/deck/DeckManager.java
+++ b/src/main/java/forge/deck/DeckManager.java
@@ -1,10 +1,12 @@
package forge.deck;
-import forge.Constant;
import forge.PlayerType;
import forge.card.CardPrinted;
import forge.error.ErrorViewer;
+import forge.game.GameType;
+import forge.properties.ForgeProps;
+import forge.properties.NewConstants;
import java.io.*;
import java.util.*;
@@ -13,12 +15,12 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
+import javax.swing.filechooser.FileFilter;
import org.apache.commons.lang3.StringUtils;
import static java.lang.Integer.parseInt;
import static java.lang.String.format;
-import static java.util.Arrays.asList;
//reads and writeDeck Deck objects
@@ -42,6 +44,18 @@ public class DeckManager {
return name.endsWith(".dck");
}
};
+
+ public static final FileFilter dckFilter = new FileFilter() {
+ @Override
+ public boolean accept(File f) {
+ return f.getName().endsWith(".dck") || f.isDirectory();
+ }
+
+ @Override
+ public String getDescription() {
+ return "Simple Deck File .dck";
+ }
+ };
private static final String NAME = "Name";
private static final String DECK_TYPE = "Deck Type";
@@ -119,7 +133,7 @@ public class DeckManager {
* @param deck a {@link forge.deck.Deck} object.
*/
public void addDeck(Deck deck) {
- if (deck.getDeckType().equals(Constant.GameType.Draft)) {
+ if (deck.getDeckType().equals(GameType.Draft)) {
throw new RuntimeException(
"DeckManager : addDeck() error, deck type is Draft");
}
@@ -174,6 +188,9 @@ public class DeckManager {
}
draftMap.remove(deckName);
+ // delete from disk as well
+ File f = makeFileName(deckName, GameType.Draft);
+ f.delete();
}
/**
@@ -183,37 +200,41 @@ public class DeckManager {
*/
private void checkDraftDeck(Deck[] deck) {
if (deck == null || deck.length != 8 || deck[0].getName().equals("")
- || (!deck[0].getDeckType().equals(Constant.GameType.Draft))) {
+ || (!deck[0].getDeckType().equals(GameType.Draft))) {
throw new RuntimeException("DeckManager : checkDraftDeck() error, invalid deck");
}
}
- /**
- * getDecks.
- *
- * @return a {@link java.util.Collection} object.
- */
public Collection getDecks() {
return deckMap.values();
}
- /**
- * getDraftDecks.
- *
- * @return a {@link java.util.Map} object.
- */
+
public Map getDraftDecks() {
return new HashMap(draftMap);
}
+
- /**
- * close.
- */
- public void close() {
- writeAllDecks();
- }
+ public ArrayList getDeckNames(final GameType deckType) {
+ ArrayList list = new ArrayList();
+ //only get decks according to the OldGuiNewGame screen option
+ if (deckType.equals(GameType.Draft)) {
+ for (String s : getDraftDecks().keySet()) {
+ list.add(s);
+ }
+ } else {
+ for (Deck deck : getDecks()) {
+ if (deckType.equals(deck.getDeckType())) {
+ list.add(deck.toString());
+ }
+ }
+ }
+
+ Collections.sort(list);
+ return list;
+ }
/**
* readAllDecks.
@@ -305,7 +326,7 @@ public class DeckManager {
} else if (COMMENT.equalsIgnoreCase(field)) {
d.setComment(linedata[1]);
} else if (DECK_TYPE.equalsIgnoreCase(field)) {
- d.setDeckType(linedata[1]);
+ d.setDeckType(GameType.smartValueOf(linedata[1]));
} else if (PLAYER.equalsIgnoreCase(field)) {
if ("human".equalsIgnoreCase(linedata[1])) {
d.setPlayerType(PlayerType.HUMAN);
@@ -344,7 +365,7 @@ public class DeckManager {
}
//readDeck deck type
- String deckType = iterator.next();
+ GameType deckType = GameType.smartValueOf(iterator.next());
Deck d = new Deck();
d.setName(name);
@@ -404,61 +425,52 @@ public class DeckManager {
return result;
}
- /**
- * deriveFileName.
- *
- * @param deckName a {@link java.lang.String} object.
- * @return a {@link java.lang.String} object.
- */
- private String deriveFileName(String deckName) {
+ private static String deriveFileName(String deckName) {
//skips all but the listed characters
return deckName.replaceAll("[^-_$#@.{[()]} a-zA-Z0-9]", "");
}
+ //only accepts numbers, letters or dashes up to 20 characters in length
+ public static String cleanDeckName(String in)
+ {
+ char[] c = in.toCharArray();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < c.length && i < 20; i++) {
+ if (Character.isLetterOrDigit(c[i]) || c[i] == '-') {
+ sb.append(c[i]);
+ }
+ }
+ return sb.toString();
+ }
+
+ public static File makeFileName(String deckName, GameType deckType)
+ {
+ File path = ForgeProps.getFile(NewConstants.NEW_DECKS);
+ if (deckType == GameType.Draft)
+ return new File(path, deriveFileName(deckName) + ".bdk");
+ else
+ return new File(path, deriveFileName(deckName) + ".dck");
+ }
+
+ public static File makeFileName(Deck deck)
+ {
+ return makeFileName(deck.getName(), deck.getDeckType());
+ }
+
/**
* writeAllDecks.
*/
- public void writeAllDecks() {
+ public static void writeDraftDecks(Deck[] drafts) {
try {
- //store the files that do exist
- List files = new ArrayList();
- files.addAll(asList(deckDir.listFiles(DCKFileFilter)));
-
- //save the files and remove them from the list
- for (Deck deck : deckMap.values()) {
- File f = new File(deckDir, deriveFileName(deck.getName()) + ".dck");
- files.remove(f);
- BufferedWriter out = new BufferedWriter(new FileWriter(f));
- writeDeck(deck, out);
+ File f = makeFileName(drafts[0]);
+ f.mkdir();
+ for (int i = 0; i < drafts.length; i++) {
+ BufferedWriter out = new BufferedWriter(new FileWriter(new File(f, i + ".dck")));
+ writeDeck(drafts[i], out);
out.close();
}
- //delete the files that were not written out: the decks that were deleted
- for (File file : files) {
- file.delete();
- }
- //store the files that do exist
- files.clear();
- files.addAll(asList(deckDir.listFiles(BDKFileFilter)));
- //save the files and remove them from the list
- for (Entry e : draftMap.entrySet()) {
- File f = new File(deckDir, deriveFileName(e.getValue()[0].getName()) + ".bdk");
- f.mkdir();
- for (int i = 0; i < e.getValue().length; i++) {
- BufferedWriter out = new BufferedWriter(new FileWriter(new File(f, i + ".dck")));
- writeDeck(e.getValue()[i], out);
- out.close();
- }
- }
- /*
- //delete the files that were not written out: the decks that were deleted
- for(File file:files) {
- for(int i = 0; i < 8; i++)
- new File(file, i + ".dck").delete();
- file.delete();
- }
- */
} catch (IOException ex) {
ErrorViewer.showError(ex);
throw new RuntimeException("DeckManager : writeDeck() error, " + ex.getMessage());
@@ -473,10 +485,10 @@ public class DeckManager {
* @throws java.io.IOException if any.
*/
private static void writeDeck(final Deck d, final BufferedWriter out) throws IOException {
- out.write("[metadata]\n");
+ out.write(format("[metadata]%n"));
out.write(format("%s=%s%n", NAME, d.getName().replaceAll("\n", "")));
- out.write(format("%s=%s%n", DECK_TYPE, d.getDeckType().replaceAll("\n", "")));
+ out.write(format("%s=%s%n", DECK_TYPE, d.getDeckType()));
// these are optional
if (d.getComment() != null) { out.write(format("%s=%s%n", COMMENT, d.getComment().replaceAll("\n", ""))); }
if (d.getPlayerType() != null) { out.write(format("%s=%s%n", PLAYER, d.getPlayerType())); }
@@ -491,26 +503,6 @@ public class DeckManager {
}
}
- /**
- * count.
- *
- * @param src a {@link java.util.List} object.
- * @return a {@link java.util.Map} object.
- */
- /*
- private static Map count(List src) {
- Map result = new HashMap();
- for (String s : src) {
- Integer dstValue = result.get(s);
- if (dstValue == null) {
- result.put(s, 1);
- } else {
- result.put(s, dstValue + 1);
- }
- }
- return result;
- }
- */
/**
* writeDeck.
@@ -522,7 +514,6 @@ public class DeckManager {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(f));
writeDeck(d, writer);
-
writer.close();
} catch (IOException e) {
throw new RuntimeException(e);
diff --git a/src/main/java/forge/game/limited/BoosterDraftAI.java b/src/main/java/forge/game/limited/BoosterDraftAI.java
index a5784471840..b7fabd2fd42 100644
--- a/src/main/java/forge/game/limited/BoosterDraftAI.java
+++ b/src/main/java/forge/game/limited/BoosterDraftAI.java
@@ -9,6 +9,7 @@ import forge.Constant;
import forge.MyRandom;
import forge.card.spellability.Ability_Mana;
import forge.deck.Deck;
+import forge.game.GameType;
import java.util.*;
@@ -295,7 +296,7 @@ public class BoosterDraftAI {
* @return a {@link forge.deck.Deck} object.
*/
private Deck buildDeck(CardList dList, DeckColors pClrs) {
- Deck out = new Deck(Constant.GameType.Draft);
+ Deck out = new Deck(GameType.Draft);
CardList outList = new CardList();
int cardsNeeded = 22;
int landsNeeded = 18;
@@ -496,7 +497,7 @@ public class BoosterDraftAI {
/* private Deck getDeck(CardList list)
{
- Deck out = new Deck(Constant.GameType.Draft);
+ Deck out = new Deck(GameType.Draft);
for(int i = 0; i < list.size(); i++)
out.addMain(list.get(i).getName());
diff --git a/src/main/java/forge/game/limited/SealedDeck.java b/src/main/java/forge/game/limited/SealedDeck.java
index 94b4666a80c..704c410e59d 100644
--- a/src/main/java/forge/game/limited/SealedDeck.java
+++ b/src/main/java/forge/game/limited/SealedDeck.java
@@ -16,6 +16,7 @@ import forge.card.CardPool;
import forge.card.CardSet;
import forge.card.spellability.Ability_Mana;
import forge.deck.Deck;
+import forge.game.GameType;
import forge.gui.GuiUtils;
import javax.swing.*;
@@ -397,7 +398,7 @@ public class SealedDeck {
}
}
- Deck aiDeck = new Deck(Constant.GameType.Sealed);
+ Deck aiDeck = new Deck(GameType.Sealed);
for (i = 0; i < deck.size(); i++)
aiDeck.addMain(deck.get(i).getName() + "|" + deck.get(i).getCurSetCode());
diff --git a/src/main/java/forge/gui/deckeditor/DeckDisplay.java b/src/main/java/forge/gui/deckeditor/DeckDisplay.java
index 2525b4bc234..5d1c3ae11a6 100644
--- a/src/main/java/forge/gui/deckeditor/DeckDisplay.java
+++ b/src/main/java/forge/gui/deckeditor/DeckDisplay.java
@@ -1,6 +1,8 @@
package forge.gui.deckeditor;
import forge.card.CardPoolView;
+import forge.deck.Deck;
+import forge.game.GameType;
/**
* Created by IntelliJ IDEA.
@@ -11,37 +13,19 @@ import forge.card.CardPoolView;
* @version $Id$
*/
public interface DeckDisplay {
- /**
- * updateDisplay.
- *
- * @param top a {@link forge.CardList} object.
- * @param bottom a {@link forge.CardList} object.
- */
- void setDecks(CardPoolView top, CardPoolView bottom);
+ void setDeck(CardPoolView top, CardPoolView bottom, GameType gameType);
//top shows available card pool
//if constructed, top shows all cards
//if sealed, top shows 5 booster packs
//if draft, top shows cards that were chosen
- /**
- * getTop.
- *
- * @return a {@link forge.CardList} object.
- */
CardPoolView getTop();
//bottom shows cards that the user has chosen for his library
- /**
- * getBottom.
- *
- * @return a {@link forge.CardList} object.
- */
CardPoolView getBottom();
- /**
- * setTitle.
- *
- * @param message a {@link java.lang.String} object.
- */
void setTitle(String message);
+
+ Deck getDeck();
+ GameType getGameType();
}
diff --git a/src/main/java/forge/gui/deckeditor/DeckEditor.java b/src/main/java/forge/gui/deckeditor/DeckEditor.java
index 83f4b15aa17..0c794d5ede7 100644
--- a/src/main/java/forge/gui/deckeditor/DeckEditor.java
+++ b/src/main/java/forge/gui/deckeditor/DeckEditor.java
@@ -4,6 +4,8 @@ import java.awt.Container;
import java.awt.Font;
import java.awt.Frame;
import java.awt.event.ActionEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
@@ -16,13 +18,14 @@ import javax.swing.JCheckBox;
import javax.swing.JLabel;
import net.miginfocom.swing.MigLayout;
import net.slightlymagic.maxmtg.Predicate;
+import forge.AllZone;
import forge.Command;
-import forge.Constant;
import forge.card.CardDb;
+import forge.card.CardPool;
+import forge.card.CardPoolView;
import forge.card.CardPrinted;
-import forge.deck.Deck;
import forge.error.ErrorViewer;
-import forge.properties.NewConstants;
+import forge.game.GameType;
import forge.view.swing.OldGuiNewGame;
/**
@@ -33,7 +36,7 @@ import forge.view.swing.OldGuiNewGame;
* @author Forge
* @version $Id$
*/
-public final class DeckEditor extends DeckEditorBase implements NewConstants {
+public final class DeckEditor extends DeckEditorBase {
/** Constant serialVersionUID=130339644136746796L */
private static final long serialVersionUID = 130339644136746796L;
@@ -44,17 +47,9 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
private JButton analysisButton = new JButton();
private JButton clearFilterButton = new JButton();
- private JLabel jLabelAnalysisGap = new JLabel();
+ private JLabel jLabelAnalysisGap = new JLabel("");
private FilterNameTypeSetPanel filterNameTypeSet;
- private boolean isConstructed = false;
-
- /** {@inheritDoc} */
- @Override
- public void setTitle(final String message) {
- super.setTitle(message);
- }
-
public void show(final Command exitCommand) {
final Command exit = new Command() {
private static final long serialVersionUID = 5210924838133689758L;
@@ -65,7 +60,7 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
}
};
- customMenu = new DeckEditorMenu(this, exit);
+ customMenu = new DeckEditorMenu(this, AllZone.getDeckManager(), exit);
this.setJMenuBar(customMenu);
// do not change this!!!!
@@ -78,11 +73,11 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
setup();
- isConstructed = Constant.Runtime.GameType[0].equals(Constant.GameType.Constructed);
+
// show cards, makes this user friendly
- if (isConstructed) {
- customMenu.newConstructed();
+ if (!getGameType().isLimited()) {
+ customMenu.newConstructed(false);
}
top.sort(1, true);
@@ -115,12 +110,8 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
}
- /**
- *
- * Constructor for Gui_DeckEditor.
- *
- */
- public DeckEditor() {
+ public DeckEditor(GameType gameType) {
+ super(gameType);
try {
filterBoxes = new FilterCheckBoxes(true);
top = new TableWithCards("Avaliable Cards", true, true);
@@ -136,44 +127,28 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
private void jbInit() {
- // removeButton.setIcon(upIcon);
+
if (!OldGuiNewGame.useLAFFonts.isSelected()) {
- removeButton.setFont(new java.awt.Font("Dialog", 0, 13));
+ Font fButtons = new java.awt.Font("Dialog", 0, 13);
+ removeButton.setFont(fButtons);
+ addButton.setFont(fButtons);
+ clearFilterButton.setFont(fButtons);
+ analysisButton.setFont(fButtons);
}
+
+ addButton.setText("Add to Deck");
removeButton.setText("Remove from Deck");
- removeButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(final ActionEvent e) {
- removeButtonClicked(e);
- }
- });
- addButton.setText("Add to Deck");
- addButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(final ActionEvent e) {
- addButton_actionPerformed(e);
- }
- });
- // addButton.setIcon(downIcon);
- if (!OldGuiNewGame.useLAFFonts.isSelected()) {
- addButton.setFont(new java.awt.Font("Dialog", 0, 13));
- }
clearFilterButton.setText("Clear Filter");
- clearFilterButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(final ActionEvent e) {
- clearFilterButton_actionPerformed(e);
- }
- });
- if (!OldGuiNewGame.useLAFFonts.isSelected()) {
- clearFilterButton.setFont(new java.awt.Font("Dialog", 0, 13));
- }
analysisButton.setText("Deck Analysis");
+
+ removeButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(final ActionEvent e) { removeButtonClicked(e); } });
+ addButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(final ActionEvent e) { addButton_actionPerformed(e); } });
+ clearFilterButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(final ActionEvent e) { clearFilterButton_actionPerformed(e); } });
analysisButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(final ActionEvent e) {
- analysisButton_actionPerformed(e);
- }
- });
- if (!OldGuiNewGame.useLAFFonts.isSelected()) {
- analysisButton.setFont(new java.awt.Font("Dialog", 0, 13));
- }
+ public void actionPerformed(final ActionEvent e) { analysisButton_actionPerformed(e); } });
// Type filtering
Font f = new Font("Tahoma", Font.PLAIN, 10);
@@ -195,10 +170,7 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
MigLayout layout = new MigLayout("fill");
pane.setLayout(layout);
- // this.getContentPane().add(landCheckBox,
- // "cell 0 0, egx checkbox, split 16");
boolean isFirst = true;
-
for (JCheckBox box : filterBoxes.allTypes) {
String growParameter = "grow";
if (isFirst) {
@@ -214,36 +186,27 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
box.addItemListener(itemListenerUpdatesDisplay);
}
- //this.getContentPane().add(filterButton, "wmin 100, hmin 25, wmax 140, hmax 25, grow");
this.getContentPane().add(clearFilterButton, "wmin 100, hmin 25, wmax 140, hmax 25, grow");
this.getContentPane().add(filterNameTypeSet, "cell 0 1, grow");
this.getContentPane().add(top.getTableDecorated(), "cell 0 2 1 2, pushy, grow");
-
- this.getContentPane().add(cardView, "cell 1 0 1 8, flowy, grow");
-
-
-
this.getContentPane().add(top.getLabel(), "cell 0 4");
this.getContentPane().add(addButton, "w 100, h 49, sg button, cell 0 5, split 4");
this.getContentPane().add(removeButton, "w 100, h 49, sg button");
-
- // jLabel4 is used to push the analysis button to the right
- // This will separate this button from the add and remove card buttons
- jLabelAnalysisGap.setText("");
+ // Label is used to push the analysis button to the right to separate analysis button from add/remove card ones
this.getContentPane().add(jLabelAnalysisGap, "wmin 100, grow");
-
this.getContentPane().add(analysisButton, "w 100, h 49, wrap");
this.getContentPane().add(bottom.getTableDecorated(), "cell 0 6, grow");
this.getContentPane().add(bottom.getLabel(), "cell 0 7");
+ this.getContentPane().add(cardView, "cell 1 0 1 8, flowy, grow");
+
top.getTable().addMouseListener(new MouseAdapter() {
- @Override public void mouseClicked(final MouseEvent e) {
- if (e.getClickCount() == 2) { addCardToDeck(); }
- }
- });
+ @Override public void mouseClicked(final MouseEvent e) { if (e.getClickCount() == 2) { addCardToDeck(); } } });
+ top.getTable().addKeyListener(new KeyAdapter() {
+ @Override public void keyPressed(final KeyEvent e) { if (e.getKeyChar() == ' ') { addCardToDeck(); } } });
//javax.swing.JRootPane rootPane = this.getRootPane();
//rootPane.setDefaultButton(filterButton);
@@ -254,6 +217,17 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
return Predicate.and(filterBoxes.buildFilter(), filterNameTypeSet.buildFilter());
}
+ @Override
+ public void setDeck(CardPoolView topParam, CardPoolView bottomParam, GameType gt)
+ {
+ boolean keepRecievedCards = gt.isLimited() || topParam != null;
+ // if constructed, can add the all cards above
+ CardPoolView top = keepRecievedCards ? topParam : new CardPool( CardDb.instance().getAllCards() );
+
+ super.setDeck(top, bottomParam, gt);
+
+ }
+
void clearFilterButton_actionPerformed(ActionEvent e) {
// disable automatic update triggered by listeners
isFiltersChangeFiringUpdate = false;
@@ -279,9 +253,11 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
setTitle("Deck Editor : " + customMenu.getDeckName() + " : unsaved");
bottom.addCard(card);
- if (!isConstructed) {
+ if (getGameType().isLimited()) {
top.removeCard(card);
}
+
+ customMenu.notifyDeckChange();
}
void removeButtonClicked(ActionEvent e) {
@@ -291,31 +267,10 @@ public final class DeckEditor extends DeckEditorBase implements NewConstants {
setTitle("Deck Editor : " + customMenu.getDeckName() + " : unsaved");
bottom.removeCard(card);
- if (!isConstructed) {
+ if (getGameType().isLimited()) {
top.addCard(card);
}
+
+ customMenu.notifyDeckChange();
}
-
- // refresh Gui from deck, Gui shows the cards in the deck
- /**
- *
- * refreshGui.
- *
- */
- @SuppressWarnings("unused")
- // refreshGui
- private void refreshGui() {
- Deck deck = Constant.Runtime.HumanDeck[0];
- if (deck == null) // this is just a patch, i know
- deck = new Deck(Constant.Runtime.GameType[0]);
-
- bottom.setDeck(deck.getMain());
-
- if (deck.isSealed() || deck.isDraft()) {
- top.setDeck(deck.getSideboard()); // add sideboard to GUI
- } else {
- top.setDeck(CardDb.instance().getAllUniqueCards());
- }
- }
-
}
diff --git a/src/main/java/forge/gui/deckeditor/DeckEditorBase.java b/src/main/java/forge/gui/deckeditor/DeckEditorBase.java
index 79583c6ea24..0c7c4680205 100644
--- a/src/main/java/forge/gui/deckeditor/DeckEditorBase.java
+++ b/src/main/java/forge/gui/deckeditor/DeckEditorBase.java
@@ -14,6 +14,8 @@ import net.slightlymagic.maxmtg.Predicate;
import forge.GUI_DeckAnalysis;
import forge.card.CardPrinted;
import forge.card.CardPoolView;
+import forge.deck.Deck;
+import forge.game.GameType;
public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
private static final long serialVersionUID = -401223933343539977L;
@@ -28,6 +30,10 @@ public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
// CardPools and Table data for top and bottom lists
protected TableWithCards top;
protected TableWithCards bottom;
+
+
+ private GameType gameType;
+ public GameType getGameType() { return gameType; }
// top shows available card pool
// if constructed, top shows all cards
@@ -55,7 +61,13 @@ public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
}
}
- public void setDecks(CardPoolView topParam, CardPoolView bottomParam) {
+ public DeckEditorBase(GameType gametype)
+ {
+ gameType = gametype;
+ }
+
+ public void setDeck(CardPoolView topParam, CardPoolView bottomParam, GameType gt) {
+ gameType = gt;
top.setDeck(topParam);
bottom.setDeck(bottomParam);
}
@@ -76,4 +88,16 @@ public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
@Override public void removeUpdate(DocumentEvent e) { onChange(); }
@Override public void changedUpdate(DocumentEvent e) { } // Happend only on ENTER pressed
}
+
+ public Deck getDeck() {
+ Deck deck = new Deck(gameType);
+ deck.addMain(getBottom());
+
+ //if sealed or draft, move "top" to sideboard
+ if (gameType.isLimited() && gameType != GameType.Quest) {
+ deck.addSideboard(getTop());
+ }
+ return deck;
+ }//getDeck()
+
}
diff --git a/src/main/java/forge/gui/deckeditor/DeckEditorDraft.java b/src/main/java/forge/gui/deckeditor/DeckEditorDraft.java
index 62fca031a96..69b6bb13e0b 100644
--- a/src/main/java/forge/gui/deckeditor/DeckEditorDraft.java
+++ b/src/main/java/forge/gui/deckeditor/DeckEditorDraft.java
@@ -10,6 +10,7 @@ import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.deck.DeckManager;
import forge.error.ErrorViewer;
+import forge.game.GameType;
import forge.game.limited.BoosterDraft;
import forge.gui.GuiUtils;
import forge.properties.ForgeProps;
@@ -106,8 +107,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
this.setResizable(false);
top.getTable().addKeyListener(new KeyAdapter() {
- @Override
- public void keyPressed(final KeyEvent e) {
+ @Override public void keyPressed(final KeyEvent e) {
if (e.getKeyChar() == ' ') { jButton1_actionPerformed(null); }
}
});
@@ -115,6 +115,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
}
public DeckEditorDraft() {
+ super(GameType.Draft);
try {
top = new TableWithCards("Choose one card", false);
bottom = new TableWithCards("Previously picked cards", true);
@@ -217,7 +218,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
* @return a {@link forge.deck.Deck} object.
*/
private Deck getPlayersDeck() {
- Deck deck = new Deck(Constant.GameType.Draft);
+ Deck deck = new Deck(GameType.Draft);
Constant.Runtime.HumanDeck[0] = deck;
//add sideboard to deck
@@ -265,7 +266,7 @@ public class DeckEditorDraft extends DeckEditorBase implements NewConstants, New
deckManager.addDraftDeck(all);
//write file
- deckManager.close();
+ DeckManager.writeDraftDecks(all);
//close and open next screen
dispose();
diff --git a/src/main/java/forge/gui/deckeditor/DeckEditorMenu.java b/src/main/java/forge/gui/deckeditor/DeckEditorMenu.java
index 7c957ff9e1e..17479d55a44 100644
--- a/src/main/java/forge/gui/deckeditor/DeckEditorMenu.java
+++ b/src/main/java/forge/gui/deckeditor/DeckEditorMenu.java
@@ -1,37 +1,33 @@
package forge.gui.deckeditor;
-
-import forge.AllZone;
import forge.Card;
import forge.CardList;
import forge.Command;
-import forge.Constant;
import forge.card.CardDb;
import forge.card.CardPool;
-import forge.card.CardPoolView;
import forge.deck.Deck;
import forge.deck.DeckManager;
-import forge.deck.DownloadDeck;
import forge.deck.generate.GenerateConstructedDeck;
-import forge.error.BugzReporter;
import forge.error.ErrorViewer;
+import forge.game.GameType;
import forge.gui.GuiUtils;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
-import forge.properties.NewConstants.LANG.Gui_DownloadPictures.ERRORS;
-
-import javax.swing.*;
-import javax.swing.filechooser.FileFilter;
+import org.apache.commons.lang3.StringUtils;
+import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
-import java.net.Proxy;
-import java.net.URL;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
+
+import javax.swing.JFileChooser;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
/**
* Gui_DeckEditor_Menu class.
@@ -44,69 +40,31 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
/** Constant serialVersionUID=-4037993759604768755L */
private static final long serialVersionUID = -4037993759604768755L;
- //used by importConstructed() and exportConstructected()
/** Constant previousDirectory */
private static File previousDirectory = null;
-
- /** Constant debugPrint=false */
- private static final boolean debugPrint = false;
-
- //private final DeckManager deckManager = new DeckManager(ForgeProps.getFile(NEW_DECKS));
- private DeckManager deckManager = AllZone.getDeckManager();
+ private DeckManager deckManager;
- //with the new IO, there's no reason to use different instances
-
- private boolean isDeckSaved;
+ private boolean isDeckSaved = true;
private String currentDeckName;
- private String currentGameType;
- //private String currentDeckPlayerType;
-
- /**
- * Setter for the field currentGameType.
- *
- * @param gameType a {@link java.lang.String} object.
- * @since 1.0.15
- */
- public final void setCurrentGameType(final String gameType) {
- currentGameType = gameType;
- }
-
- //private JMenuItem newDraftItem;
private DeckDisplay deckDisplay;
private Command exitCommand;
- /**
- * Constructor for Gui_DeckEditor_Menu.
- *
- * @param in_display a {@link forge.gui.deckeditor.DeckDisplay} object.
- * @param exit a {@link forge.Command} object.
- */
- public DeckEditorMenu(final DeckDisplay in_display, final Command exit) {
+
+ public DeckEditorMenu(final DeckDisplay in_display, final DeckManager dckManager, final Command exit) {
deckDisplay = in_display;
exitCommand = exit;
-
+ deckManager = dckManager;
+
//this is added just to make save() and saveAs() work ok
//when first started up, just a silly patch
- currentGameType = Constant.GameType.Constructed;
- setDeckData("", false);
+ setDeckData("", true);
setupMenu();
setupSortMenu();
-
- JMenu bugMenu = new JMenu("Report Bug");
- JMenuItem bugReport = new JMenuItem("Report Bug");
- bugReport.addActionListener(new ActionListener() {
- public void actionPerformed(final ActionEvent ev) {
- BugzReporter br = new BugzReporter();
- br.setVisible(true);
- }
- });
- bugMenu.add(bugReport);
- this.add(bugMenu);
}
@@ -120,7 +78,6 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
JMenuItem type = new JMenuItem("Type");
JMenuItem stats = new JMenuItem("Power/Toughness");
JMenuItem rarity = new JMenuItem("Rarity");
- JMenuItem newFirst = new JMenuItem("Most recently added");
JMenu menu = new JMenu("Sort By");
menu.add(name);
@@ -130,262 +87,94 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
menu.add(stats);
menu.add(rarity);
- // menu.add(newFirst);
- /*
- * The "Most recently added" menu now causes an error exception. This will prevent
- * this option from appearing in the "Sort By" menu. There may be a way (or not)
- * to sort the indivudual card files by the date created or the date last modified.
- */
-
this.add(menu);
- //add listeners
-
-
name.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent ev) {
- //index 1 sorts by card name - for more info see TableSorter
- // 0 1 2 3 4 5 6
- //private String column[] = {"Qty", "Name", "Cost", "Color", "Type", "Stats", "Rarity"};
- DeckEditor g = (DeckEditor) deckDisplay;
- g.getTopTableModel().sort(1, true);
-
+ ((DeckEditor) deckDisplay).getTopTableModel().sort(1, true);
}
});
+ // 0 1 2 3 4 5 6
+ //private String column[] = {"Qty", "Name", "Cost", "Color", "Type", "Stats", "Rarity"};
cost.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent ev) {
- // 0 1 2 3 4 5 6
- //private String column[] = {"Qty", "Name", "Cost", "Color", "Type", "Stats", "Rarity"};
- DeckEditor g = (DeckEditor) deckDisplay;
-
- //sort by type, color, cost
- g.getTopTableModel().sort(4, true);
- g.getTopTableModel().sort(3, true);
- g.getTopTableModel().sort(2, true);
+ ((DeckEditor) deckDisplay).getTopTableModel().sort(4).sort(3).sort(2);
}
});
color.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent ev) {
- // 0 1 2 3 4 5 6
- //private String column[] = {"Qty", "Name", "Cost", "Color", "Type", "Stats", "Rarity"};
- DeckEditor g = (DeckEditor) deckDisplay;
-
- //sort by type, cost, color
- g.getTopTableModel().sort(4, true);
- g.getTopTableModel().sort(2, true);
- g.getTopTableModel().sort(3, true);
+ ((DeckEditor) deckDisplay).getTopTableModel().sort(4).sort(2).sort(3);
}
});
type.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent ev) {
- // 0 1 2 3 4 5 6
- //private String column[] = {"Qty", "Name", "Cost", "Color", "Type", "Stats", "Rarity"};
- DeckEditor g = (DeckEditor) deckDisplay;
-
- //sort by cost, color, type
- g.getTopTableModel().sort(2, true);
- g.getTopTableModel().sort(3, true);
- g.getTopTableModel().sort(4, true);
+ ((DeckEditor) deckDisplay).getTopTableModel().sort(2).sort(3).sort(4);
}
});
stats.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent ev) {
- // 0 1 2 3 4 5 6
- //private String column[] = {"Qty", "Name", "Cost", "Color", "Type", "Stats", "Rarity"};
- DeckEditor g = (DeckEditor) deckDisplay;
-
- g.getTopTableModel().sort(4, true);
- g.getTopTableModel().sort(2, true);
- g.getTopTableModel().sort(3, true);
- g.getTopTableModel().sort(5, true);
+ ((DeckEditor) deckDisplay).getTopTableModel().sort(4).sort(2).sort(3).sort(5);
}
});
rarity.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent ev) {
- // 0 1 2 3 4 5 6
- //private String column[] = {"Qty", "Name", "Cost", "Color", "Type", "Stats", "Rarity"};
- DeckEditor g = (DeckEditor) deckDisplay;
-
//sort by cost, type, color, rarity
- g.getTopTableModel().sort(2, true);
- g.getTopTableModel().sort(4, true);
- g.getTopTableModel().sort(3, true);
- g.getTopTableModel().sort(6, true);
+ ((DeckEditor) deckDisplay).getTopTableModel().sort(2).sort(4).sort(3).sort(6);
}
});
-
- newFirst.addActionListener(new ActionListener() {
- public void actionPerformed(final ActionEvent ev) {
- // 0 1 2 3 4 5 6
- //private String column[] = {"Qty", "Name", "Cost", "Color", "Type", "Stats", "Rarity"};
- DeckEditor g = (DeckEditor) deckDisplay;
-
- g.getTopTableModel().sort(99, true);
- }
- });
-
- }//setupSortMenu()
+ } //setupSortMenu()
- /**
- * newConstructed.
- */
- public void newConstructed() {
- if (debugPrint) {
- System.out.println("New Constructed");
- }
+ public void newConstructed(boolean careAboutOldDeck) {
+ if (careAboutOldDeck && !canLeaveCurrentDeck()) return;
-// if(! isDeckSaved)
-// save();
+ setDeckData("", true);
- currentGameType = Constant.GameType.Constructed;
- setDeckData("", false);
+ deckDisplay.setDeck(null, null, GameType.Constructed);
+ }
- CardPool allCards = new CardPool();
- allCards.addAllCards(CardDb.instance().getAllCards());
-
- deckDisplay.setDecks(allCards, null);
- }//new constructed
-
- /**
- * newRandomConstructed.
- */
private void newRandomConstructed() {
- if (debugPrint) {
- System.out.println("Random Constructed");
- }
+ if (!canLeaveCurrentDeck()) return;
-// if(! isDeckSaved)
-// save();
-
- currentGameType = Constant.GameType.Constructed;
setDeckData("", false);
- CardList random = new CardList(AllZone.getCardFactory().getRandomCombinationWithoutRepetition(15 * 5));
- random.add(AllZone.getCardFactory().getCard("Forest", AllZone.getHumanPlayer()));
- random.add(AllZone.getCardFactory().getCard("Island", AllZone.getHumanPlayer()));
- random.add(AllZone.getCardFactory().getCard("Plains", AllZone.getHumanPlayer()));
- random.add(AllZone.getCardFactory().getCard("Mountain", AllZone.getHumanPlayer()));
- random.add(AllZone.getCardFactory().getCard("Swamp", AllZone.getHumanPlayer()));
- random.add(AllZone.getCardFactory().getCard("Terramorphic Expanse", AllZone.getHumanPlayer()));
+ // The only remaining reference to global variable!
+ CardList random = new CardList(forge.AllZone.getCardFactory().getRandomCombinationWithoutRepetition(15 * 5));
CardPool cpRandom = new CardPool();
for (Card c : random) { cpRandom.add(CardDb.instance().getCard(c)); }
+ cpRandom.add(CardDb.instance().getCard("Forest"));
+ cpRandom.add(CardDb.instance().getCard("Island"));
+ cpRandom.add(CardDb.instance().getCard("Plains"));
+ cpRandom.add(CardDb.instance().getCard("Swamp"));
+ cpRandom.add(CardDb.instance().getCard("Mountain"));
+ cpRandom.add(CardDb.instance().getCard("Terramorphic Expanse"));
+ deckDisplay.setDeck(cpRandom, null, GameType.Constructed);
+ }
- deckDisplay.setDecks(cpRandom, new CardPoolView());
- }//new sealed
-
-
- /**
- * newGenerateConstructed.
- */
private void newGenerateConstructed() {
- if (debugPrint) {
- System.out.println("Generate Constructed");
- }
+ if (!canLeaveCurrentDeck()) return;
-// if(! isDeckSaved)
-// save();
-
- currentGameType = Constant.GameType.Constructed;
setDeckData("", false);
GenerateConstructedDeck gen = new GenerateConstructedDeck();
- // This is an expensive heap operation.
- CardPool allCards = new CardPool( CardDb.instance().getAllCards() );
-
CardPool generated = new CardPool();
for (Card c : gen.generateDeck()) { generated.add( CardDb.instance().getCard(c)); }
- deckDisplay.setDecks(allCards, generated);
- }//new sealed
+ deckDisplay.setDeck(null, generated, GameType.Constructed);
+ }
-/* private void newSealed() {
- if (debugPrint) {
- System.out.println("New Sealed");
- }
-
-// if(! isDeckSaved)
-// save();
-
- currentGameType = Constant.GameType.Sealed;
- setDeckData("", false);
-
- deckDisplay.updateDisplay(new ReadBoosterPack().getBoosterPack5(), new CardList());
- }//new sealed
-*/
-/* private void newDraft() {
- if (debugPrint) {
- System.out.println("New Draft");
- }
-
-// if(! isDeckSaved)
-// save();
-
- currentGameType = Constant.GameType.Draft;
-
- //move all cards from deck main and sideboard to CardList
- Deck deck = deckManager.getDraftDeck(currentDeckName)[0];
- setDeckData("", false);
-
- CardList top = new CardList();
-
- for (int i = 0; i < deck.countMain(); i++) {
- String cardName = deck.getMain(i);
-
- if (cardName.contains("|")) {
- String s[] = cardName.split("\\|", 2);
- cardName = s[0];
- }
-
- top.add(AllZone.getCardFactory().getCard(cardName, AllZone.getHumanPlayer()));
- }
-
- for (int i = 0; i < deck.countSideboard(); i++) {
- String cardName = deck.getMain(i);
- String setCode = "";
- if (cardName.contains("|")) {
- String s[] = cardName.split("\\|", 2);
- cardName = s[0];
- setCode = s[1];
- }
-
- top.add(AllZone.getCardFactory().getCard(cardName, AllZone.getHumanPlayer()));
- }
-
- deckDisplay.updateDisplay(top, new CardList());
- }//new draft
-*/
-
- private FileFilter dckFilter = new FileFilter() {
- @Override
- public boolean accept(File f) {
- return f.getName().endsWith(".dck") || f.isDirectory();
- }
-
- @Override
- public String getDescription() {
- return "Simple Deck File .dck";
- }
- };
-
-
- /**
- * getImportFilename.
- *
- * @return a {@link java.io.File} object.
- */
private File getImportFilename() {
JFileChooser chooser = new JFileChooser(previousDirectory);
- chooser.addChoosableFileFilter(dckFilter);
+ chooser.addChoosableFileFilter(DeckManager.dckFilter);
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
@@ -393,36 +182,10 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
previousDirectory = file.getParentFile();
return file;
}
-
-
return null;
+ } //openFileDialog()
- }//openFileDialog()
- /**
- * showDeck.
- *
- * @param deck a {@link forge.deck.Deck} object.
- */
- private void showDeck(Deck deck) {
- String gameType = deck.getDeckType();
-
- if (gameType.equals(Constant.GameType.Constructed)) {
- showConstructedDeck(deck);
- }
-
- if (gameType.equals(Constant.GameType.Draft)) {
- showDraftDeck(deck);
- }
-
- if (gameType.equals(Constant.GameType.Sealed)) {
- showSealedDeck(deck);
- }
- }//showDeck()
-
- /**
- * importDeck.
- */
private void importDeck() {
File file = getImportFilename();
@@ -430,8 +193,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
} else if (file.getName().endsWith(".dck")) {
try {
FileChannel srcChannel = new FileInputStream(file).getChannel();
- File dst = new File(ForgeProps.getFile(NEW_DECKS).getAbsolutePath() + java.io.File.separator
- + (file.getName()));
+ File dst = new File(ForgeProps.getFile(NEW_DECKS).getAbsolutePath(), file.getName());
if (!dst.createNewFile()) {
JOptionPane.showMessageDialog(null, "Cannot import deck " + file.getName()
+ ", a deck currently has that name.");
@@ -444,7 +206,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
Deck newDeck = DeckManager.readDeck(file);
deckManager.addDeck(newDeck);
- showDeck(newDeck);
+ showDeck(newDeck, newDeck.getDeckType());
} catch (Exception ex) {
ErrorViewer.showError(ex);
@@ -452,431 +214,157 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
}
}
- }//importDeck()
-
- /**
- * downloadDeck.
- */
- private void downloadDeck() {
-
- Object o = JOptionPane.showInputDialog(null, "URL(only from http://magic.tcgplayer.com):",
- "Download Deck", JOptionPane.OK_CANCEL_OPTION);
- if (o == null) {
- return;
- }
- String url = o.toString();
-
- if ((url.length() < 37)
- || (url.substring(0, 39).equalsIgnoreCase("http://magic.tcgplayer.com/db/deck.asp"))) {
- JOptionPane.showMessageDialog(null, "Bad URL." + "\n"
- + "Support only deck from http://magic.tcgplayer.com" + "\n"
- + "Example: http://magic.tcgplayer.com/db/deck.asp?deck_id=474146", "Information",
- JOptionPane.INFORMATION_MESSAGE);
- return;
- }
- Proxy p = null;
- p = Proxy.NO_PROXY;
- BufferedInputStream in;
- BufferedOutputStream out;
- try {
- byte[] buf = new byte[1024];
- int len;
- File f = new File("deck_temp.html");
- in = new BufferedInputStream(new URL(url).openConnection(p).getInputStream());
- out = new BufferedOutputStream(new FileOutputStream(f));
- //while - read and write file
- while ((len = in.read(buf)) != -1) {
- out.write(buf, 0, len);
-
- }//while - read and write file
- in.close();
- out.flush();
- out.close();
- String fileName = "deck_temp.html";
- FileReader fr = new FileReader(fileName);
- BufferedReader br = new BufferedReader(fr);
- String s = "";
- String z = "";
- StringBuffer sb = new StringBuffer();
- while ((z = br.readLine()) != null) {
- sb.append(z);
- }
- s = sb.toString();
- br.close();
- int start = s.indexOf("MAIN DECK");
- int finish = s.indexOf("SIDEBOARD");
- String rStr = "";
- rStr = s.substring(start + 9, finish);
- int first;
- int second;
- while (rStr.indexOf("<") != -1) {
- first = rStr.indexOf("<");
- second = rStr.indexOf(">", first);
- if (first == 0) {
- rStr = rStr.substring(second + 1);
- } else {
- rStr = rStr.substring(0, first) + " " + rStr.substring(second + 1);
- }
- }
- first = rStr.indexOf("Creatures [");
- second = rStr.indexOf("]", first);
- if (first != -1) {
- rStr = rStr.substring(0, first) + rStr.substring(second + 1);
- }
- first = rStr.indexOf("Spells [");
- second = rStr.indexOf("]", first);
- if (first != -1) {
- rStr = rStr.substring(0, first) + rStr.substring(second + 1);
- }
- first = rStr.indexOf("Lands [");
- second = rStr.indexOf("]", first);
- if (first != -1) {
- rStr = rStr.substring(0, first) + rStr.substring(second + 1);
- }
- String number[] = new String[59];
- String name[] = new String[59];
- int count = 0;
- DownloadDeck download = new DownloadDeck();
- while (rStr.length() != 0) {
- rStr = download.removeSpace(rStr);
- number[count] = download.foundNumberCard(rStr);
- rStr = download.removeFoundNumberCard(rStr, number[count]);
- rStr = download.removeSpace(rStr);
- name[count] = download.foundNameCard(rStr);
- name[count] = download.removeSpaceBack(name[count]);
- rStr = download.removeFoundNameCard(rStr, name[count]);
- rStr = download.removeSpace(rStr);
- count = count + 1;
- }
- String trueName[] = new String[59];
- String trueNumber[] = new String[59];
- String falseName[] = new String[59];
- int trueCount = 0;
- int falseCount = 0;
- for (int i = 0; i < count; i++) {
- if (download.isCardSupport(name[i]) == true) {
- trueName[trueCount] = name[i];
- trueNumber[trueCount] = number[i];
- trueCount = trueCount + 1;
- } else {
- falseName[falseCount] = name[i];
- falseCount = falseCount + 1;
- }
-
- }
-
- CardPool trueList = new CardPool();
- for (int i = 0; i < trueCount; i++) {
- trueList.add(CardDb.instance().getCard(trueName[i]), Integer.parseInt(trueNumber[i]));
- }
-
- StringBuffer falseCards = new StringBuffer();
- for (int i = 0; i < falseCount; i++) {
- falseCards.append("\n").append(falseName[i]).append(",");
- }
-
-
- deckDisplay.setDecks(deckDisplay.getTop(), trueList);
-
- if (falseCount == 0) {
- JOptionPane.showMessageDialog(null, "Deck downloads.", "Information",
- JOptionPane.INFORMATION_MESSAGE);
- } else {
- JOptionPane.showMessageDialog(null, "Sorry, cards:" + falseCards
- + "\nnot supported in this version MTGForge. \nDeck downloads without this cards.",
- "Information", JOptionPane.INFORMATION_MESSAGE);
- }
-
- f.delete();
-
- } catch (Exception ex) {
- ErrorViewer.showError(ex, ForgeProps.getLocalized(ERRORS.OTHER), "deck_temp.html", url);
-
- }
-
-
}
-
/**
* exportDeck.
*/
private void exportDeck() {
File filename = getExportFilename();
+ if (filename == null) { return; }
- if (filename == null) {
- return;
- }
-
- //write is an Object variable because you might just
- //write one Deck object or
- //many Deck objects if it is a draft deck
Deck deck = getDeck();
-
- deck.setName(filename.getName().substring(0, filename.getName().length() - 4));
-
- //export Draft decks, this is a little hacky
- //a Draft deck holds 8 decks, [0] is the player's deck
- //and the other 7 are the computer's deck
- if (currentGameType.equals(Constant.GameType.Draft)) {
- //read all draft decks
- Deck[] d = deckManager.getDraftDeck(currentDeckName);
-
- //replace your deck
- d[0] = deck;
- }
-
try {
DeckManager.writeDeck(deck, filename);
} catch (Exception ex) {
ErrorViewer.showError(ex);
throw new RuntimeException("Gui_DeckEditor_Menu : exportDeck() error, " + ex);
}
+ }
- }//exportDeck()
-
- /**
- * getExportFilename.
- *
- * @return a {@link java.io.File} object.
- */
private File getExportFilename() {
- //Object o = null; // unused
-
JFileChooser save = new JFileChooser(previousDirectory);
-
save.setDialogTitle("Export Deck Filename");
save.setDialogType(JFileChooser.SAVE_DIALOG);
- save.setFileFilter(dckFilter);
+ save.setFileFilter(DeckManager.dckFilter);
- int returnVal = save.showSaveDialog(null);
-
- if (returnVal == JFileChooser.APPROVE_OPTION) {
+ if (save.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
File file = save.getSelectedFile();
String check = file.getAbsolutePath();
previousDirectory = file.getParentFile();
- if (check.endsWith(".dck")) {
- return file;
- } else {
- return new File(check + ".dck");
- }
+ return check.endsWith(".dck") ? file : new File(check + ".dck");
}
-
return null;
}
- /**
- * openConstructed.
- */
- private void openConstructed() {
- if (debugPrint) {
- System.out.println("Open Constructed");
- }
+ private void openDeck(GameType gameType) {
+ if (!canLeaveCurrentDeck()) { return; }
+
+ String name = getUserInput_OpenDeck(gameType);
-// if(! isDeckSaved)
-// save();
+ if (StringUtils.isBlank(name)) { return; }
- String name = getUserInput_OpenDeck(Constant.GameType.Constructed);
-
- if (name.equals("")) {
- return;
- }
-
- //must be AFTER get user input, since user could cancel
- currentGameType = Constant.GameType.Constructed;
- //newDraftItem.setEnabled(false);
-
- Deck deck = deckManager.getDeck(name);
- showConstructedDeck(deck);
- }//open constructed
-
- /**
- * showConstructedDeck.
- *
- * @param deck a {@link forge.deck.Deck} object.
- */
- private void showConstructedDeck(final Deck deck) {
+ Deck deck = gameType == GameType.Draft ? deckManager.getDraftDeck(name)[0] : deckManager.getDeck(name);
+ showDeck(deck, gameType);
+ }
+
+ public final void showDeck(final Deck deck, final GameType gameType) {
setDeckData(deck.getName(), true);
-
- CardPool allCards = new CardPool(CardDb.instance().getAllUniqueCards());
- deckDisplay.setDecks(allCards, deck.getMain());
- }//showConstructedDeck()
-
- /**
- * openSealed.
- */
- private void openSealed() {
- if (debugPrint) {
- System.out.println("Open Sealed");
+ if (gameType.isLimited()) {
+ deckDisplay.setDeck(deck.getSideboard(), deck.getMain(), gameType);
+ } else {
+ deckDisplay.setDeck(null, deck.getMain(), gameType);
}
+ }
+
-// if(! isDeckSaved)
-// save();
- String name = getUserInput_OpenDeck(Constant.GameType.Sealed);
-
- if (name.equals("")) {
- return;
- }
-
- //must be AFTER get user input, since user could cancel
- currentGameType = Constant.GameType.Sealed;
-
- //newDraftItem.setEnabled(false);
-
- Deck deck = deckManager.getDeck(name);
- showSealedDeck(deck);
- }//open sealed
-
- /**
- * showSealedDeck.
- *
- * @param deck a {@link forge.deck.Deck} object.
- */
- public final void showSealedDeck(final Deck deck) {
- setDeckData(deck.getName(), true);
- //currentDeckPlayerType = deck.getMetadata("PlayerType");
- deckDisplay.setDecks(deck.getSideboard(), deck.getMain());
- }//showSealedDeck()
-
- /**
- * openDraft.
- */
- private void openDraft() {
- if (debugPrint) {
- System.out.println("Open Draft");
- }
-
- String name = getUserInput_OpenDeck(Constant.GameType.Draft);
-
- if (name.equals("")) {
- return;
- }
-
- //must be AFTER get user input, since user could cancel
- currentGameType = Constant.GameType.Draft;
- //newDraftItem.setEnabled(true);
-
- Deck deck = deckManager.getDraftDeck(name)[0];
- showDraftDeck(deck);
- }//open draft
-
- /**
- * showDraftDeck.
- *
- * @param deck a {@link forge.deck.Deck} object.
- */
- private void showDraftDeck(final Deck deck) {
- setDeckData(deck.getName(), true);
- deckDisplay.setDecks(deck.getSideboard(), deck.getMain());
- }//showDraftDeck()
-
- /**
- * save.
- */
private void save() {
- if (debugPrint) {
- System.out.println("Save");
- }
if (currentDeckName.equals("")) {
saveAs();
- } else if (currentGameType.equals(Constant.GameType.Draft)) {
+ return;
+ }
+
+ Deck deck = getDeck();
+ if (deckDisplay.getGameType().equals(GameType.Draft)) {
setDeckData(currentDeckName, true);
//write booster deck
Deck[] all = deckManager.getDraftDeck(currentDeckName);
- all[0] = getDeck();
+ all[0] = deck;
deckManager.addDraftDeck(all);
- } else//constructed or sealed
- {
+ DeckManager.writeDraftDecks(all);
+ } else { //constructed or sealed
setDeckData(currentDeckName, true);
- deckManager.deleteDeck(currentDeckName);
- deckManager.addDeck(getDeck());
+ deckManager.addDeck(deck);
+ DeckManager.writeDeck(deck, DeckManager.makeFileName(deck));
}
- }//save
+ isDeckSaved = true;
+ }
- /**
- * saveAs.
- */
private void saveAs() {
- if (debugPrint) {
- System.out.println("Save As");
- }
-
String name = getUserInput_GetDeckName();
- if (name.equals("")) {
- return;
- } else if (currentGameType.equals(Constant.GameType.Draft)) {
+ if (name.equals("")) { return; }
+ setDeckData(name, true);
+
+ Deck deck = getDeck();
+ if (deckDisplay.getGameType().equals(GameType.Draft)) {
//MUST copy array
Deck[] read = deckManager.getDraftDeck(currentDeckName);
Deck[] all = new Deck[read.length];
System.arraycopy(read, 0, all, 0, read.length);
- setDeckData(name, true);
-
- all[0] = getDeck();
+ all[0] = deck;
deckManager.addDraftDeck(all);
+ DeckManager.writeDraftDecks(all);
} else//constructed and sealed
{
- setDeckData(name, true);
- deckManager.addDeck(getDeck());
+ deckManager.addDeck(deck);
+ DeckManager.writeDeck(deck, DeckManager.makeFileName(deck));
}
- }//save as
+ isDeckSaved = true;
+ }
+
- /**
- * delete.
- */
private void delete() {
- if (debugPrint) {
- System.out.println("Delete");
- }
-
- if (currentGameType.equals("") || currentDeckName.equals("")) {
- return;
- }
+ if (StringUtils.isBlank(currentDeckName)) { return; }
int n = JOptionPane.showConfirmDialog(null, "Do you want to delete this deck " + currentDeckName + " ?",
"Delete", JOptionPane.YES_NO_OPTION);
- if (n == JOptionPane.NO_OPTION) {
- return;
- }
+
+ if (n == JOptionPane.NO_OPTION) { return; }
- if (currentGameType.equals(Constant.GameType.Draft)) {
+ if (deckDisplay.getGameType().equals(GameType.Draft)) {
deckManager.deleteDraftDeck(currentDeckName);
} else {
deckManager.deleteDeck(currentDeckName);
}
setDeckData("", true);
- deckDisplay.setDecks(new CardPoolView(), new CardPoolView());
- }//delete
+ deckDisplay.setDeck(null, null, deckDisplay.getGameType());
+ }
- /**
- * close.
- */
public final void close() {
- if (debugPrint) {
- System.out.println("Close");
- }
-
-// if(! isDeckSaved)
-// save();
-
- deckManager.close();
+ if (!canLeaveCurrentDeck()) { return; }
exitCommand.execute();
- }//close
+ }
+
+ private boolean canLeaveCurrentDeck() {
+ if (isSaved()) return true;
+ String message = String.format("Do you wish to save changes you made to your current deck '%s'?", currentDeckName);
+ int choice = JOptionPane.showConfirmDialog((Component) deckDisplay, message,
+ "You have unsaved changes in your deck", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
+ if (JOptionPane.CANCEL_OPTION == choice) { return false; }
+ if (JOptionPane.NO_OPTION == choice) { return true; }
+
+ Deck deck = getDeck();
+ deck.setName(currentDeckName);
+ DeckManager.writeDeck(deck, DeckManager.makeFileName(deck));
+ return true;
+ }
+
+ private Deck getDeck()
+ {
+ Deck deck = deckDisplay.getDeck();
+ deck.setName(currentDeckName);
+ return deck;
+ }
- /**
- * setDeckData.
- *
- * @param deckName a {@link java.lang.String} object.
- * @param in_isDeckSaved a boolean.
- */
private void setDeckData(final String deckName, final boolean in_isDeckSaved) {
currentDeckName = deckName;
isDeckSaved = in_isDeckSaved;
@@ -884,41 +372,8 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
deckDisplay.setTitle("Deck Editor : " + currentDeckName);
}
- /**
- * setTitle.
- *
- * @param s a {@link java.lang.String} object.
- */
- public final void setTitle(final String s) {
- deckDisplay.setTitle(s);
- }
-
- /**
- * getDeckName.
- *
- * @return a {@link java.lang.String} object.
- */
- public final String getDeckName() {
- return currentDeckName;
- }
-
- /**
- * getGameType.
- *
- * @return a {@link java.lang.String} object.
- */
- public final String getGameType() {
- return currentGameType;
- }
-
- /**
- * isDeckSaved.
- *
- * @return a boolean.
- */
- public final boolean isDeckSaved() {
- return isDeckSaved;
- }
+ public final String getDeckName() { return currentDeckName; }
+ public final boolean isSaved() { return isDeckSaved; }
/**
* getUserInput_GetDeckName.
@@ -928,119 +383,37 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
private String getUserInput_GetDeckName() {
Object o = JOptionPane.showInputDialog(null, "Save As", "Deck Name", JOptionPane.OK_CANCEL_OPTION);
- if (o == null) {
- return "";
+ if (o == null) { return ""; }
+
+ String deckName = DeckManager.cleanDeckName(o.toString());
+ boolean isDraft = deckDisplay.getGameType() == GameType.Draft;
+ boolean isUniqueName = isDraft ? deckManager.isUniqueDraft(deckName) : deckManager.isUnique(deckName);
+ boolean isGoodName = isUniqueName && StringUtils.isNotBlank(deckName);
+
+ if (isGoodName) { return deckName; }
+
+ JOptionPane.showMessageDialog(null, "Please pick another deck name, another deck currently has that name.");
+ return getUserInput_GetDeckName();
+ }
+
+ private String getUserInput_OpenDeck(final GameType deckType) {
+ ArrayList choices = deckManager.getDeckNames(deckType);
+ if (choices.isEmpty()) {
+ JOptionPane.showMessageDialog(null, "No decks found", "Open Deck", JOptionPane.PLAIN_MESSAGE);
+ return null;
}
- String deckName = cleanString(o.toString());
-
- boolean isUniqueName;
- if (currentGameType.equals(Constant.GameType.Draft)) {
- isUniqueName = deckManager.isUniqueDraft(deckName);
- } else {
- isUniqueName = deckManager.isUnique(deckName);
- }
-
- if ((!isUniqueName) || deckName.equals("")) {
- JOptionPane.showMessageDialog(null, "Please pick another deck name, a deck currently has that name.");
- return getUserInput_GetDeckName();
- }
-
- return deckName;
- }//getUserInput_GetDeckName()
-
- //only accepts numbers, letters or dashes up to 10 characters in length
- /**
- * cleanString.
- *
- * @param in a {@link java.lang.String} object.
- * @return a {@link java.lang.String} object.
- */
- private String cleanString(final String in) {
- char[] c = in.toCharArray();
-
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < c.length && i < 20; i++) {
- if (Character.isLetterOrDigit(c[i]) || c[i] == '-') {
- sb.append(c[i]);
- }
- }
- return sb.toString();
+ Object o = GuiUtils.getChoiceOptional("Open Deck", choices.toArray());
+ return o == null ? null : o.toString();
}
- /**
- * getUserInput_OpenDeck.
- *
- * @param deckType a {@link java.lang.String} object.
- * @return a {@link java.lang.String} object.
- */
- private String getUserInput_OpenDeck(final String deckType) {
- ArrayList choices = getDeckNames(deckType);
- if (choices.size() == 0) {
- JOptionPane.showMessageDialog(null, "No decks found", "Open Deck", JOptionPane.PLAIN_MESSAGE);
- return "";
- }
- //Object o = JOptionPane.showInputDialog(null, "Deck Name", "Open Deck", JOptionPane.OK_CANCEL_OPTION, null,
- // choices.toArray(), choices.toArray()[0]);
- Object o = GuiUtils.getChoiceOptional("Open Deck", choices.toArray());
+ // deck.setName(currentDeckName);
+
+ public void notifyDeckChange() {
+ isDeckSaved = false;
+ }
- if (o == null) {
- return "";
- }
-
- return o.toString();
- }//getUserInput_OpenDeck()
-
-
- /**
- * getDeckNames.
- *
- * @param deckType a {@link java.lang.String} object.
- * @return a {@link java.util.ArrayList} object.
- */
- private ArrayList getDeckNames(final String deckType) {
- ArrayList list = new ArrayList();
-
- //only get decks according to the OldGuiNewGame screen option
- if (deckType.equals(Constant.GameType.Draft)) {
-
- for (String s : deckManager.getDraftDecks().keySet()) {
- list.add(s);
- }
- } else {
- Collection decks = deckManager.getDecks();
- for (Deck deck : decks) {
- if (deckType.equals(deck.getDeckType())) {
- list.add(deck.toString());
- }
- }
- }
-
- Collections.sort(list);
- return list;
- }//getDecks()
-
- /**
- * getDeck.
- *
- * @return a {@link forge.deck.Deck} object.
- */
- private Deck getDeck() {
- Deck deck = new Deck(currentGameType);
- deck.setName(currentDeckName);
- deck.addMain(deckDisplay.getBottom());
-
- //if sealed or draft, move "top" to sideboard
- if (!currentGameType.equals(Constant.GameType.Constructed)) {
- deck.addSideboard(deckDisplay.getTop());
- }
- return deck;
- }//getDeck()
-
- /**
- * setupMenu.
- */
private void setupMenu() {
JMenuItem newConstructed = new JMenuItem("New Deck - Constructed");
@@ -1053,7 +426,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
JMenuItem importDeck = new JMenuItem("Import Deck");
JMenuItem exportDeck = new JMenuItem("Export Deck");
- JMenuItem downloadDeck = new JMenuItem("Download Deck");
+ // JMenuItem downloadDeck = new JMenuItem("Download Deck");
JMenuItem openConstructed = new JMenuItem("Open Deck - Constructed");
@@ -1082,7 +455,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
fileMenu.add(importDeck);
fileMenu.add(exportDeck);
- fileMenu.add(downloadDeck);
+ //fileMenu.add(downloadDeck);
fileMenu.addSeparator();
fileMenu.add(newRandomConstructed);
@@ -1130,7 +503,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
}
});
- downloadDeck.addActionListener(new ActionListener() {
+/* downloadDeck.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent ev) {
try {
SwingUtilities.invokeLater(new Runnable() {
@@ -1144,13 +517,13 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
}
}
});
-
+*/
newConstructed.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent ev) {
try {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
- newConstructed();
+ newConstructed(true);
}
});
} catch (Exception ex) {
@@ -1192,43 +565,12 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
}
});
-
-/* newSealed.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ev) {
- try {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- newSealed();
- }
- });
- } catch (Exception ex) {
- ErrorViewer.showError(ex);
- throw new RuntimeException("Gui_DeckEditor_Menu : newSealed() error - " + ex);
- }
- }
- });
-*/
-/* newDraft.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ev) {
- try {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- newDraft();
- }
- });
- } catch (Exception ex) {
- ErrorViewer.showError(ex);
- throw new RuntimeException("Gui_DeckEditor_Menu : newDraft() error - " + ex);
- }
- }
- });
-*/
openConstructed.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent ev) {
try {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
- openConstructed();
+ openDeck(GameType.Constructed);
}
});
} catch (Exception ex) {
@@ -1243,7 +585,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
try {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
- openSealed();
+ openDeck(GameType.Sealed);
}
});
} catch (Exception ex) {
@@ -1258,7 +600,7 @@ public class DeckEditorMenu extends JMenuBar implements NewConstants {
try {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
- openDraft();
+ openDeck(GameType.Draft);
}
});
} catch (Exception ex) {
diff --git a/src/main/java/forge/gui/deckeditor/DeckEditorQuest.java b/src/main/java/forge/gui/deckeditor/DeckEditorQuest.java
index 6e0524ee6c7..c93be6e9191 100644
--- a/src/main/java/forge/gui/deckeditor/DeckEditorQuest.java
+++ b/src/main/java/forge/gui/deckeditor/DeckEditorQuest.java
@@ -7,6 +7,7 @@ import forge.card.CardPoolView;
import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.error.ErrorViewer;
+import forge.game.GameType;
import forge.gui.GuiUtils;
import forge.properties.NewConstants;
import forge.quest.data.QuestData;
@@ -26,8 +27,6 @@ import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-
import net.slightlymagic.maxmtg.Predicate;
//import forge.quest.data.QuestBoosterPack;
@@ -90,7 +89,7 @@ public final class DeckEditorQuest extends DeckEditorBase implements NewConstant
&& questData.getDeckNames().contains(Constant.Runtime.HumanDeck[0].getName())) {
deck = questData.getDeck(Constant.Runtime.HumanDeck[0].getName());
} else {
- deck = new Deck(Constant.GameType.Sealed);
+ deck = new Deck(GameType.Sealed);
deck.setName("");
}
@@ -105,7 +104,7 @@ public final class DeckEditorQuest extends DeckEditorBase implements NewConstant
cardpool.removeAll(bottomPool);
// show cards, makes this user friendly, lol, well may, ha
- setDecks(cardpool, bottomPool);
+ setDeck(cardpool, bottomPool, GameType.Quest);
// this affects the card pool
top.sort(4, true);// sort by type
@@ -152,6 +151,7 @@ public final class DeckEditorQuest extends DeckEditorBase implements NewConstant
} // setupAndDisplay()
public DeckEditorQuest(QuestData questData2) {
+ super(GameType.Quest);
questData = questData2;
try {
filterBoxes = new FilterCheckBoxes(false);
diff --git a/src/main/java/forge/gui/deckeditor/DeckEditorQuestMenu.java b/src/main/java/forge/gui/deckeditor/DeckEditorQuestMenu.java
index ca8ed22049f..a18078f9295 100644
--- a/src/main/java/forge/gui/deckeditor/DeckEditorQuestMenu.java
+++ b/src/main/java/forge/gui/deckeditor/DeckEditorQuestMenu.java
@@ -11,6 +11,7 @@ import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.deck.DeckManager;
import forge.error.ErrorViewer;
+import forge.game.GameType;
import forge.gui.GuiUtils;
import forge.gui.ListChooser;
import forge.quest.data.QuestData;
@@ -275,7 +276,7 @@ public class DeckEditorQuestMenu extends JMenuBar {
cardpool.add(cp, s.getValue());
questData.getCards().getCardpool().add(cp, s.getValue());
}
- deckDisplay.setDecks(cardpool, decklist);
+ deckDisplay.setDeck(cardpool, decklist, GameType.Quest);
} catch (Exception ex) {
ErrorViewer.showError(ex);
@@ -339,13 +340,13 @@ public class DeckEditorQuestMenu extends JMenuBar {
// show in pool all cards except ones used in deck
cards.removeAll(deck);
- deckDisplay.setDecks(cards, deck);
+ deckDisplay.setDeck(cards, deck, GameType.Quest);
}
};
private final ActionListener newDeckActionListener = new ActionListener() {
public void actionPerformed(final ActionEvent a) {
- deckDisplay.setDecks(questData.getCards().getCardpool().getView(), new CardPool());
+ deckDisplay.setDeck(questData.getCards().getCardpool().getView(), new CardPool(), GameType.Quest);
setPlayerDeckName("");
}
};
@@ -428,7 +429,7 @@ public class DeckEditorQuestMenu extends JMenuBar {
questData.removeDeck(currentDeck.getName());
//show card pool
- deckDisplay.setDecks(questData.getCards().getCardpool().getView(), new CardPool());
+ deckDisplay.setDeck(questData.getCards().getCardpool().getView(), new CardPool(), GameType.Quest);
setPlayerDeckName("");
}
@@ -498,7 +499,7 @@ public class DeckEditorQuestMenu extends JMenuBar {
*/
private Deck cardPoolToDeck(final CardPoolView list) {
//put CardPool into Deck main
- Deck deck = new Deck(Constant.GameType.Sealed);
+ Deck deck = new Deck(GameType.Sealed);
deck.addMain(list);
return deck;
}
@@ -511,7 +512,7 @@ public class DeckEditorQuestMenu extends JMenuBar {
*/
public final void setPlayerDeckName(final String deckName) {
//the gui uses this, Gui_Quest_DeckEditor
- currentDeck = new Deck(Constant.GameType.Sealed);
+ currentDeck = new Deck(GameType.Sealed);
currentDeck.setName(deckName);
deckDisplay.setTitle(deckEditorName + " - " + deckName);
diff --git a/src/main/java/forge/gui/deckeditor/DeckEditorShop.java b/src/main/java/forge/gui/deckeditor/DeckEditorShop.java
index 010bd2b87b9..87e096927e6 100644
--- a/src/main/java/forge/gui/deckeditor/DeckEditorShop.java
+++ b/src/main/java/forge/gui/deckeditor/DeckEditorShop.java
@@ -25,6 +25,7 @@ import forge.card.CardPoolView;
import forge.card.CardPrinted;
import forge.deck.Deck;
import forge.error.ErrorViewer;
+import forge.game.GameType;
import forge.gui.GuiUtils;
import forge.quest.data.QuestData;
import forge.view.swing.OldGuiNewGame;
@@ -93,7 +94,7 @@ public final class DeckEditorShop extends DeckEditorBase {
CardPoolView owned = questData.getCards().getCardpool().getView();
//newCardsList = questData.getCards().getNewCards();
- setDecks(forSale, owned);
+ setDeck(forSale, owned, GameType.Quest);
double multiPercent = multiplier * 100;
NumberFormat formatter = new DecimalFormat("#0.00");
@@ -162,6 +163,7 @@ public final class DeckEditorShop extends DeckEditorBase {
* a {@link forge.quest.data.QuestData} object.
*/
public DeckEditorShop(final QuestData qd) {
+ super(GameType.Quest);
questData = qd;
try {
filterBoxes = null;
diff --git a/src/main/java/forge/gui/deckeditor/TableWithCards.java b/src/main/java/forge/gui/deckeditor/TableWithCards.java
index f8c8bc3d66d..432c841fb4f 100644
--- a/src/main/java/forge/gui/deckeditor/TableWithCards.java
+++ b/src/main/java/forge/gui/deckeditor/TableWithCards.java
@@ -105,8 +105,10 @@ public final class TableWithCards {
return show.toString();
} // getStats()
- public void sort(final int iCol, final boolean isAsc) {
+ public TableWithCards sort(final int iCol) { return sort(iCol, true); }
+ public TableWithCards sort(final int iCol, final boolean isAsc) {
model.sort(iCol, isAsc);
+ return this;
}
// Call this after deleting an item from table
diff --git a/src/main/java/forge/view/swing/ApplicationView.java b/src/main/java/forge/view/swing/ApplicationView.java
index ee7dd1f1f37..8cf580f3d5f 100644
--- a/src/main/java/forge/view/swing/ApplicationView.java
+++ b/src/main/java/forge/view/swing/ApplicationView.java
@@ -14,6 +14,7 @@ import forge.ComputerAI_Input;
import forge.Constant;
import forge.ImageCache;
import forge.error.ErrorViewer;
+import forge.game.GameType;
import forge.model.FModel;
import forge.properties.ForgePreferences;
import forge.view.FView;
@@ -123,7 +124,7 @@ public class ApplicationView implements FView {
if(!splashFrame.getSplashHasBeenClosed()) {
try {
- Constant.Runtime.GameType[0] = Constant.GameType.Constructed;
+ Constant.Runtime.gameType = GameType.Constructed;
SwingUtilities.invokeLater(new Runnable() { // NOPMD by Braids on 8/7/11 1:07 PM: this isn't a web app
public void run() {
AllZone.setComputer(new ComputerAI_Input(new ComputerAI_General()));
diff --git a/src/main/java/forge/view/swing/OldGuiNewGame.java b/src/main/java/forge/view/swing/OldGuiNewGame.java
index d747a82cb4a..d32c6db56a3 100644
--- a/src/main/java/forge/view/swing/OldGuiNewGame.java
+++ b/src/main/java/forge/view/swing/OldGuiNewGame.java
@@ -9,6 +9,7 @@ import forge.deck.DeckManager;
import forge.deck.generate.*;
import forge.error.BugzReporter;
import forge.error.ErrorViewer;
+import forge.game.GameType;
import forge.game.limited.BoosterDraft_1;
import forge.game.limited.SealedDeck;
import forge.gui.GuiUtils;
@@ -58,8 +59,6 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
private final DeckManager deckManager = AllZone.getDeckManager();
// with the new IO, there's no reason to use different instances
private List allDecks;
- /** Constant editor. */
- private static DeckEditor editor;
private JLabel titleLabel = new JLabel();
private JLabel jLabel2 = new JLabel();
@@ -131,7 +130,6 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
public OldGuiNewGame() {
AllZone.setQuestData(null);
- allDecks = getDecks();
if (Constant.Runtime.width[0] == 0) {
Constant.Runtime.width[0] = 70;
@@ -155,15 +153,15 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
ErrorViewer.showError(ex);
}
- if (Constant.Runtime.GameType[0].equals(Constant.GameType.Constructed)) {
+ if (Constant.Runtime.gameType.equals(GameType.Constructed)) {
singleRadioButton.setSelected(true);
updateDeckComboBoxes();
}
- if (Constant.Runtime.GameType[0].equals(Constant.GameType.Sealed)) {
+ if (Constant.Runtime.gameType.equals(GameType.Sealed)) {
sealedRadioButton.setSelected(true);
updateDeckComboBoxes();
}
- if (Constant.Runtime.GameType[0].equals(Constant.GameType.Draft)) {
+ if (Constant.Runtime.gameType.equals(GameType.Draft)) {
draftRadioButton.setSelected(true);
draftRadioButtonActionPerformed(null);
}
@@ -291,7 +289,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
*
*/
private void setupSealed() {
- Deck deck = new Deck(Constant.GameType.Sealed);
+ Deck deck = new Deck(GameType.Sealed);
// ReadBoosterPack booster = new ReadBoosterPack();
// CardList pack = booster.getBoosterPack5();
@@ -338,23 +336,22 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
String sDeckName = JOptionPane.showInputDialog(null,
ForgeProps.getLocalized(NEW_GAME_TEXT.SAVE_SEALED_MSG),
ForgeProps.getLocalized(NEW_GAME_TEXT.SAVE_SEALED_TTL), JOptionPane.QUESTION_MESSAGE);
+
deck.setName(sDeckName);
deck.setPlayerType(PlayerType.HUMAN);
Constant.Runtime.HumanDeck[0] = deck;
- Constant.Runtime.GameType[0] = Constant.GameType.Sealed;
+ Constant.Runtime.gameType = GameType.Sealed;
Deck aiDeck = sd.buildAIDeck(sDeck.toForgeCardList());
aiDeck.setName("AI_" + sDeckName);
aiDeck.setPlayerType(PlayerType.COMPUTER);
deckManager.addDeck(aiDeck);
- deckManager.writeAllDecks();
- deckManager.readAllDecks();
+ DeckManager.writeDeck(aiDeck, DeckManager.makeFileName(aiDeck));
updateDeckComboBoxes();
- deckEditorButtonActionPerformed(null);
- editor.customMenu.setCurrentGameType(Constant.GameType.Sealed);
- editor.customMenu.showSealedDeck(deck);
+ deckEditorButtonActionPerformed(GameType.Sealed, deck);
+
Constant.Runtime.ComputerDeck[0] = aiDeck;
} else {
@@ -456,12 +453,6 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
jLabel2.setText(ForgeProps.getLocalized(NEW_GAME_TEXT.YOURDECK));
jLabel3.setText(ForgeProps.getLocalized(NEW_GAME_TEXT.OPPONENT));
- humanComboBox.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(final ActionEvent e) {
- humanComboBoxActionPerformed(e);
- }
- });
-
/*
* Settings Panel
*/
@@ -511,7 +502,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
deckEditorButton.setText(ForgeProps.getLocalized(NEW_GAME_TEXT.DECK_EDITOR));
deckEditorButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) {
- deckEditorButtonActionPerformed(e);
+ deckEditorButtonActionPerformed(GameType.Constructed, null);
}
});
@@ -626,35 +617,28 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
* @param e
* a {@link java.awt.event.ActionEvent} object.
*/
- final void deckEditorButtonActionPerformed(final ActionEvent e) {
- if (editor == null) {
+ final void deckEditorButtonActionPerformed(final GameType gt, final Deck deck) {
- editor = new DeckEditor();
+ DeckEditor editor = new DeckEditor(gt);
- Command exit = new Command() {
- private static final long serialVersionUID = -9133358399503226853L;
-
- public void execute() {
- new OldGuiNewGame();
- }
- };
- editor.show(exit);
- editor.setVisible(true);
- } // if
-
- // refresh decks:
- allDecks = getDecks();
-
- // TODO (TO have DOne) - this seems hacky. If someone knows how to do
- // this for real, feel free.
- // This make it so the second time you open the Deck Editor, typing a
- // card name and pressing enter will filter
- //javax.swing.JRootPane rootPane = editor.getRootPane();
- //rootPane.setDefaultButton(editor.filterButton);
+ Command exit = new Command() {
+ private static final long serialVersionUID = -9133358399503226853L;
+ public void execute() {
+
+ updateDeckComboBoxes();
+ OldGuiNewGame.this.setVisible(true);
+ }
+ };
+
+ editor.show(exit);
+
+ if (deck != null) {
+ editor.customMenu.showDeck(deck, gt);
+ }
+
+ this.setVisible(false);
editor.setVisible(true);
-
- dispose();
}
/**
@@ -697,9 +681,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
if (draftRadioButton.isSelected()) {
if (human.equals("New Draft")) {
dispose();
-
setupDraft();
-
return;
} else {
@@ -732,9 +714,9 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
}
} else {
// non-draft decks
- String format = Constant.Runtime.GameType[0];
- // boolean sealed = Constant.GameType.Sealed.equals(format);
- boolean constructed = Constant.GameType.Constructed.equals(format);
+ GameType format = Constant.Runtime.gameType;
+ // boolean sealed = GameType.Sealed.equals(format);
+ boolean constructed = GameType.Constructed.equals(format);
boolean humanGenerate = human.equals("Generate Deck");
boolean humanRandom = human.equals("Random");
@@ -857,7 +839,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
private Deck generateConstructedDeck() {
GenerateConstructedDeck gen = new GenerateConstructedDeck();
CardList name = gen.generateDeck();
- Deck deck = new Deck(Constant.GameType.Constructed);
+ Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < 60; i++) {
deck.addMain(name.get(i).getName());
@@ -875,7 +857,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
private Deck generateConstructed3ColorDeck() {
GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck();
CardList name = gen.generate3ColorDeck();
- Deck deck = new Deck(Constant.GameType.Constructed);
+ Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < 60; i++) {
deck.addMain(name.get(i).getName());
@@ -893,7 +875,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
private Deck generateConstructed5ColorDeck() {
GenerateConstructedMultiColorDeck gen = new GenerateConstructedMultiColorDeck();
CardList name = gen.generate5ColorDeck();
- Deck deck = new Deck(Constant.GameType.Constructed);
+ Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < 60; i++) {
deck.addMain(name.get(i).getName());
@@ -923,7 +905,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
}
CardList td = gen.getThemeDeck(stDeck, 60);
- Deck deck = new Deck(Constant.GameType.Constructed);
+ Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < td.size(); i++) {
deck.addMain(td.get(i).getName());
@@ -977,7 +959,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
Generate2ColorDeck gen = new Generate2ColorDeck(c1, c2);
CardList d = gen.get2ColorDeck(60, p);
- Deck deck = new Deck(Constant.GameType.Constructed);
+ Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < d.size(); i++) {
deck.addMain(d.get(i).getName());
@@ -1043,7 +1025,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
Generate3ColorDeck gen = new Generate3ColorDeck(c1, c2, c3);
CardList d = gen.get3ColorDeck(60, p);
- Deck deck = new Deck(Constant.GameType.Constructed);
+ Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < d.size(); i++) {
deck.addMain(d.get(i).getName());
@@ -1077,7 +1059,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
Generate5ColorDeck gen = new Generate5ColorDeck("white", "blue", "black", "red", "green");
CardList d = gen.get5ColorDeck(60, p);
- Deck deck = new Deck(Constant.GameType.Constructed);
+ Deck deck = new Deck(GameType.Constructed);
for (int i = 0; i < d.size(); i++) {
deck.addMain(d.get(i).getName());
@@ -1096,7 +1078,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
* a {@link java.awt.event.ActionEvent} object.
*/
final void singleRadioButtonActionPerformed(final ActionEvent e) {
- Constant.Runtime.GameType[0] = Constant.GameType.Constructed;
+ Constant.Runtime.gameType = GameType.Constructed;
updateDeckComboBoxes();
}
@@ -1109,7 +1091,7 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
* a {@link java.awt.event.ActionEvent} object.
*/
final void sealedRadioButtonActionPerformed(final ActionEvent e) {
- Constant.Runtime.GameType[0] = Constant.GameType.Sealed;
+ Constant.Runtime.gameType = GameType.Sealed;
updateDeckComboBoxes();
}
@@ -1122,20 +1104,21 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
humanComboBox.removeAllItems();
computerComboBox.removeAllItems();
- if (Constant.GameType.Sealed.equals(Constant.Runtime.GameType[0])) {
+ allDecks = getDecks();
+ switch(Constant.Runtime.gameType)
+ {
+ case Sealed:
humanComboBox.addItem("New Sealed");
computerComboBox.addItem("New Sealed");
for (Deck allDeck : allDecks) {
- if (allDeck.getDeckType().equals(Constant.GameType.Sealed)) {
- if (allDeck.getPlayerType() == PlayerType.HUMAN) {
- humanComboBox.addItem(allDeck.getName());
- } else if (allDeck.getPlayerType() == PlayerType.COMPUTER) {
- computerComboBox.addItem(allDeck.getName());
- }
+ if (allDeck.getDeckType().equals(GameType.Sealed)) {
+ JComboBox boxToAdd = allDeck.getPlayerType() == PlayerType.COMPUTER ? computerComboBox : humanComboBox;
+ boxToAdd.addItem(allDeck.getName());
}
} // for
- } else if (Constant.GameType.Constructed.equals(Constant.Runtime.GameType[0])) {
+ break;
+ case Constructed:
humanComboBox.addItem("Generate Deck");
computerComboBox.addItem("Generate Deck");
@@ -1143,11 +1126,25 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
computerComboBox.addItem("Random");
for (Deck allDeck : allDecks) {
- if (allDeck.getDeckType().equals(Constant.GameType.Constructed)) {
+ if (allDeck.getDeckType().equals(GameType.Constructed)) {
humanComboBox.addItem(allDeck.getName());
computerComboBox.addItem(allDeck.getName());
}
} // for
+ break;
+ case Draft:
+ humanComboBox.addItem("New Draft");
+ Object[] key = deckManager.getDraftDecks().keySet().toArray();
+ Arrays.sort(key);
+
+ for (Object aKey : key) {
+ humanComboBox.addItem(aKey);
+ }
+
+ for (int i = 0; i < 7; i++) {
+ computerComboBox.addItem("" + (i + 1));
+ }
+ break;
}
// not sure if the code below is useful or not
// this will select the deck that you previously used
@@ -1166,11 +1163,11 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
* a {@link java.lang.String} object.
* @return an array of {@link forge.deck.Deck} objects.
*/
- final Deck[] getDecks(final String gameType) {
+ final Deck[] getDecks(final GameType gameType) {
ArrayList list = new ArrayList();
Deck d;
- for (Deck allDeck : allDecks) {
+ for (Deck allDeck : deckManager.getDecks()) {
d = allDeck;
if (d.getDeckType().equals(gameType)) {
@@ -1185,44 +1182,12 @@ public class OldGuiNewGame extends JFrame implements NewConstants, NewConstants.
return out;
} // getDecks()
- /**
- *
- * draftRadioButton_actionPerformed.
- *
- *
- * @param e
- * a {@link java.awt.event.ActionEvent} object.
- */
+
final void draftRadioButtonActionPerformed(final ActionEvent e) {
- Constant.Runtime.GameType[0] = Constant.GameType.Draft;
- humanComboBox.removeAllItems();
- computerComboBox.removeAllItems();
-
- humanComboBox.addItem("New Draft");
- Object[] key = deckManager.getDraftDecks().keySet().toArray();
- Arrays.sort(key);
-
- for (Object aKey : key) {
- humanComboBox.addItem(aKey);
- }
-
- for (int i = 0; i < 7; i++) {
- computerComboBox.addItem("" + (i + 1));
- }
+ Constant.Runtime.gameType = GameType.Draft;
+ updateDeckComboBoxes();
}
- /**
- *
- * humanComboBox_actionPerformed.
- *
- *
- * @param e
- * a {@link java.awt.event.ActionEvent} object.
- */
- void humanComboBoxActionPerformed(final ActionEvent e) {
-
- } /* draftRadioButton_actionPerformed() */
-
/**
*
* @author dhudson
diff --git a/src/test/java/forge/GuiBoosterDraftTest.java b/src/test/java/forge/GuiBoosterDraftTest.java
index 733b1340302..07fb1b7bca3 100644
--- a/src/test/java/forge/GuiBoosterDraftTest.java
+++ b/src/test/java/forge/GuiBoosterDraftTest.java
@@ -1,6 +1,7 @@
package forge;
import forge.deck.Deck;
+import forge.game.GameType;
import forge.game.limited.BoosterDraft_1;
import forge.gui.deckeditor.DeckEditorDraft;
@@ -20,8 +21,8 @@ public class GuiBoosterDraftTest {
*/
@Test(groups = {"UnitTest", "fast"})
public void GuiBoosterDraftTest1() {
- Constant.Runtime.GameType[0] = Constant.GameType.Draft;
- Constant.Runtime.HumanDeck[0] = new Deck(Constant.GameType.Sealed);
+ Constant.Runtime.gameType = GameType.Draft;
+ Constant.Runtime.HumanDeck[0] = new Deck(GameType.Sealed);
DeckEditorDraft g = new DeckEditorDraft();
g.showGui(new BoosterDraft_1());