diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java
index a27db084f..75af97f50 100644
--- a/src/main/java/de/neemann/digital/gui/Main.java
+++ b/src/main/java/de/neemann/digital/gui/Main.java
@@ -413,7 +413,22 @@ public class Main extends JFrame implements ClosingWindowListener.ConfirmSave, E
do {
repeat = false;
if (fc.showSaveDialog(Main.this) == JFileChooser.APPROVE_OPTION) {
+
final File selectedFile = fc.getSelectedFile();
+
+ if (selectedFile.exists()) {
+ Object[] options = {Lang.get("btn_overwrite"), Lang.get("btn_newName")};
+ int res = JOptionPane.showOptionDialog(Main.this,
+ Lang.get("msg_fileExists", selectedFile.getName()),
+ Lang.get("msg_warning"),
+ JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
+ null, options, options[0]);
+ if (res == 1) {
+ repeat = true;
+ continue;
+ }
+ }
+
if (library.isFileAccessible(selectedFile))
saveFile(selectedFile, false);
else {
diff --git a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java
index fc3570185..40afa3b12 100644
--- a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java
+++ b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java
@@ -260,15 +260,35 @@ public class TableDialog extends JDialog {
JFileChooser fc = new JFileChooser();
if (TableDialog.this.filename != null)
fc.setSelectedFile(Main.checkSuffix(TableDialog.this.filename, "tru"));
- if (fc.showSaveDialog(TableDialog.this) == JFileChooser.APPROVE_OPTION) {
- try {
- File file = Main.checkSuffix(fc.getSelectedFile(), "tru");
- model.getTable().save(file);
- TableDialog.this.filename = file;
- } catch (IOException e1) {
- new ErrorMessage().addCause(e1).show(TableDialog.this);
+
+ boolean repeat;
+ do {
+ repeat = false;
+ if (fc.showSaveDialog(TableDialog.this) == JFileChooser.APPROVE_OPTION) {
+ final File selectedFile = fc.getSelectedFile();
+
+ if (selectedFile.exists()) {
+ Object[] options = {Lang.get("btn_overwrite"), Lang.get("btn_newName")};
+ int res = JOptionPane.showOptionDialog(TableDialog.this,
+ Lang.get("msg_fileExists", selectedFile.getName()),
+ Lang.get("msg_warning"),
+ JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
+ null, options, options[0]);
+ if (res == 1) {
+ repeat = true;
+ continue;
+ }
+ }
+
+ try {
+ File file = Main.checkSuffix(selectedFile, "tru");
+ model.getTable().save(file);
+ TableDialog.this.filename = file;
+ } catch (IOException e1) {
+ new ErrorMessage().addCause(e1).show(TableDialog.this);
+ }
}
- }
+ } while (repeat);
}
});
diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml
index 060532901..b62d0b1e3 100644
--- a/src/main/resources/lang/lang_de.xml
+++ b/src/main/resources/lang/lang_de.xml
@@ -38,6 +38,7 @@
Alle möglichen Übergänge werden als Testfälle ergänzt. Dient zur Erzeugung von Testfällen für den Simulator selbst.
Neuer Name
Trotzdem speichern
+ Überschreiben
Warnung
Abbrechen
Digital
@@ -739,6 +740,7 @@ Die Icons stammen aus dem Tango Desktop Project.
Dieser Dateiename ist nicht aus dem aktuellen Projekt importierbar!
Der Dateiname ist nicht eindeutig!
Die Datei wurde noch nicht importiert.
+ Die Datei {0} existiert schon!
Ok
0°
diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml
index 76f9bc351..719642a22 100644
--- a/src/main/resources/lang/lang_en.xml
+++ b/src/main/resources/lang/lang_en.xml
@@ -38,6 +38,7 @@
All possible transitions are added as test cases. Is used to create test cases to test the simulator itself.
New Name
Save anyway
+ Overwrite
Warning
Cancel
Digital
@@ -726,6 +727,7 @@ The icons are taken from the Tango Desktop Project.
The selected file name is not importable from the actual project!
The file name is not unique!
The file has not yet been imported.
+ The file {0} already exists!
Ok
0°