public static void setDemoFields(GLEventListener demo, GLWindow glWindow, boolean debug) { Assert.assertNotNull(demo); Assert.assertNotNull(glWindow); Window window = glWindow.getWindow(); if (debug) { MiscUtils.setFieldIfExists(demo, "glDebug", true); MiscUtils.setFieldIfExists(demo, "glTrace", true); } if (!MiscUtils.setFieldIfExists(demo, "window", window)) { MiscUtils.setFieldIfExists(demo, "glWindow", glWindow); } }
public void testWindowParenting1AWTTwoNewtChilds() throws InterruptedException, InvocationTargetException { Frame frame1 = new Frame("AWT Parent Frame"); GLWindow glWindow1 = GLWindow.create(glCaps); glWindow1.setUpdateFPSFrames(1, null); NewtCanvasAWT newtCanvasAWT1 = new NewtCanvasAWT(glWindow1); newtCanvasAWT1.setPreferredSize(size); GLEventListener demo1 = new GearsES2(1); setDemoFields(demo1, glWindow1, false); glWindow1.addGLEventListener(demo1); glWindow1.addKeyListener(new NewtAWTReparentingKeyAdapter(frame1, newtCanvasAWT1, glWindow1)); GLAnimatorControl animator1 = new Animator(glWindow1); animator1.start(); GLWindow glWindow2 = GLWindow.create(glCaps); glWindow2.setUpdateFPSFrames(1, null); NewtCanvasAWT newtCanvasAWT2 = new NewtCanvasAWT(glWindow2); newtCanvasAWT2.setPreferredSize(size); GLEventListener demo2 = new GearsES2(1); setDemoFields(demo2, glWindow2, false); glWindow2.addGLEventListener(demo2); glWindow2.addKeyListener(new NewtAWTReparentingKeyAdapter(frame1, newtCanvasAWT2, glWindow2)); GLAnimatorControl animator2 = new Animator(glWindow2); animator2.start(); Container cont1 = new Container(); cont1.setLayout(new BorderLayout()); cont1.add(newtCanvasAWT1, BorderLayout.CENTER); System.err.println("******* Cont1 setVisible"); cont1.setVisible(true); Container cont2 = new Container(); cont2.setLayout(new BorderLayout()); cont2.add(newtCanvasAWT2, BorderLayout.CENTER); System.err.println("******* Cont2 setVisible"); cont2.setVisible(true); final Container f_cont2 = cont2; frame1.setLayout(new BorderLayout()); frame1.add(new Label("NORTH"), BorderLayout.NORTH); frame1.add(new Label("CENTER"), BorderLayout.CENTER); frame1.add(new Label("SOUTH"), BorderLayout.SOUTH); frame1.add(cont1, BorderLayout.EAST); frame1.setLocation(0, 0); frame1.setSize((int) size.getWidth() * 2, (int) size.getHeight() * 2); final Frame f_frame1 = frame1; javax.swing.SwingUtilities.invokeAndWait( new Runnable() { public void run() { f_frame1.pack(); System.err.println("******* Frame setVisible"); f_frame1.setVisible(true); } }); Assert.assertEquals(newtCanvasAWT1.getNativeWindow(), glWindow1.getParent()); Assert.assertEquals(newtCanvasAWT2.getNativeWindow(), glWindow2.getParent()); Assert.assertEquals(true, animator1.isAnimating()); Assert.assertEquals(false, animator1.isPaused()); Assert.assertNotNull(animator1.getThread()); Assert.assertEquals(true, animator2.isAnimating()); Assert.assertEquals(false, animator2.isPaused()); Assert.assertNotNull(animator2.getThread()); Thread.sleep(waitAdd2nd); javax.swing.SwingUtilities.invokeAndWait( new Runnable() { public void run() { f_frame1.add(f_cont2, BorderLayout.WEST); f_frame1.pack(); } }); Thread.sleep(durationPerTest); animator1.stop(); Assert.assertEquals(false, animator1.isAnimating()); Assert.assertEquals(false, animator1.isPaused()); Assert.assertEquals(null, animator1.getThread()); animator2.stop(); Assert.assertEquals(false, animator2.isAnimating()); Assert.assertEquals(false, animator2.isPaused()); Assert.assertEquals(null, animator2.getThread()); frame1.dispose(); glWindow1.destroy(); glWindow2.destroy(); }