From 0a3dac09cffdc908f7468d83fb568bc6499cd53e Mon Sep 17 00:00:00 2001 From: hneemann Date: Mon, 29 Jul 2019 10:02:18 +0200 Subject: [PATCH] improved error message if hdl code parsing failed, closes #293 --- .../digital/gui/components/EditorFactory.java | 17 +++++++++++++---- src/main/resources/lang/lang_de.xml | 2 ++ src/main/resources/lang/lang_en.xml | 2 ++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/neemann/digital/gui/components/EditorFactory.java b/src/main/java/de/neemann/digital/gui/components/EditorFactory.java index d301bc1b8..46b7cead8 100644 --- a/src/main/java/de/neemann/digital/gui/components/EditorFactory.java +++ b/src/main/java/de/neemann/digital/gui/components/EditorFactory.java @@ -797,7 +797,8 @@ public final class EditorFactory { if (app != null) { try { getAttributeDialog().storeEditedValues(); - if (app.ensureConsistency(elementAttributes)) + final boolean consistent = app.ensureConsistency(elementAttributes); + if (consistent) getAttributeDialog().updateEditedValues(); PortDefinition ins = new PortDefinition(elementAttributes.get(Keys.EXTERNAL_INPUTS)); @@ -807,10 +808,11 @@ public final class EditorFactory { try { String message = app.checkCode(label, code, ins, outs); - if (message != null && !message.isEmpty()) - new ErrorMessage(Lang.get("msg_checkResult") + "\n\n" + message).show(getAttributeDialog()); + if (message != null && !message.isEmpty()) { + createError(consistent, Lang.get("msg_checkResult") + "\n\n" + message).show(getAttributeDialog()); + } } catch (IOException e) { - new ErrorMessage(Lang.get("msg_checkResult")).addCause(e).show(getAttributeDialog()); + createError(consistent, Lang.get("msg_checkResult")).addCause(e).show(getAttributeDialog()); } } catch (EditorParseException e) { e.printStackTrace(); @@ -818,6 +820,13 @@ public final class EditorFactory { } } } + + private ErrorMessage createError(boolean consistent, String message) { + if (!consistent) + message = Lang.get("msg_codeNotConsistent") + "\n\n" + message; + return new ErrorMessage(message); + } + }.setToolTip(Lang.get("btn_checkCode_tt")).createJButton(); combo.addActionListener(new AbstractAction() { @Override diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index 6ba408ddf..eb6d685d2 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -1689,6 +1689,8 @@ Soll dennoch exportiert werden? Startet die Anwendung um zu prüfen, ob der eingegebene Code korrekt ist. Falls das nicht der Fall ist, wird die Fehlermeldung der externen Anwendung angezeigt. Wenn es möglich ist, werden zudem die Eingangs- und Ausgangsdefinitionen an den aktuellen Code angepasst. + Ein- und Ausgängsdefinitionen konnten nicht automatisch erzeugt werden. + Bitte prüfen Sie die Einstellungen! Ausführbare Datei "{0}" nicht gefunden! Text eingeben! Starte ATMISP diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index 74ea0270e..e326b4f1a 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -1669,6 +1669,8 @@ Starts the application to check if the entered code is correct. If this is not the case, the error message of the external application is displayed. If possible, the input and output definitions are also adapted to the current code. + Input and output definitions could not be created automatically. + Please check the settings! Executable file "{0}" not found! Enter Text!