From 1ae1b8d10e0602882da7746e9331ec0416a63f9f Mon Sep 17 00:00:00 2001 From: hneemann Date: Sat, 8 Aug 2020 17:59:26 +0200 Subject: [PATCH] fixes a broken GUI test --- .../digital/gui/components/EditorFactory.java | 19 +++++++++++++++++-- .../expression/ExpressionDialog.java | 4 +++- .../testing/TestCaseDescriptionDialog.java | 9 +++------ .../digital/integration/TestInGUI.java | 3 ++- 4 files changed, 25 insertions(+), 10 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 b9d51b3b4..aa2c57b5b 100644 --- a/src/main/java/de/neemann/digital/gui/components/EditorFactory.java +++ b/src/main/java/de/neemann/digital/gui/components/EditorFactory.java @@ -44,6 +44,7 @@ import java.io.*; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; /** @@ -181,7 +182,7 @@ public final class EditorFactory { public StringEditor(String value, Key key) { if (key instanceof Key.LongString) { Key.LongString k = (Key.LongString) key; - text = new JTextArea(k.getRows(), k.getColumns()); + text = addF1Traversal(new JTextArea(k.getRows(), k.getColumns())); final JScrollPane scrollPane = new JScrollPane(text); if (k.getLineNumbers()) { @@ -214,7 +215,7 @@ public final class EditorFactory { setLabelAtTop(true); } else { - text = new JTextField(10); + text = addF1Traversal(new JTextField(10)); compToAdd = text; } text.setText(value); @@ -294,6 +295,20 @@ public final class EditorFactory { } } + /** + * Adds F1 as a focus traversal key to a text components. + * + * @param text The text component + * @param the concrete type of the text component + * @return the given text component + */ + public static TC addF1Traversal(TC text) { + HashSet set = new HashSet<>(text.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS)); + set.add(KeyStroke.getKeyStroke("F1")); + text.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, set); + return text; + } + private final static class IntegerEditor extends LabelEditor { private static final IntegerValue[] DEFAULTS = createIntegerValues(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); diff --git a/src/main/java/de/neemann/digital/gui/components/expression/ExpressionDialog.java b/src/main/java/de/neemann/digital/gui/components/expression/ExpressionDialog.java index b66d70563..478fd8781 100644 --- a/src/main/java/de/neemann/digital/gui/components/expression/ExpressionDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/expression/ExpressionDialog.java @@ -24,6 +24,8 @@ import java.awt.event.ActionEvent; import java.io.File; import java.util.ArrayList; +import static de.neemann.digital.gui.components.EditorFactory.addF1Traversal; + /** * Dialog to enter an expression. * Creates a new frame with a circuit generated from the entered expression. @@ -42,7 +44,7 @@ public class ExpressionDialog extends JDialog { super(parent, Lang.get("expression"), false); String exampleEquation = "(C ∨ B) ∧ (A ∨ C) ∧ (B ∨ !C) * (C + !A)"; - JTextArea text = new JTextArea(exampleEquation, 5, 40); + JTextArea text = addF1Traversal(new JTextArea(exampleEquation, 5, 40)); getContentPane().add(new JScrollPane(text), BorderLayout.CENTER); getContentPane().add(new JLabel(Lang.get("msg_enterAnExpression")), BorderLayout.NORTH); diff --git a/src/main/java/de/neemann/digital/gui/components/testing/TestCaseDescriptionDialog.java b/src/main/java/de/neemann/digital/gui/components/testing/TestCaseDescriptionDialog.java index 87254a0bc..d1179438e 100644 --- a/src/main/java/de/neemann/digital/gui/components/testing/TestCaseDescriptionDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/testing/TestCaseDescriptionDialog.java @@ -25,7 +25,8 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.io.IOException; -import java.util.HashSet; + +import static de.neemann.digital.gui.components.EditorFactory.addF1Traversal; /** * Dialog to show and edit the testing data source. @@ -48,13 +49,9 @@ public class TestCaseDescriptionDialog extends JDialog { String initialDataString = data.getDataString(); - JTextArea text = new JTextArea(data.getDataString(), 30, 50); + JTextArea text = addF1Traversal(new JTextArea(data.getDataString(), 30, 50)); text.setFont(new Font(Font.MONOSPACED, Font.PLAIN, Screen.getInstance().getFontSize())); - HashSet set = new HashSet<>(text.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS)); - set.add(KeyStroke.getKeyStroke("F1")); - text.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, set); - JScrollPane scrollPane = new JScrollPane(text); getContentPane().add(scrollPane); scrollPane.setRowHeaderView(new TextLineNumber(text, 3)); diff --git a/src/test/java/de/neemann/digital/integration/TestInGUI.java b/src/test/java/de/neemann/digital/integration/TestInGUI.java index d9a9213d2..fa9958730 100644 --- a/src/test/java/de/neemann/digital/integration/TestInGUI.java +++ b/src/test/java/de/neemann/digital/integration/TestInGUI.java @@ -212,7 +212,8 @@ public class TestInGUI extends TestCase { .press("ENTER") .press("control typed a") .type("a b + b c") - .press("TAB", 2) + .press("F1", 1) + .press("TAB", 1) .press("SPACE") .delay(500) .add(new GuiTester.WindowCheck<>(Main.class,