Restored Deck Import to Deck Editor.

This commit is contained in:
jendave
2011-08-06 22:49:26 +00:00
parent 0989e6f3e0
commit 1cd9519bce
3 changed files with 40 additions and 46 deletions

View File

@@ -217,7 +217,9 @@ public class Gui_DeckEditor extends JFrame implements CardContainer, DeckDisplay
}// for }// for
topModel.resort(); topModel.resort();
topTable.repaint();
bottomModel.resort(); bottomModel.resort();
bottomTable.repaint();
}// updateDisplay }// updateDisplay
public void updateDisplay() { public void updateDisplay() {

View File

@@ -350,11 +350,10 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants {
for (int i = 0; i < deck.countMain(); i++) { for (int i = 0; i < deck.countMain(); i++) {
String cardName = deck.getMain(i); String cardName = deck.getMain(i);
String setCode = "";
if (cardName.contains("|")) { if (cardName.contains("|")) {
String s[] = cardName.split("\\|", 2); String s[] = cardName.split("\\|", 2);
cardName = s[0]; cardName = s[0];
setCode = s[1];
} }
top.add(AllZone.CardFactory.getCard(cardName, AllZone.HumanPlayer)); 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()); deckDisplay.updateDisplay(top, new CardList());
}//new draft }//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() { private FileFilter dckFilter = new FileFilter() {
@Override @Override
@@ -408,7 +392,6 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants {
JFileChooser chooser = new JFileChooser(previousDirectory); JFileChooser chooser = new JFileChooser(previousDirectory);
chooser.addChoosableFileFilter(dckFilter); chooser.addChoosableFileFilter(dckFilter);
chooser.addChoosableFileFilter(getFileFilter());
int returnVal = chooser.showOpenDialog(null); int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) { if (returnVal == JFileChooser.APPROVE_OPTION) {
@@ -446,7 +429,7 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants {
else if (file.getName().endsWith(".dck")) { else if (file.getName().endsWith(".dck")) {
try { try {
FileChannel srcChannel = new FileInputStream(file).getChannel(); 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())); + (file.getName()));
if (!dst.createNewFile()) { if (!dst.createNewFile()) {
JOptionPane.showMessageDialog(null, "Cannot import deck " + file.getName() 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()); dstChannel.transferFrom(srcChannel, 0, srcChannel.size());
srcChannel.close(); srcChannel.close();
dstChannel.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) { } catch (Exception ex) {
ErrorViewer.showError(ex); ErrorViewer.showError(ex);
throw new RuntimeException("Gui_DeckEditor_Menu : importDeck() error, " + 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 //write one Deck object or
//many Deck objects if it is a draft deck //many Deck objects if it is a draft deck
Deck deck = getDeck(); Deck deck = getDeck();
Object write = deck;
deck.setName(filename.getName()); deck.setName(filename.getName());
@@ -640,14 +625,10 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants {
//replace your deck //replace your deck
d[0] = deck; d[0] = deck;
write = d;
} }
try { try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename)); DeckManager.writeDeck(deck, filename);
out.writeObject(write);
out.flush();
out.close();
} catch (Exception ex) { } catch (Exception ex) {
ErrorViewer.showError(ex); ErrorViewer.showError(ex);
throw new RuntimeException("Gui_DeckEditor_Menu : exportDeck() error, " + 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.setDialogTitle("Export Deck Filename");
save.setDialogType(JFileChooser.SAVE_DIALOG); save.setDialogType(JFileChooser.SAVE_DIALOG);
save.addChoosableFileFilter(getFileFilter()); save.setFileFilter(dckFilter);
save.setSelectedFile(new File(currentDeckName + ".deck"));
int returnVal = save.showSaveDialog(null); int returnVal = save.showSaveDialog(null);
@@ -776,17 +756,16 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants {
previousDirectory = file.getParentFile(); previousDirectory = file.getParentFile();
if (check.endsWith(".deck")) { if (check.endsWith(".dck")) {
return file; return file;
} }
else { else {
return new File(check + ".deck"); return new File(check + ".dck");
} }
} }
return null; return null;
}//getExportFilename() }
private void openConstructed() { private void openConstructed() {
if (debugPrint) { if (debugPrint) {

View File

@@ -15,7 +15,7 @@ import static java.lang.String.format;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
//reads and write Deck objects //reads and writeDeck Deck objects
public class DeckManager { public class DeckManager {
private static FilenameFilter BDKFileFilter = new FilenameFilter() { private static FilenameFilter BDKFileFilter = new FilenameFilter() {
public boolean accept(File dir, String name) { public boolean accept(File dir, String name) {
@@ -51,11 +51,11 @@ public class DeckManager {
} }
this.deckMap = new HashMap<String, Deck>(); this.deckMap = new HashMap<String, Deck>();
this.boosterMap = new HashMap<String, Deck[]>(); this.boosterMap = new HashMap<String, Deck[]>();
readDir(); readAllDecks();
} }
} catch (IOException ex) { } catch (IOException ex) {
ErrorViewer.showError(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); return !boosterMap.keySet().contains(deckName);
} }
public Deck getDeck(String deckName) {
return deckMap.get(deckName);
}
public void addDeck(Deck deck) { public void addDeck(Deck deck) {
if (deck.getDeckType().equals(Constant.GameType.Draft)) { if (deck.getDeckType().equals(Constant.GameType.Draft)) {
throw new RuntimeException( throw new RuntimeException(
@@ -126,7 +131,7 @@ public class DeckManager {
} }
public void readDir() { public void readAllDecks() {
deckMap.clear(); deckMap.clear();
boosterMap.clear(); boosterMap.clear();
@@ -150,7 +155,7 @@ public class DeckManager {
} }
} }
private Deck readDeck(File deckFile) { public static Deck readDeck(File deckFile) {
List<String> lines = new LinkedList<String>(); List<String> lines = new LinkedList<String>();
@@ -191,7 +196,6 @@ public class DeckManager {
} }
private static Deck readDeckOld(ListIterator<String> iterator) { private static Deck readDeckOld(ListIterator<String> iterator) {
String line; String line;
@@ -273,7 +277,7 @@ public class DeckManager {
File f = new File(deckDir, deriveFileName(deck.getName()) + ".dck"); File f = new File(deckDir, deriveFileName(deck.getName()) + ".dck");
files.remove(f); files.remove(f);
BufferedWriter out = new BufferedWriter(new FileWriter(f)); BufferedWriter out = new BufferedWriter(new FileWriter(f));
write(deck, out); writeDeck(deck, out);
out.close(); out.close();
} }
//delete the files that were not written out: the decks that were deleted //delete the files that were not written out: the decks that were deleted
@@ -291,7 +295,7 @@ public class DeckManager {
f.mkdir(); f.mkdir();
for (int i = 0; i < e.getValue().length; i++) { for (int i = 0; i < e.getValue().length; i++) {
BufferedWriter out = new BufferedWriter(new FileWriter(new File(f, i + ".dck"))); BufferedWriter out = new BufferedWriter(new FileWriter(new File(f, i + ".dck")));
write(e.getValue()[i], out); writeDeck(e.getValue()[i], out);
out.close(); out.close();
} }
} }
@@ -305,11 +309,11 @@ public class DeckManager {
*/ */
} catch (IOException ex) { } catch (IOException ex) {
ErrorViewer.showError(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"); out.write("[metadata]\n");
for (Entry<String, String> entry : d.getMetadata()) { for (Entry<String, String> entry : d.getMetadata()) {
@@ -327,7 +331,7 @@ public class DeckManager {
} }
} }
private Map<String, Integer> count(List<String> src) { private static Map<String, Integer> count(List<String> src) {
Map<String, Integer> result = new HashMap<String, Integer>(); Map<String, Integer> result = new HashMap<String, Integer>();
for (String s : src) { for (String s : src) {
Integer dstValue = result.get(s); Integer dstValue = result.get(s);
@@ -341,7 +345,16 @@ public class DeckManager {
return result; return result;
} }
public Deck getDeck(String deckName) { public static void writeDeck(Deck d, File f){
return deckMap.get(deckName); try {
BufferedWriter writer = new BufferedWriter(new FileWriter(f));
writeDeck(d, writer);
writer.close();
} catch (IOException e) {
throw new RuntimeException(e);
} }
}
} }