From fa27fd0b9a3af007243dd9331e855d5f3abd6476 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 14 Nov 2022 13:57:56 +0100 Subject: [PATCH] Add warning text if simulation listener not recognized as class --- ...tSwingSimulationExtensionConfigurator.java | 22 ++++++--- .../extension/impl/JavaCodeConfigurator.java | 47 +++++++++++++++++-- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/swing/src/net/sf/openrocket/simulation/extension/AbstractSwingSimulationExtensionConfigurator.java b/swing/src/net/sf/openrocket/simulation/extension/AbstractSwingSimulationExtensionConfigurator.java index 422c87ea6..b0a1992e7 100644 --- a/swing/src/net/sf/openrocket/simulation/extension/AbstractSwingSimulationExtensionConfigurator.java +++ b/swing/src/net/sf/openrocket/simulation/extension/AbstractSwingSimulationExtensionConfigurator.java @@ -4,6 +4,8 @@ import java.awt.Dialog.ModalityType; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JComponent; @@ -50,17 +52,21 @@ public abstract class AbstractSwingSimulationExtensionConfigurator { - + private JavaCode extension; + private JTextField classNameField; + + private static final Translator trans = Application.getTranslator(); + public JavaCodeConfigurator() { super(JavaCode.class); } @Override protected JComponent getConfigurationComponent(final JavaCode extension, Simulation simulation, JPanel panel) { + this.extension = extension; panel.add(new JLabel(trans.get("SimulationExtension.javacode.desc")), "wrap para"); panel.add(new JLabel(trans.get("SimulationExtension.javacode.className")), "wrap rel"); - final JTextField textField = new JTextField(extension.getClassName()); - textField.getDocument().addDocumentListener(new DocumentListener() { + classNameField = new JTextField(extension.getClassName()); + panel.add(classNameField, "growx, wrap"); + StyledLabel errorMsg = new StyledLabel(); + errorMsg.setFontColor(Color.DARK_RED.toAWTColor()); + errorMsg.setVisible(false); + panel.add(errorMsg, "growx, wrap"); + + classNameField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { update(); } @@ -37,11 +52,33 @@ public class JavaCodeConfigurator extends AbstractSwingSimulationExtensionConfig } public void update() { - extension.setClassName(textField.getText()); + // Display error message if the class name is invalid + String text = classNameField.getText().trim(); + try { + Class.forName(text); + errorMsg.setVisible(false); + } catch (ClassNotFoundException e) { + // Don't display an error message for an empty field + if (text.length() == 0) { + errorMsg.setVisible(false); + return; + } + errorMsg.setText(trans.get("SimulationExtension.javacode.classnotfound")); + errorMsg.setVisible(true); + } } }); - panel.add(textField, "growx"); + return panel; } + + @Override + protected void close() { + if (this.extension != null && this.classNameField != null) { + this.extension.setClassName(this.classNameField.getText().trim()); + + } + super.close(); + } }