diff --git a/src/DeckConverter.java b/src/DeckConverter.java index a289a7a3d98..e1c2e479bfc 100644 --- a/src/DeckConverter.java +++ b/src/DeckConverter.java @@ -14,7 +14,6 @@ import java.util.Map; import javax.swing.JOptionPane; -import forge.Deck; import forge.DeckIO; import forge.NewDeckIO; import forge.properties.ForgeProps; @@ -46,8 +45,8 @@ public class DeckConverter { System.out.println("migrating deck file..."); DeckIO odio = new OldDeckIO(oldDecks); - List deckList = new ArrayList(Arrays.asList(odio.getDecks())); - Map boosterMap = odio.getBoosterDecks(); + List deckList = new ArrayList(Arrays.asList(odio.getDecks())); + Map boosterMap = odio.getBoosterDecks(); System.out.println("Decks found:"); System.out.printf("\t%d normal decks%n", deckList.size()); System.out.printf("\t%d booster decks%n", boosterMap.size()); @@ -64,4 +63,29 @@ public class DeckConverter { JOptionPane.showMessageDialog(null, "Your deck file was successfully migrated!"); } + + /** + * + */ + public static Object toForgeDeck(Object o) { + if(o instanceof forge.Deck) { + //a single new-type deck + return o; + } else if(o instanceof forge.Deck[]) { + //a new-type booster deck + Deck d = (Deck) o; + return d.migrate(); + } else if(o instanceof Deck) { + // an old type deck + Deck d = (Deck) o; + return d.migrate(); + } else if(o instanceof Deck[]) { + Deck[] d = (Deck[]) o; + forge.Deck[] result = new forge.Deck[d.length]; + for(int i = 0; i < d.length; i++) { + result[i] = d[i].migrate(); + } + return result; + } else throw new IllegalArgumentException(); + } } diff --git a/src/forge/Gui_DeckEditor_Menu.java b/src/forge/Gui_DeckEditor_Menu.java index 74556f4ebf0..33940610cc5 100644 --- a/src/forge/Gui_DeckEditor_Menu.java +++ b/src/forge/Gui_DeckEditor_Menu.java @@ -438,6 +438,12 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); check = in.readObject(); + //deck migration - this is a little hard to read, because i can't just plainly reference a class in the + //default package + Class deckConverterClass = Class.forName("DeckConverter"); + //invoke public static Object toForgeDeck(Object o) of DeckConverter + check = deckConverterClass.getDeclaredMethod("toForgeDeck", Object.class).invoke(null, check); + in.close(); } catch(Exception ex) { ErrorViewer.showError(ex); diff --git a/src/forge/Gui_Quest_DeckEditor_Menu.java b/src/forge/Gui_Quest_DeckEditor_Menu.java index a9963d3abb8..870be0ed6a0 100644 --- a/src/forge/Gui_Quest_DeckEditor_Menu.java +++ b/src/forge/Gui_Quest_DeckEditor_Menu.java @@ -28,23 +28,23 @@ import forge.error.ErrorViewer; //presumes AllZone.QuestData is not null public class Gui_Quest_DeckEditor_Menu extends JMenuBar { - private static final long serialVersionUID = -4052319220021158574L; + private static final long serialVersionUID = -4052319220021158574L; //this should be false in the public version //if true, the Quest Deck editor will let you edit the computer's decks - private final boolean canEditComputerDecks; + private final boolean canEditComputerDecks; - private static final String deckEditorName = "Deck Editor"; + private static final String deckEditorName = "Deck Editor"; //used for import and export, try to made the gui user friendly - private static File previousDirectory = null; + private static File previousDirectory = null; - private Command exitCommand; - private QuestData questData; - private Deck currentDeck; + private Command exitCommand; + private QuestData questData; + private Deck currentDeck; //the class DeckDisplay is in the file "Gui_DeckEditor_Menu.java" - private DeckDisplay deckDisplay; + private DeckDisplay deckDisplay; public Gui_Quest_DeckEditor_Menu(DeckDisplay d, Command exit) { @@ -68,152 +68,150 @@ public class Gui_Quest_DeckEditor_Menu extends JMenuBar { if(canEditComputerDecks) setupComputerMenu(); } - private void setupFilterMenu(){ - JMenuItem filter = new JMenuItem("New filter"); - JMenuItem clearfilter = new JMenuItem("Clear filter"); - JMenu menu = new JMenu("Filter"); - menu.add(filter); - menu.add(clearfilter); - this.add(menu); - - filter.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent ev) { - Gui_Quest_DeckEditor g = (Gui_Quest_DeckEditor) deckDisplay; - if(g.stCardList==null){ - g.blackCheckBox.setSelected(true); - g.blackCheckBox.setEnabled(true); - g.blueCheckBox.setSelected(true); - g.blueCheckBox.setEnabled(true); - g.greenCheckBox.setSelected(true); - g.greenCheckBox.setEnabled(true); - g.redCheckBox.setSelected(true); - g.redCheckBox.setEnabled(true); - g.whiteCheckBox.setSelected(true); - g.whiteCheckBox.setEnabled(true); - g.colorlessCheckBox.setSelected(true); - g.colorlessCheckBox.setEnabled(true); - g.artifactCheckBox.setSelected(true); - g.artifactCheckBox.setEnabled(true); - g.creatureCheckBox.setSelected(true); - g.creatureCheckBox.setEnabled(true); - g.enchantmentCheckBox.setSelected(true); - g.enchantmentCheckBox.setEnabled(true); - g.instantCheckBox.setSelected(true); - g.instantCheckBox.setEnabled(true); - g.landCheckBox.setSelected(true); - g.landCheckBox.setEnabled(true); - g.planeswalkerCheckBox.setSelected(true); - g.planeswalkerCheckBox.setEnabled(true); - g.sorceryCheckBox.setSelected(true); - g.sorceryCheckBox.setEnabled(true); - g.stCardList = g.getTop(); - GUI_Quest_Filter filt = new GUI_Quest_Filter(g, deckDisplay); - g.setEnabled(false); - g.filterUsed=true; - filt.setVisible(true); - }else - { - g.blackCheckBox.setSelected(true); - g.blackCheckBox.setEnabled(true); - g.blueCheckBox.setSelected(true); - g.blueCheckBox.setEnabled(true); - g.greenCheckBox.setSelected(true); - g.greenCheckBox.setEnabled(true); - g.redCheckBox.setSelected(true); - g.redCheckBox.setEnabled(true); - g.whiteCheckBox.setSelected(true); - g.whiteCheckBox.setEnabled(true); - g.colorlessCheckBox.setSelected(true); - g.colorlessCheckBox.setEnabled(true); - g.artifactCheckBox.setSelected(true); - g.artifactCheckBox.setEnabled(true); - g.creatureCheckBox.setSelected(true); - g.creatureCheckBox.setEnabled(true); - g.enchantmentCheckBox.setSelected(true); - g.enchantmentCheckBox.setEnabled(true); - g.instantCheckBox.setSelected(true); - g.instantCheckBox.setEnabled(true); - g.landCheckBox.setSelected(true); - g.landCheckBox.setEnabled(true); - g.planeswalkerCheckBox.setSelected(true); - g.planeswalkerCheckBox.setEnabled(true); - g.sorceryCheckBox.setSelected(true); - g.sorceryCheckBox.setEnabled(true); - GUI_Quest_Filter filt = new GUI_Quest_Filter(g, deckDisplay); - g.filterUsed=true; - g.setEnabled(false); - filt.setVisible(true); - } - } - }); - clearfilter.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent ev) { - - Gui_Quest_DeckEditor g = (Gui_Quest_DeckEditor) deckDisplay; - if(g.stCardList==null){ - g.blackCheckBox.setSelected(true); - g.blackCheckBox.setEnabled(true); - g.blueCheckBox.setSelected(true); - g.blueCheckBox.setEnabled(true); - g.greenCheckBox.setSelected(true); - g.greenCheckBox.setEnabled(true); - g.redCheckBox.setSelected(true); - g.redCheckBox.setEnabled(true); - g.whiteCheckBox.setSelected(true); - g.whiteCheckBox.setEnabled(true); - g.colorlessCheckBox.setSelected(true); - g.colorlessCheckBox.setEnabled(true); - g.artifactCheckBox.setSelected(true); - g.artifactCheckBox.setEnabled(true); - g.creatureCheckBox.setSelected(true); - g.creatureCheckBox.setEnabled(true); - g.enchantmentCheckBox.setSelected(true); - g.enchantmentCheckBox.setEnabled(true); - g.instantCheckBox.setSelected(true); - g.instantCheckBox.setEnabled(true); - g.landCheckBox.setSelected(true); - g.landCheckBox.setEnabled(true); - g.planeswalkerCheckBox.setSelected(true); - g.planeswalkerCheckBox.setEnabled(true); - g.sorceryCheckBox.setSelected(true); - g.sorceryCheckBox.setEnabled(true); - g.filterUsed=false; - }else{ - g.blackCheckBox.setSelected(true); - g.blackCheckBox.setEnabled(true); - g.blueCheckBox.setSelected(true); - g.blueCheckBox.setEnabled(true); - g.greenCheckBox.setSelected(true); - g.greenCheckBox.setEnabled(true); - g.redCheckBox.setSelected(true); - g.redCheckBox.setEnabled(true); - g.whiteCheckBox.setSelected(true); - g.whiteCheckBox.setEnabled(true); - g.colorlessCheckBox.setSelected(true); - g.colorlessCheckBox.setEnabled(true); - g.artifactCheckBox.setSelected(true); - g.artifactCheckBox.setEnabled(true); - g.creatureCheckBox.setSelected(true); - g.creatureCheckBox.setEnabled(true); - g.enchantmentCheckBox.setSelected(true); - g.enchantmentCheckBox.setEnabled(true); - g.instantCheckBox.setSelected(true); - g.instantCheckBox.setEnabled(true); - g.landCheckBox.setSelected(true); - g.landCheckBox.setEnabled(true); - g.planeswalkerCheckBox.setSelected(true); - g.planeswalkerCheckBox.setEnabled(true); - g.sorceryCheckBox.setSelected(true); - g.sorceryCheckBox.setEnabled(true); - g.filterUsed=false; - deckDisplay.updateDisplay(g.stCardList, deckDisplay.getBottom()) ; - } - - - - } - }); - + private void setupFilterMenu() { + JMenuItem filter = new JMenuItem("New filter"); + JMenuItem clearfilter = new JMenuItem("Clear filter"); + JMenu menu = new JMenu("Filter"); + menu.add(filter); + menu.add(clearfilter); + this.add(menu); + + filter.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ev) { + Gui_Quest_DeckEditor g = (Gui_Quest_DeckEditor) deckDisplay; + if(g.stCardList == null) { + g.blackCheckBox.setSelected(true); + g.blackCheckBox.setEnabled(true); + g.blueCheckBox.setSelected(true); + g.blueCheckBox.setEnabled(true); + g.greenCheckBox.setSelected(true); + g.greenCheckBox.setEnabled(true); + g.redCheckBox.setSelected(true); + g.redCheckBox.setEnabled(true); + g.whiteCheckBox.setSelected(true); + g.whiteCheckBox.setEnabled(true); + g.colorlessCheckBox.setSelected(true); + g.colorlessCheckBox.setEnabled(true); + g.artifactCheckBox.setSelected(true); + g.artifactCheckBox.setEnabled(true); + g.creatureCheckBox.setSelected(true); + g.creatureCheckBox.setEnabled(true); + g.enchantmentCheckBox.setSelected(true); + g.enchantmentCheckBox.setEnabled(true); + g.instantCheckBox.setSelected(true); + g.instantCheckBox.setEnabled(true); + g.landCheckBox.setSelected(true); + g.landCheckBox.setEnabled(true); + g.planeswalkerCheckBox.setSelected(true); + g.planeswalkerCheckBox.setEnabled(true); + g.sorceryCheckBox.setSelected(true); + g.sorceryCheckBox.setEnabled(true); + g.stCardList = g.getTop(); + GUI_Quest_Filter filt = new GUI_Quest_Filter(g, deckDisplay); + g.setEnabled(false); + g.filterUsed = true; + filt.setVisible(true); + } else { + g.blackCheckBox.setSelected(true); + g.blackCheckBox.setEnabled(true); + g.blueCheckBox.setSelected(true); + g.blueCheckBox.setEnabled(true); + g.greenCheckBox.setSelected(true); + g.greenCheckBox.setEnabled(true); + g.redCheckBox.setSelected(true); + g.redCheckBox.setEnabled(true); + g.whiteCheckBox.setSelected(true); + g.whiteCheckBox.setEnabled(true); + g.colorlessCheckBox.setSelected(true); + g.colorlessCheckBox.setEnabled(true); + g.artifactCheckBox.setSelected(true); + g.artifactCheckBox.setEnabled(true); + g.creatureCheckBox.setSelected(true); + g.creatureCheckBox.setEnabled(true); + g.enchantmentCheckBox.setSelected(true); + g.enchantmentCheckBox.setEnabled(true); + g.instantCheckBox.setSelected(true); + g.instantCheckBox.setEnabled(true); + g.landCheckBox.setSelected(true); + g.landCheckBox.setEnabled(true); + g.planeswalkerCheckBox.setSelected(true); + g.planeswalkerCheckBox.setEnabled(true); + g.sorceryCheckBox.setSelected(true); + g.sorceryCheckBox.setEnabled(true); + GUI_Quest_Filter filt = new GUI_Quest_Filter(g, deckDisplay); + g.filterUsed = true; + g.setEnabled(false); + filt.setVisible(true); + } + } + }); + clearfilter.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ev) { + + Gui_Quest_DeckEditor g = (Gui_Quest_DeckEditor) deckDisplay; + if(g.stCardList == null) { + g.blackCheckBox.setSelected(true); + g.blackCheckBox.setEnabled(true); + g.blueCheckBox.setSelected(true); + g.blueCheckBox.setEnabled(true); + g.greenCheckBox.setSelected(true); + g.greenCheckBox.setEnabled(true); + g.redCheckBox.setSelected(true); + g.redCheckBox.setEnabled(true); + g.whiteCheckBox.setSelected(true); + g.whiteCheckBox.setEnabled(true); + g.colorlessCheckBox.setSelected(true); + g.colorlessCheckBox.setEnabled(true); + g.artifactCheckBox.setSelected(true); + g.artifactCheckBox.setEnabled(true); + g.creatureCheckBox.setSelected(true); + g.creatureCheckBox.setEnabled(true); + g.enchantmentCheckBox.setSelected(true); + g.enchantmentCheckBox.setEnabled(true); + g.instantCheckBox.setSelected(true); + g.instantCheckBox.setEnabled(true); + g.landCheckBox.setSelected(true); + g.landCheckBox.setEnabled(true); + g.planeswalkerCheckBox.setSelected(true); + g.planeswalkerCheckBox.setEnabled(true); + g.sorceryCheckBox.setSelected(true); + g.sorceryCheckBox.setEnabled(true); + g.filterUsed = false; + } else { + g.blackCheckBox.setSelected(true); + g.blackCheckBox.setEnabled(true); + g.blueCheckBox.setSelected(true); + g.blueCheckBox.setEnabled(true); + g.greenCheckBox.setSelected(true); + g.greenCheckBox.setEnabled(true); + g.redCheckBox.setSelected(true); + g.redCheckBox.setEnabled(true); + g.whiteCheckBox.setSelected(true); + g.whiteCheckBox.setEnabled(true); + g.colorlessCheckBox.setSelected(true); + g.colorlessCheckBox.setEnabled(true); + g.artifactCheckBox.setSelected(true); + g.artifactCheckBox.setEnabled(true); + g.creatureCheckBox.setSelected(true); + g.creatureCheckBox.setEnabled(true); + g.enchantmentCheckBox.setSelected(true); + g.enchantmentCheckBox.setEnabled(true); + g.instantCheckBox.setSelected(true); + g.instantCheckBox.setEnabled(true); + g.landCheckBox.setSelected(true); + g.landCheckBox.setEnabled(true); + g.planeswalkerCheckBox.setSelected(true); + g.planeswalkerCheckBox.setEnabled(true); + g.sorceryCheckBox.setSelected(true); + g.sorceryCheckBox.setEnabled(true); + g.filterUsed = false; + deckDisplay.updateDisplay(g.stCardList, deckDisplay.getBottom()); + } + + + } + }); + } @@ -417,6 +415,12 @@ public class Gui_Quest_DeckEditor_Menu extends JMenuBar { ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); check = in.readObject(); + //deck migration - this is a little hard to read, because i can't just plainly reference a class in the + //default package + Class deckConverterClass = Class.forName("DeckConverter"); + //invoke public static Object toForgeDeck(Object o) of DeckConverter + check = deckConverterClass.getDeclaredMethod("toForgeDeck", Object.class).invoke(null, check); + in.close(); } catch(Exception ex) { ErrorViewer.showError(ex); @@ -424,6 +428,7 @@ public class Gui_Quest_DeckEditor_Menu extends JMenuBar { } Deck deck = (Deck) check; + deckDisplay.setTitle(deckEditorName + " - " + deck.getName()); CardList cardpool;