@Test public void testWindowParenting02CreateVisibleDestroy3Odd() throws InterruptedException { int x = 0; int y = 0; NEWTEventFiFo eventFifo = new NEWTEventFiFo(); GLWindow glWindow1 = GLWindow.create(glCaps); GLEventListener demo1 = new RedSquare(); setDemoFields(demo1, glWindow1, false); glWindow1.addGLEventListener(demo1); NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1); Frame frame = new Frame("AWT Parent Frame"); Assert.assertNotNull(frame); frame.setSize(width, height); // visible test frame.setVisible(true); frame.add(newtCanvasAWT); Animator animator1 = new Animator(glWindow1); animator1.start(); while (animator1.isAnimating() && animator1.getDuration() < durationPerTest) { Thread.sleep(100); } Assert.assertEquals(true, animator1.isAnimating()); // !!! frame.dispose(); glWindow1.destroy(true); }
@Test public void testWindowParenting04ReparentNewtWin2TopLayouted() throws InterruptedException { int x = 0; int y = 0; NEWTEventFiFo eventFifo = new NEWTEventFiFo(); GLWindow glWindow1 = GLWindow.create(glCaps); GLEventListener demo1 = new RedSquare(); setDemoFields(demo1, glWindow1, false); glWindow1.addGLEventListener(demo1); NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1); Frame frame = new Frame("AWT Parent Frame"); frame.setLayout(new BorderLayout()); frame.add(new Button("North"), BorderLayout.NORTH); frame.add(new Button("South"), BorderLayout.SOUTH); frame.add(new Button("East"), BorderLayout.EAST); frame.add(new Button("West"), BorderLayout.WEST); frame.setSize(width, height); frame.setLocation(640, 480); frame.setVisible(true); frame.add(newtCanvasAWT, BorderLayout.CENTER); Assert.assertEquals(newtCanvasAWT.getNativeWindow(), glWindow1.getParentNativeWindow()); Animator animator1 = new Animator(glWindow1); animator1.start(); int state = 0; while (animator1.isAnimating() && animator1.getDuration() < 3 * durationPerTest) { Thread.sleep(durationPerTest); switch (state) { case 0: glWindow1.reparentWindow(null, null); Assert.assertEquals(true, glWindow1.isNativeWindowValid()); Assert.assertNull(glWindow1.getParentNativeWindow()); break; case 1: glWindow1.reparentWindow(newtCanvasAWT.getNativeWindow(), null); Assert.assertEquals(true, glWindow1.isNativeWindowValid()); Assert.assertEquals(newtCanvasAWT.getNativeWindow(), glWindow1.getParentNativeWindow()); break; } state++; } animator1.stop(); Assert.assertEquals(false, animator1.isAnimating()); frame.dispose(); glWindow1.destroy(true); }
@Test public void testWindowParenting01CreateVisibleDestroy1() throws InterruptedException { int x = 0; int y = 0; NEWTEventFiFo eventFifo = new NEWTEventFiFo(); GLWindow glWindow1 = GLWindow.create(glCaps); Assert.assertNotNull(glWindow1); Assert.assertEquals(false, glWindow1.isVisible()); Assert.assertEquals(false, glWindow1.isNativeWindowValid()); Assert.assertNull(glWindow1.getParentNativeWindow()); glWindow1.setTitle("testWindowParenting01CreateVisibleDestroy"); GLEventListener demo1 = new RedSquare(); setDemoFields(demo1, glWindow1, false); glWindow1.addGLEventListener(demo1); NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1); Assert.assertNotNull(newtCanvasAWT); Assert.assertEquals(false, glWindow1.isVisible()); Assert.assertEquals(false, glWindow1.isNativeWindowValid()); Assert.assertNull(glWindow1.getParentNativeWindow()); Frame frame1 = new Frame("AWT Parent Frame"); frame1.setLayout(new BorderLayout()); frame1.add(new Button("North"), BorderLayout.NORTH); frame1.add(new Button("South"), BorderLayout.SOUTH); frame1.add(new Button("East"), BorderLayout.EAST); frame1.add(new Button("West"), BorderLayout.WEST); Container container1 = new Container(); container1.setLayout(new BorderLayout()); container1.add(new Button("north"), BorderLayout.NORTH); container1.add(new Button("south"), BorderLayout.SOUTH); container1.add(new Button("east"), BorderLayout.EAST); container1.add(new Button("west"), BorderLayout.WEST); container1.add(newtCanvasAWT, BorderLayout.CENTER); frame1.add(container1, BorderLayout.CENTER); frame1.setSize(width, height); // visible test frame1.setVisible(true); Assert.assertEquals(newtCanvasAWT.getNativeWindow(), glWindow1.getParentNativeWindow()); Animator animator1 = new Animator(glWindow1); animator1.start(); while (animator1.isAnimating() && animator1.getDuration() < durationPerTest) { Thread.sleep(100); } animator1.stop(); Assert.assertEquals(false, animator1.isAnimating()); frame1.setVisible(false); Assert.assertEquals(false, glWindow1.isDestroyed()); frame1.setVisible(true); Assert.assertEquals(false, glWindow1.isDestroyed()); frame1.remove(newtCanvasAWT); // Assert.assertNull(glWindow1.getParentNativeWindow()); Assert.assertEquals(false, glWindow1.isDestroyed()); frame1.dispose(); Assert.assertEquals(false, glWindow1.isDestroyed()); glWindow1.destroy(true); // Assert.assertEquals(true, glWindow1.isDestroyed()); }
protected void runTestGL(final GLCapabilitiesImmutable caps) throws InterruptedException { final Display nDisplay = NewtFactory.createDisplay(NativeWindowFactory.TYPE_AWT, null, false); // local display final Screen nScreen = NewtFactory.createScreen(nDisplay, 0); // screen 0 final Window nWindow = NewtFactory.createWindow(nScreen, caps); final GLWindow glWindow = GLWindow.create(nWindow); Assert.assertNotNull(glWindow); glWindow.setTitle("Gears NewtAWTWrapper Test"); glWindow.addGLEventListener(new GearsES2(1)); final Animator animator = useAnimator ? new Animator(glWindow) : null; final QuitAdapter quitAdapter = new QuitAdapter(); glWindow.addKeyListener(new TraceKeyAdapter(quitAdapter)); glWindow.addWindowListener(new TraceWindowAdapter(quitAdapter)); if (useAnimator) { animator.start(); } int div = 3; glWindow.setSize(width / div, height / div); glWindow.setVisible(true); if (doResizeTest) { glWindow.display(); final int[] expSurfaceSize = glWindow.getNativeSurface().convertToPixelUnits(new int[] {width / div, height / div}); Assert.assertTrue( "Surface Size not reached: Expected " + expSurfaceSize[0] + "x" + expSurfaceSize[1] + ", Is " + glWindow.getSurfaceWidth() + "x" + glWindow.getSurfaceHeight(), AWTRobotUtil.waitForSize(glWindow, expSurfaceSize[0], expSurfaceSize[1])); Thread.sleep(600); div = 2; glWindow.setSize(width / div, height / div); glWindow.display(); expSurfaceSize[0] = width / div; expSurfaceSize[1] = height / div; glWindow.getNativeSurface().convertToPixelUnits(expSurfaceSize); Assert.assertTrue( "Surface Size not reached: Expected " + expSurfaceSize[0] + "x" + expSurfaceSize[1] + ", Is " + glWindow.getSurfaceWidth() + "x" + glWindow.getSurfaceHeight(), AWTRobotUtil.waitForSize(glWindow, expSurfaceSize[0], expSurfaceSize[1])); Thread.sleep(600); div = 1; glWindow.setSize(width / div, height / div); glWindow.display(); expSurfaceSize[0] = width / div; expSurfaceSize[1] = height / div; glWindow.getNativeSurface().convertToPixelUnits(expSurfaceSize); Assert.assertTrue( "Surface Size not reached: Expected " + expSurfaceSize[0] + "x" + expSurfaceSize[1] + ", Is " + glWindow.getSurfaceWidth() + "x" + glWindow.getSurfaceHeight(), AWTRobotUtil.waitForSize(glWindow, expSurfaceSize[0], expSurfaceSize[1])); Thread.sleep(600); } final long t0 = System.currentTimeMillis(); long t1 = t0; while (!quitAdapter.shouldQuit() && t1 - t0 < duration) { Thread.sleep(100); t1 = System.currentTimeMillis(); } if (useAnimator) { animator.stop(); } glWindow.destroy(); }