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
topModel.resort();
topTable.repaint();
bottomModel.resort();
bottomTable.repaint();
}// 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++) {
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) {

View File

@@ -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<String, Deck>();
this.boosterMap = new HashMap<String, Deck[]>();
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<String> lines = new LinkedList<String>();
@@ -191,7 +196,6 @@ public class DeckManager {
}
private static Deck readDeckOld(ListIterator<String> 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<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>();
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);
}
}
}