mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Fix so decks can be saved as without being lost
This commit is contained in:
@@ -18,6 +18,7 @@ import forge.properties.NewConstants;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.filechooser.FileFilter;
|
import javax.swing.filechooser.FileFilter;
|
||||||
|
|
||||||
import java.awt.Dialog.ModalityType;
|
import java.awt.Dialog.ModalityType;
|
||||||
import java.awt.event.KeyAdapter;
|
import java.awt.event.KeyAdapter;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
@@ -33,7 +34,7 @@ public enum CCurrentDeck implements ICDoc {
|
|||||||
/** */
|
/** */
|
||||||
SINGLETON_INSTANCE;
|
SINGLETON_INSTANCE;
|
||||||
|
|
||||||
private static File previousDirectory = null;
|
private static File previousDirectory;
|
||||||
|
|
||||||
private JFileChooser fileChooser = new JFileChooser(NewConstants.DECK_BASE_DIR);
|
private JFileChooser fileChooser = new JFileChooser(NewConstants.DECK_BASE_DIR);
|
||||||
|
|
||||||
@@ -183,6 +184,10 @@ public enum CCurrentDeck implements ICDoc {
|
|||||||
/** */
|
/** */
|
||||||
private File getImportFilename() {
|
private File getImportFilename() {
|
||||||
fileChooser.setDialogTitle("Import Deck");
|
fileChooser.setDialogTitle("Import Deck");
|
||||||
|
fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
|
||||||
|
if (previousDirectory != null) {
|
||||||
|
fileChooser.setCurrentDirectory(previousDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
final int returnVal = fileChooser.showOpenDialog(null);
|
final int returnVal = fileChooser.showOpenDialog(null);
|
||||||
|
|
||||||
@@ -197,15 +202,22 @@ public enum CCurrentDeck implements ICDoc {
|
|||||||
/** */
|
/** */
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private void exportDeck() {
|
private void exportDeck() {
|
||||||
|
DeckController<Deck> controller = (DeckController<Deck>)
|
||||||
|
CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController();
|
||||||
|
|
||||||
final File filename = this.getExportFilename();
|
final File filename = this.getExportFilename();
|
||||||
if (filename == null) {
|
if (filename == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//create copy of deck to save under new name
|
||||||
|
String name = filename.getName();
|
||||||
|
name = name.substring(0, name.lastIndexOf(".")); //remove extension
|
||||||
|
Deck deck = (Deck)controller.getModel().copyTo(name);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DeckSerializer.writeDeck(
|
DeckSerializer.writeDeck(deck, filename);
|
||||||
((DeckController<Deck>) CDeckEditorUI.SINGLETON_INSTANCE
|
controller.setModel(DeckSerializer.fromFile(filename)); //reload deck from file so everything is in sync
|
||||||
.getCurrentEditorController().getDeckController()).getModel(), filename);
|
|
||||||
} catch (final Exception ex) {
|
} catch (final Exception ex) {
|
||||||
BugReporter.reportException(ex);
|
BugReporter.reportException(ex);
|
||||||
throw new RuntimeException("Error exporting deck." + ex);
|
throw new RuntimeException("Error exporting deck." + ex);
|
||||||
@@ -233,7 +245,9 @@ public enum CCurrentDeck implements ICDoc {
|
|||||||
private File getExportFilename() {
|
private File getExportFilename() {
|
||||||
fileChooser.setDialogTitle("Export Deck");
|
fileChooser.setDialogTitle("Export Deck");
|
||||||
fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
|
fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
|
||||||
fileChooser.setCurrentDirectory(previousDirectory);
|
if (previousDirectory != null) {
|
||||||
|
fileChooser.setCurrentDirectory(previousDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
|
if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
|
||||||
final File file = fileChooser.getSelectedFile();
|
final File file = fileChooser.getSelectedFile();
|
||||||
|
|||||||
@@ -18,10 +18,12 @@
|
|||||||
package forge.gui.deckeditor.controllers;
|
package forge.gui.deckeditor.controllers;
|
||||||
|
|
||||||
import com.google.common.base.Supplier;
|
import com.google.common.base.Supplier;
|
||||||
|
|
||||||
import forge.deck.DeckBase;
|
import forge.deck.DeckBase;
|
||||||
import forge.gui.deckeditor.menus.DeckFileMenu;
|
import forge.gui.deckeditor.menus.DeckFileMenu;
|
||||||
import forge.gui.deckeditor.views.VCurrentDeck;
|
import forge.gui.deckeditor.views.VCurrentDeck;
|
||||||
import forge.util.storage.IStorage;
|
import forge.util.storage.IStorage;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -85,11 +87,18 @@ public class DeckController<T extends DeckBase> {
|
|||||||
CStatistics.SINGLETON_INSTANCE.update();
|
CStatistics.SINGLETON_INSTANCE.update();
|
||||||
CProbabilities.SINGLETON_INSTANCE.update();
|
CProbabilities.SINGLETON_INSTANCE.update();
|
||||||
|
|
||||||
if (this.isModelInSyncWithFolder()) {
|
if (isStored) {
|
||||||
this.setSaved(true);
|
if (this.isModelInSyncWithFolder()) {
|
||||||
|
this.setSaved(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.notifyModelChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else { //TODO: Make this smarter
|
||||||
this.notifyModelChanged();
|
this.currentFolder = this.rootFolder;
|
||||||
|
this.modelPath = "";
|
||||||
|
this.setSaved(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user