From 0ff369fa68f8a16bb3e21d8d4402968d2058cbd9 Mon Sep 17 00:00:00 2001 From: hneemann Date: Tue, 4 Apr 2017 13:13:29 +0200 Subject: [PATCH] Added "file exists! Overwrite?" confirmation dialog. --- .../java/de/neemann/digital/gui/Main.java | 15 ++++++++ .../gui/components/table/TableDialog.java | 36 ++++++++++++++----- src/main/resources/lang/lang_de.xml | 2 ++ src/main/resources/lang/lang_en.xml | 2 ++ 4 files changed, 47 insertions(+), 8 deletions(-) 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 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