diff --git a/src/forge/Gui_DeckEditor.java b/src/forge/Gui_DeckEditor.java index 4b32fa4e876..39fbc73c60a 100644 --- a/src/forge/Gui_DeckEditor.java +++ b/src/forge/Gui_DeckEditor.java @@ -217,7 +217,9 @@ public class Gui_DeckEditor extends JFrame implements CardContainer, DeckDisplay }// for topModel.resort(); + topTable.repaint(); bottomModel.resort(); + bottomTable.repaint(); }// updateDisplay public void updateDisplay() { diff --git a/src/forge/Gui_DeckEditor_Menu.java b/src/forge/Gui_DeckEditor_Menu.java index cdf4d8974be..0091a6135ec 100644 --- a/src/forge/Gui_DeckEditor_Menu.java +++ b/src/forge/Gui_DeckEditor_Menu.java @@ -350,11 +350,10 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { for (int i = 0; i < deck.countMain(); 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.CardFactory.getCard(cardName, AllZone.HumanPlayer)); @@ -375,21 +374,6 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { deckDisplay.updateDisplay(top, new CardList()); }//new draft - private FileFilter getFileFilter() { - FileFilter filter = new FileFilter() { - @Override - public boolean accept(File f) { - return f.getName().endsWith(".deck") || f.isDirectory(); - } - - @Override - public String getDescription() { - return "Deck File .deck"; - } - }; - - return filter; - }//getFileFilter() private FileFilter dckFilter = new FileFilter() { @Override @@ -408,7 +392,6 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { JFileChooser chooser = new JFileChooser(previousDirectory); chooser.addChoosableFileFilter(dckFilter); - chooser.addChoosableFileFilter(getFileFilter()); int returnVal = chooser.showOpenDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { @@ -446,7 +429,7 @@ public class Gui_DeckEditor_Menu 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.pathSeparator + File dst = new File(ForgeProps.getFile(NEW_DECKS).getAbsolutePath() + java.io.File.separator + (file.getName())); if (!dst.createNewFile()) { JOptionPane.showMessageDialog(null, "Cannot import deck " + file.getName() @@ -457,8 +440,11 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { dstChannel.transferFrom(srcChannel, 0, srcChannel.size()); srcChannel.close(); dstChannel.close(); - JOptionPane.showMessageDialog(null, file.getName() - + "imported succesfully. Restart the deck editor to see it."); + + Deck newDeck = DeckManager.readDeck(file); + deckManager.addDeck(newDeck); + showDeck(newDeck); + } catch (Exception ex) { ErrorViewer.showError(ex); throw new RuntimeException("Gui_DeckEditor_Menu : importDeck() error, " + ex); @@ -627,7 +613,6 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { //write one Deck object or //many Deck objects if it is a draft deck Deck deck = getDeck(); - Object write = deck; deck.setName(filename.getName()); @@ -640,14 +625,10 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { //replace your deck d[0] = deck; - write = d; } try { - ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename)); - out.writeObject(write); - out.flush(); - out.close(); + DeckManager.writeDeck(deck, filename); } catch (Exception ex) { ErrorViewer.showError(ex); throw new RuntimeException("Gui_DeckEditor_Menu : exportDeck() error, " + ex); @@ -765,8 +746,7 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { save.setDialogTitle("Export Deck Filename"); save.setDialogType(JFileChooser.SAVE_DIALOG); - save.addChoosableFileFilter(getFileFilter()); - save.setSelectedFile(new File(currentDeckName + ".deck")); + save.setFileFilter(dckFilter); int returnVal = save.showSaveDialog(null); @@ -776,17 +756,16 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { previousDirectory = file.getParentFile(); - if (check.endsWith(".deck")) { + if (check.endsWith(".dck")) { return file; } else { - return new File(check + ".deck"); + return new File(check + ".dck"); } } return null; - }//getExportFilename() - + } private void openConstructed() { if (debugPrint) { diff --git a/src/forge/deck/DeckManager.java b/src/forge/deck/DeckManager.java index cdeb00e5743..8681d97e486 100755 --- a/src/forge/deck/DeckManager.java +++ b/src/forge/deck/DeckManager.java @@ -15,7 +15,7 @@ import static java.lang.String.format; import static java.util.Arrays.asList; -//reads and write Deck objects +//reads and writeDeck Deck objects public class DeckManager { private static FilenameFilter BDKFileFilter = new FilenameFilter() { public boolean accept(File dir, String name) { @@ -51,11 +51,11 @@ public class DeckManager { } this.deckMap = new HashMap(); this.boosterMap = new HashMap(); - readDir(); + readAllDecks(); } } catch (IOException ex) { ErrorViewer.showError(ex); - throw new RuntimeException("DeckManager : write() error, " + ex.getMessage()); + throw new RuntimeException("DeckManager : writeDeck() error, " + ex.getMessage()); } } @@ -68,6 +68,11 @@ public class DeckManager { return !boosterMap.keySet().contains(deckName); } + public Deck getDeck(String deckName) { + return deckMap.get(deckName); + } + + public void addDeck(Deck deck) { if (deck.getDeckType().equals(Constant.GameType.Draft)) { throw new RuntimeException( @@ -126,7 +131,7 @@ public class DeckManager { } - public void readDir() { + public void readAllDecks() { deckMap.clear(); boosterMap.clear(); @@ -150,7 +155,7 @@ public class DeckManager { } } - private Deck readDeck(File deckFile) { + public static Deck readDeck(File deckFile) { List lines = new LinkedList(); @@ -191,7 +196,6 @@ public class DeckManager { } - private static Deck readDeckOld(ListIterator iterator) { String line; @@ -273,7 +277,7 @@ public class DeckManager { File f = new File(deckDir, deriveFileName(deck.getName()) + ".dck"); files.remove(f); BufferedWriter out = new BufferedWriter(new FileWriter(f)); - write(deck, out); + writeDeck(deck, out); out.close(); } //delete the files that were not written out: the decks that were deleted @@ -291,7 +295,7 @@ public class DeckManager { f.mkdir(); for (int i = 0; i < e.getValue().length; i++) { BufferedWriter out = new BufferedWriter(new FileWriter(new File(f, i + ".dck"))); - write(e.getValue()[i], out); + writeDeck(e.getValue()[i], out); out.close(); } } @@ -305,11 +309,11 @@ public class DeckManager { */ } catch (IOException ex) { ErrorViewer.showError(ex); - throw new RuntimeException("DeckManager : write() error, " + ex.getMessage()); + throw new RuntimeException("DeckManager : writeDeck() error, " + ex.getMessage()); } } - private void write(Deck d, BufferedWriter out) throws IOException { + private static void writeDeck(Deck d, BufferedWriter out) throws IOException { out.write("[metadata]\n"); for (Entry entry : d.getMetadata()) { @@ -327,7 +331,7 @@ public class DeckManager { } } - private Map count(List src) { + private static Map count(List src) { Map result = new HashMap(); for (String s : src) { Integer dstValue = result.get(s); @@ -341,7 +345,16 @@ public class DeckManager { return result; } - public Deck getDeck(String deckName) { - return deckMap.get(deckName); + public static void writeDeck(Deck d, File f){ + try { + BufferedWriter writer = new BufferedWriter(new FileWriter(f)); + writeDeck(d, writer); + + writer.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }