/** * Copyright 2010 JogAmp Community. All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ package com.jogamp.opengl.test.junit.newt.event; import org.eclipse.swt.SWT ; import org.eclipse.swt.layout.FillLayout ; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display ; import org.eclipse.swt.widgets.Shell ; import com.jogamp.opengl.GLCapabilities ; import com.jogamp.opengl.GLProfile ; import org.junit.AfterClass ; import org.junit.Assert; import org.junit.Assume; import org.junit.BeforeClass ; import org.junit.FixMethodOrder; import org.junit.runners.MethodSorters; import com.jogamp.nativewindow.swt.SWTAccessor; import com.jogamp.newt.opengl.GLWindow ; import com.jogamp.newt.swt.NewtCanvasSWT ; import com.jogamp.opengl.test.junit.jogl.demos.es2.RedSquareES2; import com.jogamp.opengl.test.junit.util.AWTRobotUtil; /** * Test whether or not event modifiers preserved by NEWT when * the canvas is a NewtCanvasSWT. */ @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestNewtEventModifiersNewtCanvasSWTAWT extends BaseNewtEventModifiers { private static Display _display = null; private static Shell _shell = null; private static Composite _composite = null; private static GLWindow _glWindow ; //////////////////////////////////////////////////////////////////////////// protected static void eventDispatchImpl() { final int maxEvents = 10; try { Thread.sleep(100); } catch (final InterruptedException e) { } final boolean[] res = { false }; int i=0; do { SWTAccessor.invoke(_display, true, new Runnable() { public void run() { if( !_display.isDisposed() ) { res[0] = _display.readAndDispatch(); } else { res[0] = false; } } } ); i++; } while( i<maxEvents && res[0] ); } @Override protected void eventDispatch() { eventDispatchImpl(); } //////////////////////////////////////////////////////////////////////////// @BeforeClass public static void beforeClass() throws Exception { // FIXME: Hangs .. w/ Java7 .. every now and then! setTestSupported(false); /*** SWTAccessor.invoke(true, new Runnable() { public void run() { _display = new Display(); }}); Assert.assertNotNull( _display ); SWTAccessor.invoke(_display, true, new Runnable() { public void run() { _shell = new Shell( _display ); Assert.assertNotNull( _shell ); _shell.setText( "Event Modifier Test NewtCanvasSWT" ) ; _shell.setLayout( new FillLayout() ); _composite = new Composite( _shell, SWT.NONE ); _composite.setLayout( new FillLayout() ); Assert.assertNotNull( _composite ); }}); { GLCapabilities caps = new GLCapabilities( GLProfile.get( GLProfile.GL2ES2 ) ) ; _glWindow = GLWindow.create( caps ) ; _glWindow.addGLEventListener( new RedSquareES2() ) ; NewtCanvasSWT.create( _composite, SWT.NO_BACKGROUND, _glWindow ) ; } SWTAccessor.invoke(_display, true, new Runnable() { public void run() { _shell.setBounds( TEST_FRAME_X, TEST_FRAME_Y, TEST_FRAME_WIDTH, TEST_FRAME_HEIGHT ) ; _shell.open(); } }); // no AWT idling, may deadlock on OSX! Assert.assertNotNull(_robot); _robot.setAutoWaitForIdle( false ) ; // no waiting for results .. AWTRobotUtil.requestFocus(null, _glWindow, false); // programmatic eventDispatchImpl(); AWTRobotUtil.requestFocus(_robot, _glWindow, INITIAL_MOUSE_X, INITIAL_MOUSE_Y); eventDispatchImpl(); _glWindow.addMouseListener( _testMouseListener ) ; */ } //////////////////////////////////////////////////////////////////////////// @AfterClass public static void afterClass() throws Exception { /** _glWindow.destroy() ; try { SWTAccessor.invoke(_display, true, new Runnable() { public void run() { if( null != _composite ) { _composite.dispose(); } if( null != _shell ) { _shell.dispose(); } if( null != _display && !_display.isDisposed()) { _display.dispose(); } }}); } catch( Throwable throwable ) { throwable.printStackTrace(); Assume.assumeNoException( throwable ); } */ } //////////////////////////////////////////////////////////////////////////// public static void main(final String args[]) throws Exception { final String testName = TestNewtEventModifiersNewtCanvasSWTAWT.class.getName() ; org.junit.runner.JUnitCore.main( testName ) ; } //////////////////////////////////////////////////////////////////////////// }