aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java39
-rw-r--r--src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java18
-rw-r--r--src/junit/com/jogamp/test/junit/util/AWTRobotUtil.java34
3 files changed, 59 insertions, 32 deletions
diff --git a/src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java b/src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java
index ccc66b85a..d6a408061 100644
--- a/src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestFocus01SwingAWTRobot.java
@@ -106,15 +106,15 @@ public class TestFocus01SwingAWTRobot {
glWindow1.addWindowListener(glWindow1FA);
// Monitor NEWT focus and keyboard events.
- NEWTKeyAdapter newtKeyAdapter = new NEWTKeyAdapter("GLWindow1");
- glWindow1.addKeyListener(newtKeyAdapter);
+ NEWTKeyAdapter glWindow1KA = new NEWTKeyAdapter("GLWindow1");
+ glWindow1.addKeyListener(glWindow1KA);
// Wrap the window in a canvas.
final NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
// Monitor AWT focus and keyboard events.
- AWTKeyAdapter awtKeyAdapter = new AWTKeyAdapter("NewtCanvasAWT");
- newtCanvasAWT.addKeyListener(awtKeyAdapter);
+ AWTKeyAdapter newtCanvasAWTKA = new AWTKeyAdapter("NewtCanvasAWT");
+ newtCanvasAWT.addKeyListener(newtCanvasAWTKA);
AWTFocusAdapter newtCanvasAWTFA = new AWTFocusAdapter("NewtCanvasAWT");
newtCanvasAWT.addFocusListener(newtCanvasAWTFA);
@@ -125,6 +125,8 @@ public class TestFocus01SwingAWTRobot {
Button button = new Button("Click me ..");
AWTFocusAdapter buttonFA = new AWTFocusAdapter("Button");
button.addFocusListener(buttonFA);
+ AWTKeyAdapter buttonKA = new AWTKeyAdapter("Button");
+ button.addKeyListener(buttonKA);
frame1.getContentPane().add(button, BorderLayout.NORTH);
frame1.setSize(width, height);
frame1.setVisible(true);
@@ -145,42 +147,23 @@ public class TestFocus01SwingAWTRobot {
Assert.assertTrue(AWTRobotUtil.requestFocusAndWait(robot, button, button));
Assert.assertEquals(0, glWindow1FA.getCount());
Assert.assertEquals(0, newtCanvasAWTFA.getCount());
- Assert.assertEquals(1, buttonFA.getCount());
System.err.println("FOCUS AWT Button sync");
+ Assert.assertTrue(AWTRobotUtil.testKeyInput(robot, buttonKA));
// Request the AWT focus, which should automatically provide the NEWT window with focus.
Thread.sleep(100); // allow event sync
System.err.println("FOCUS NEWT Canvas/GLWindow request");
Assert.assertTrue(AWTRobotUtil.requestFocusAndWait(robot, newtCanvasAWT, newtCanvasAWT.getNEWTChild()));
- Assert.assertEquals(1, glWindow1FA.getCount());
Assert.assertEquals(0, newtCanvasAWTFA.getCount());
Assert.assertEquals(0, buttonFA.getCount());
System.err.println("FOCUS NEWT Canvas/GLWindow sync");
-
- // Type two keys, which should be directed to the focused window.
- if(null == robot) {
- robot = new Robot();
- robot.setAutoWaitForIdle(true);
- }
- robot.keyPress(java.awt.event.KeyEvent.VK_A);
- robot.keyRelease(java.awt.event.KeyEvent.VK_A);
- robot.keyPress(java.awt.event.KeyEvent.VK_B);
- robot.keyRelease(java.awt.event.KeyEvent.VK_B);
-
- // Wait for the key events to be processed.
- for (wait=0; wait<10 && newtKeyAdapter.getCount()<2; wait++) {
- Thread.sleep(100);
- }
-
- Assert.assertEquals(0, newtCanvasAWTFA.getCount());
- Assert.assertEquals(1, glWindow1FA.getCount());
- Assert.assertEquals("AWT parent canvas received keyboard events", 0, awtKeyAdapter.getCount());
- Assert.assertEquals(2, newtKeyAdapter.getCount());
+ Assert.assertTrue(AWTRobotUtil.testKeyInput(robot, glWindow1KA));
+ Assert.assertEquals("AWT parent canvas received keyboard events", 0, newtCanvasAWTKA.getCount());
// Remove listeners to avoid logging during dispose/destroy.
- glWindow1.removeKeyListener(newtKeyAdapter);
+ glWindow1.removeKeyListener(glWindow1KA);
glWindow1.removeWindowListener(glWindow1FA);
- newtCanvasAWT.removeKeyListener(awtKeyAdapter);
+ newtCanvasAWT.removeKeyListener(newtCanvasAWTKA);
newtCanvasAWT.removeFocusListener(newtCanvasAWTFA);
// Shutdown the test.
diff --git a/src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java b/src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java
index 379672cb2..cee4c31df 100644
--- a/src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java
+++ b/src/junit/com/jogamp/test/junit/newt/TestFocus02SwingAWTRobot.java
@@ -106,14 +106,20 @@ public class TestFocus02SwingAWTRobot {
glWindow1.addGLEventListener(demo1);
NEWTFocusAdapter glWindow1FA = new NEWTFocusAdapter("GLWindow1");
glWindow1.addWindowListener(glWindow1FA);
+ NEWTKeyAdapter glWindow1KA = new NEWTKeyAdapter("GLWindow1");
+ glWindow1.addKeyListener(glWindow1KA);
NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1);
AWTFocusAdapter newtCanvasAWTFA = new AWTFocusAdapter("NewtCanvasAWT");
newtCanvasAWT.addFocusListener(newtCanvasAWTFA);
+ AWTKeyAdapter newtCanvasAWTKA = new AWTKeyAdapter("NewtCanvasAWT");
+ newtCanvasAWT.addKeyListener(newtCanvasAWTKA);
Button buttonNorthInner = new Button("north");
AWTFocusAdapter buttonNorthInnerFA = new AWTFocusAdapter("ButtonNorthInner");
buttonNorthInner.addFocusListener(buttonNorthInnerFA);
+ AWTKeyAdapter buttonNorthInnerKA = new AWTKeyAdapter("ButtonNorthInner");
+ buttonNorthInner.addKeyListener(buttonNorthInnerKA);
Container container1 = new Container();
container1.setLayout(new BorderLayout());
container1.add(buttonNorthInner, BorderLayout.NORTH);
@@ -125,6 +131,8 @@ public class TestFocus02SwingAWTRobot {
Button buttonNorthOuter = new Button("north");
AWTFocusAdapter buttonNorthOuterFA = new AWTFocusAdapter("ButtonNorthOuter");
buttonNorthOuter.addFocusListener(buttonNorthOuterFA);
+ AWTKeyAdapter buttonNorthOuterKA = new AWTKeyAdapter("ButtonNorthOuter");
+ buttonNorthOuter.addKeyListener(buttonNorthOuterKA);
JPanel jPanel1 = new JPanel();
jPanel1.setLayout(new BorderLayout());
jPanel1.add(buttonNorthOuter, BorderLayout.NORTH);
@@ -158,21 +166,22 @@ public class TestFocus02SwingAWTRobot {
Assert.assertTrue(AWTRobotUtil.requestFocusAndWait(robot, buttonNorthOuter, buttonNorthOuter));
Assert.assertEquals(0, glWindow1FA.getCount());
Assert.assertEquals(0, newtCanvasAWTFA.getCount());
- Assert.assertEquals(1, buttonNorthOuterFA.getCount());
Assert.assertEquals(0, buttonNorthInnerFA.getCount());
Assert.assertEquals(0, jFrame1FA.getCount());
System.err.println("FOCUS AWT Button Outer sync");
+ Assert.assertTrue(AWTRobotUtil.testKeyInput(robot, buttonNorthOuterKA));
// NEWT Focus
Thread.sleep(100); // allow event sync
System.err.println("FOCUS NEWT Canvas/GLWindow request");
Assert.assertTrue(AWTRobotUtil.requestFocusAndWait(robot, newtCanvasAWT, newtCanvasAWT.getNEWTChild()));
- Assert.assertEquals(1, glWindow1FA.getCount());
Assert.assertEquals(0, newtCanvasAWTFA.getCount());
Assert.assertEquals(0, buttonNorthInnerFA.getCount());
Assert.assertEquals(0, buttonNorthOuterFA.getCount());
Assert.assertEquals(0, jFrame1FA.getCount());
System.err.println("FOCUS NEWT Canvas/GLWindow sync");
+ Assert.assertTrue(AWTRobotUtil.testKeyInput(robot, glWindow1KA));
+ Assert.assertEquals("AWT parent canvas received keyboard events", 0, newtCanvasAWTKA.getCount());
// Button Inner Focus
Thread.sleep(100); // allow event sync
@@ -180,21 +189,22 @@ public class TestFocus02SwingAWTRobot {
Assert.assertTrue(AWTRobotUtil.requestFocusAndWait(robot, buttonNorthInner, buttonNorthInner));
Assert.assertEquals(0, glWindow1FA.getCount());
Assert.assertEquals(0, newtCanvasAWTFA.getCount());
- Assert.assertEquals(1, buttonNorthInnerFA.getCount());
Assert.assertEquals(0, buttonNorthOuterFA.getCount());
Assert.assertEquals(0, jFrame1FA.getCount());
System.err.println("FOCUS AWT Button sync");
+ Assert.assertTrue(AWTRobotUtil.testKeyInput(robot, buttonNorthInnerKA));
// NEWT Focus
Thread.sleep(100); // allow event sync
System.err.println("FOCUS NEWT Canvas/GLWindow request");
Assert.assertTrue(AWTRobotUtil.requestFocusAndWait(robot, newtCanvasAWT, newtCanvasAWT.getNEWTChild()));
- Assert.assertEquals(1, glWindow1FA.getCount());
Assert.assertEquals(0, newtCanvasAWTFA.getCount());
Assert.assertEquals(0, buttonNorthInnerFA.getCount());
Assert.assertEquals(0, buttonNorthOuterFA.getCount());
Assert.assertEquals(0, jFrame1FA.getCount());
System.err.println("FOCUS NEWT Canvas/GLWindow sync");
+ Assert.assertTrue(AWTRobotUtil.testKeyInput(robot, glWindow1KA));
+ Assert.assertEquals("AWT parent canvas received keyboard events", 0, newtCanvasAWTKA.getCount());
animator1.stop();
Assert.assertEquals(false, animator1.isAnimating());
diff --git a/src/junit/com/jogamp/test/junit/util/AWTRobotUtil.java b/src/junit/com/jogamp/test/junit/util/AWTRobotUtil.java
index e0467a6ee..b654b2693 100644
--- a/src/junit/com/jogamp/test/junit/util/AWTRobotUtil.java
+++ b/src/junit/com/jogamp/test/junit/util/AWTRobotUtil.java
@@ -174,5 +174,39 @@ public class AWTRobotUtil {
requestFocus(robot, requestFocus);
return waitForFocus(waitForFocus);
}
+
+ /**
+ * @param keyTypedCounter shall return the number of keys typed (press + release)
+ * @return True if the object received 2 keys within TIME_OUT
+ */
+ public static boolean testKeyInput(Robot robot, TestEventCountAdapter keyTypedCounter)
+ throws AWTException, InterruptedException, InvocationTargetException {
+ Component comp = null;
+ com.jogamp.newt.Window win = null;
+
+ int c0 = keyTypedCounter.getCount();
+
+ if(null == robot) {
+ robot = new Robot();
+ robot.setAutoWaitForIdle(true);
+ }
+
+ robot.keyPress(java.awt.event.KeyEvent.VK_A);
+ robot.delay(50);
+ robot.keyRelease(java.awt.event.KeyEvent.VK_A);
+ robot.delay(50);
+ robot.keyPress(java.awt.event.KeyEvent.VK_B);
+ robot.delay(50);
+ robot.keyRelease(java.awt.event.KeyEvent.VK_B);
+ robot.delay(50);
+
+ // Wait for the key events to be processed.
+ int wait;
+ for (wait=0; wait<10 && (keyTypedCounter.getCount()-c0)<2; wait++) {
+ Thread.sleep(TIME_OUT/10);
+ }
+ return wait<10;
+ }
+
}