Search in sources :

Example 1 with ScreenListener

use of com.b3dgs.lionengine.graphic.ScreenListener in project lionengine by b3dgs.

the class ScreenBaseAwt method initMainFrame.

/**
 * Initialize the main frame.
 *
 * @return The created main frame.
 * @throws LionEngineException If the engine has not been started.
 */
private JFrame initMainFrame() {
    final String title = new StringBuilder().append(Engine.getProgramName()).append(Constant.SPACE).append(Engine.getProgramVersion()).toString();
    final JFrame jframe = new JFrame(title, conf);
    jframe.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    jframe.addWindowListener(new WindowAdapter() {

        @Override
        public void windowClosing(WindowEvent event) {
            for (final ScreenListener listener : listeners) {
                listener.notifyClosed();
            }
        }
    });
    jframe.setResizable(false);
    jframe.setUndecorated(false);
    jframe.setIgnoreRepaint(true);
    return jframe;
}
Also used : ScreenListener(com.b3dgs.lionengine.graphic.ScreenListener) JFrame(javax.swing.JFrame) WindowEvent(java.awt.event.WindowEvent) WindowAdapter(java.awt.event.WindowAdapter)

Example 2 with ScreenListener

use of com.b3dgs.lionengine.graphic.ScreenListener in project lionengine by b3dgs.

the class ScreenAwtTest method testScreen.

/**
 * Test screen.
 *
 * @param config The config to test with.
 */
private void testScreen(Config config) {
    final Screen screen = Graphics.createScreen(config);
    final InputDeviceKeyListener listener = new InputDeviceKeyListener() {

        @Override
        public void keyReleased(int keyCode, char keyChar) {
        // Mock
        }

        @Override
        public void keyPressed(int keyCode, char keyChar) {
        // Mock
        }
    };
    final AtomicBoolean lost = new AtomicBoolean();
    final AtomicBoolean gained = new AtomicBoolean();
    final AtomicBoolean closed = new AtomicBoolean();
    final ScreenListener screenListener = new ScreenListener() {

        @Override
        public void notifyFocusLost() {
            lost.set(true);
        }

        @Override
        public void notifyFocusGained() {
            gained.set(true);
        }

        @Override
        public void notifyClosed() {
            closed.set(true);
        }
    };
    Assert.assertFalse(screen.isReady());
    screen.addListener(screenListener);
    screen.start();
    screen.awaitReady();
    screen.addKeyListener(listener);
    screen.preUpdate();
    screen.update();
    screen.showCursor();
    screen.hideCursor();
    screen.requestFocus();
    screen.onSourceChanged(UtilTests.RESOLUTION_320_240);
    Assert.assertNotNull(screen.getConfig());
    Assert.assertNotNull(screen.getGraphic());
    Assert.assertTrue(screen.getReadyTimeOut() > -1L);
    Assert.assertTrue(screen.getX() > -1);
    Assert.assertTrue(screen.getY() > -1);
    Assert.assertTrue(screen.isReady());
    while (config.isWindowed() && !gained.get()) {
        continue;
    }
    screen.setIcon("void");
    screen.setIcon("image.png");
    if (!config.hasApplet()) {
        final javax.swing.JFrame frame = (javax.swing.JFrame) UtilReflection.getField(screen, "frame");
        frame.dispatchEvent(new java.awt.event.WindowEvent(frame, java.awt.event.WindowEvent.WINDOW_CLOSING));
        while (config.isWindowed() && !gained.get()) {
            continue;
        }
    }
    screen.dispose();
    Assert.assertEquals(0, screen.getX());
    Assert.assertEquals(0, screen.getY());
    screen.removeListener(screenListener);
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ScreenListener(com.b3dgs.lionengine.graphic.ScreenListener) Screen(com.b3dgs.lionengine.graphic.Screen) InputDeviceKeyListener(com.b3dgs.lionengine.InputDeviceKeyListener)

Example 3 with ScreenListener

use of com.b3dgs.lionengine.graphic.ScreenListener in project lionengine by b3dgs.

the class ScreenAwtTest method testScreen.

/**
 * Test screen.
 *
 * @param config The config to test with.
 */
private void testScreen(Config config) {
    final Screen screen = Graphics.createScreen(config);
    final InputDeviceKeyListener listener = new InputDeviceKeyListener() {

        @Override
        public void keyReleased(int keyCode, char keyChar) {
        // Mock
        }

        @Override
        public void keyPressed(int keyCode, char keyChar) {
        // Mock
        }
    };
    final AtomicBoolean lost = new AtomicBoolean();
    final AtomicBoolean gained = new AtomicBoolean();
    final AtomicBoolean closed = new AtomicBoolean();
    final ScreenListener screenListener = new ScreenListener() {

        @Override
        public void notifyFocusLost() {
            lost.set(true);
        }

        @Override
        public void notifyFocusGained() {
            gained.set(true);
        }

        @Override
        public void notifyClosed() {
            closed.set(true);
        }
    };
    assertFalse(screen.isReady());
    screen.addListener(screenListener);
    screen.start();
    screen.awaitReady();
    screen.addKeyListener(listener);
    screen.preUpdate();
    screen.update();
    screen.showCursor();
    screen.hideCursor();
    screen.requestFocus();
    screen.onSourceChanged(UtilTests.RESOLUTION_320_240);
    assertNotNull(screen.getConfig());
    assertNotNull(screen.getGraphic());
    assertTrue(screen.getReadyTimeOut() > -1L);
    assertTrue(screen.getX() > -1);
    assertTrue(screen.getY() > -1);
    assertTrue(screen.isReady());
    assertTimeout(10_000L, () -> {
        while (config.isWindowed() && !gained.get()) {
            continue;
        }
    });
    assertThrows(() -> screen.setIcons(Arrays.asList(Medias.create("void"))), "[void] Cannot open the media !");
    screen.setIcons(Arrays.asList(Medias.create("image.png")));
    final javax.swing.JFrame frame = (javax.swing.JFrame) UtilReflection.getField(screen, "frame");
    frame.dispatchEvent(new java.awt.event.WindowEvent(frame, java.awt.event.WindowEvent.WINDOW_CLOSING));
    assertTimeout(10_000L, () -> {
        while (config.isWindowed() && !gained.get()) {
            continue;
        }
    });
    screen.dispose();
    Verbose.info("*********************************** EXPECTED VERBOSE ***********************************");
    assertEquals(0, screen.getX());
    assertEquals(0, screen.getY());
    Verbose.info("****************************************************************************************");
    screen.removeListener(screenListener);
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ScreenListener(com.b3dgs.lionengine.graphic.ScreenListener) Screen(com.b3dgs.lionengine.graphic.Screen) InputDeviceKeyListener(com.b3dgs.lionengine.InputDeviceKeyListener)

Example 4 with ScreenListener

use of com.b3dgs.lionengine.graphic.ScreenListener in project lionengine by b3dgs.

the class ScreenHeadlessTest method testScreen.

/**
 * Test screen.
 *
 * @param config The config to test with.
 */
private void testScreen(Config config) {
    final Screen screen = Graphics.createScreen(config);
    final InputDeviceKeyListener listener = new InputDeviceKeyListener() {

        @Override
        public void keyReleased(int keyCode, char keyChar) {
        // Mock
        }

        @Override
        public void keyPressed(int keyCode, char keyChar) {
        // Mock
        }
    };
    final AtomicBoolean lost = new AtomicBoolean();
    final AtomicBoolean gained = new AtomicBoolean();
    final AtomicBoolean closed = new AtomicBoolean();
    final ScreenListener screenListener = new ScreenListener() {

        @Override
        public void notifyFocusLost() {
            lost.set(true);
        }

        @Override
        public void notifyFocusGained() {
            gained.set(true);
        }

        @Override
        public void notifyClosed() {
            closed.set(true);
        }
    };
    assertFalse(screen.isReady());
    screen.addListener(screenListener);
    screen.start();
    screen.awaitReady();
    screen.addKeyListener(listener);
    screen.preUpdate();
    screen.update();
    screen.showCursor();
    screen.hideCursor();
    screen.requestFocus();
    screen.onSourceChanged(UtilTests.RESOLUTION_320_240);
    assertNotNull(screen.getConfig());
    assertNotNull(screen.getGraphic());
    assertTrue(screen.getReadyTimeOut() > -1L);
    assertTrue(screen.getX() > -1);
    assertTrue(screen.getY() > -1);
    assertTrue(screen.isReady());
    while (config.isWindowed() && !gained.get()) {
        continue;
    }
    screen.setIcons(Arrays.asList(Medias.create("void")));
    screen.setIcons(Arrays.asList(Medias.create("image.png")));
    screen.dispose();
    assertEquals(0, screen.getX());
    assertEquals(0, screen.getY());
    screen.removeListener(screenListener);
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ScreenListener(com.b3dgs.lionengine.graphic.ScreenListener) Screen(com.b3dgs.lionengine.graphic.Screen) InputDeviceKeyListener(com.b3dgs.lionengine.InputDeviceKeyListener)

Aggregations

ScreenListener (com.b3dgs.lionengine.graphic.ScreenListener)4 InputDeviceKeyListener (com.b3dgs.lionengine.InputDeviceKeyListener)3 Screen (com.b3dgs.lionengine.graphic.Screen)3 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)3 WindowAdapter (java.awt.event.WindowAdapter)1 WindowEvent (java.awt.event.WindowEvent)1 JFrame (javax.swing.JFrame)1