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 d4687a720..b1d568b93 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
@@ -443,13 +443,13 @@ public class TableDialog extends JDialog {
JMenu export = new JMenu(Lang.get("menu_export"));
fileMenu.add(export);
- export.add(new FileExportAction(Lang.get("menu_table_exportHex"), "hex") {
+ export.add(new FileExportActionConfirm(Lang.get("menu_table_exportHex"), "hex") {
@Override
protected String getString() throws FormatterException, ExpressionException {
return new TruthTableFormatterHex().format(undoManager.getActual());
}
}.setToolTip(Lang.get("menu_table_exportHex_tt")).createJMenuItem());
- export.add(new FileExportAction(Lang.get("menu_table_exportTableCSVCondensed"), "csv") {
+ export.add(new FileExportAction(Lang.get("menu_table_exportCSVCondensed"), "csv") {
@Override
protected String getString() throws FormatterException, ExpressionException {
ExpressionListenerCSVCondensed expressionListener = new ExpressionListenerCSVCondensed();
@@ -457,13 +457,13 @@ public class TableDialog extends JDialog {
expressionListener.close();
return expressionListener.toString();
}
- }.setToolTip(Lang.get("menu_table_exportTableCSVCondensed")).createJMenuItem());
- export.add(new FileExportAction(Lang.get("menu_table_exportTableCSV"), "csv") {
+ }.setToolTip(Lang.get("menu_table_exportCSVCondensed_tt")).createJMenuItem());
+ export.add(new FileExportActionConfirm(Lang.get("menu_table_exportCSV"), "csv") {
@Override
- protected String getString() throws FormatterException, ExpressionException {
+ protected String getString() throws ExpressionException {
return new TruthTableFormatterCSV().format(undoManager.getActual());
}
- }.setToolTip(Lang.get("menu_table_exportTableCSV")).createJMenuItem());
+ }.setToolTip(Lang.get("menu_table_exportCSV_tt")).createJMenuItem());
createJK = new JCheckBoxMenuItem(Lang.get("menu_table_JK"));
createJK.addActionListener(e -> calculateExpressions());
@@ -1020,22 +1020,44 @@ public class TableDialog extends JDialog {
@Override
public void actionPerformed(ActionEvent e) {
- JFileChooser fc = new MyFileChooser();
- if (TableDialog.this.filename != null)
- fc.setSelectedFile(SaveAsHelper.checkSuffix(TableDialog.this.filename, suffix));
- new SaveAsHelper(TableDialog.this, fc, suffix)
- .checkOverwrite(file -> {
- try {
- try (Writer w = new FileWriter(file)) {
- w.write(getString());
+ if (confirmExport()) {
+ JFileChooser fc = new MyFileChooser();
+ if (TableDialog.this.filename != null)
+ fc.setSelectedFile(SaveAsHelper.checkSuffix(TableDialog.this.filename, suffix));
+ new SaveAsHelper(TableDialog.this, fc, suffix)
+ .checkOverwrite(file -> {
+ try {
+ try (Writer w = new FileWriter(file)) {
+ w.write(getString());
+ }
+ } catch (FormatterException | ExpressionException ex) {
+ throw new IOException(ex);
}
- } catch (FormatterException | ExpressionException ex) {
- throw new IOException(ex);
- }
- });
+ });
+ }
+ }
+
+ protected boolean confirmExport() {
+ return true;
}
protected abstract String getString() throws FormatterException, ExpressionException;
}
+ private abstract class FileExportActionConfirm extends FileExportAction {
+
+ private FileExportActionConfirm(String name, String suffix) {
+ super(name, suffix);
+ }
+
+ @Override
+ protected boolean confirmExport() {
+ int res = JOptionPane.OK_OPTION;
+ if (undoManager.getActual().getVars().size() > 20)
+ res = JOptionPane.showConfirmDialog(TableDialog.this, Lang.get("msg_tableHasManyRowsConfirm"));
+ return res == JOptionPane.OK_OPTION;
+ }
+
+ }
+
}
\ No newline at end of file
diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml
index 4cbc6414d..9b3c1a44b 100644
--- a/src/main/resources/lang/lang_de.xml
+++ b/src/main/resources/lang/lang_de.xml
@@ -1835,8 +1835,12 @@ Sind evtl. die Namen der Variablen nicht eindeutig?
rein kombinatorisch ist!
- Erzeuge HEX
+ HEX
Die HEX-Datei kann in ein ROM oder eine LUT geladen werden.
+ CSV
+ Eine CSV Datei, welche die komplette Warheitstabelle enthält.
+ CSV, Primimplikanten
+ Eine CSV Datei, welche nur die Primimplikanten enthält.
Neu
Kombinatorisch
Automat
diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml
index 52381429a..efef7bd47 100644
--- a/src/main/resources/lang/lang_en.xml
+++ b/src/main/resources/lang/lang_en.xml
@@ -1821,8 +1821,12 @@
purely combinatorial!
- Export HEX
+ HEX
You can load the HEX file to a ROM or a LUT.
+ CSV
+ A CSV file containing the complete truth table.
+ CSV, prime implicants
+ A CSV file containing only the prime implicants.
New
Combinatorial
Sequential