blob: 8459c84cb0bd8b08b49a21167f93119417145ba5 [file] [log] [blame]
/*
* Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import java.awt.*;
import java.awt.event.*;
/*
* @test
* @summary Check for AWTEventMulticaster working in headless mode
* @run main/othervm -Djava.awt.headless=true HeadlessAWTEventMulticaster
*/
public class HeadlessAWTEventMulticaster {
class ComponentListenerImpl implements ComponentListener {
public boolean hidden = false;
public boolean moved = false;
public boolean resized = false;
public boolean shown = false;
public void componentHidden(ComponentEvent e) {
hidden = true;
}
public void componentMoved(ComponentEvent e) {
moved = true;
}
public void componentResized(ComponentEvent e) {
resized = true;
}
public void componentShown(ComponentEvent e) {
shown = true;
}
}
class ContainerListenerImpl implements ContainerListener {
public boolean removed = false;
public boolean added = false;
public void componentAdded(ContainerEvent e) {
added = true;
}
public void componentRemoved(ContainerEvent e) {
removed = true;
}
}
class FocusListenerImpl implements FocusListener {
public boolean gained = false;
public boolean lost = false;
public void focusGained(FocusEvent e) {
gained = true;
}
public void focusLost(FocusEvent e) {
lost = true;
}
}
class KeyListenerImpl implements KeyListener {
public boolean pressed = false;
public boolean released = false;
public boolean typed = false;
public void keyPressed(KeyEvent e) {
pressed = true;
}
public void keyReleased(KeyEvent e) {
released = true;
}
public void keyTyped(KeyEvent e) {
typed = true;
}
}
public static void main(String args[]) {
new HeadlessAWTEventMulticaster().doTest();
}
void doTest() {
ComponentListener compList;
ComponentListenerImpl compListImpl;
ContainerListener contList;
ContainerListenerImpl contListImpl;
FocusListener focList;
FocusListenerImpl focListImpl;
KeyListener keyList;
KeyListenerImpl keyListImpl;
Component component = new Component(){};
// Component resized
compListImpl = new ComponentListenerImpl();
compList = AWTEventMulticaster.add(compListImpl, null);
compList.componentResized(new ComponentEvent(component,
ComponentEvent.COMPONENT_RESIZED));
if (compListImpl.hidden || compListImpl.moved || compListImpl.shown) {
throw new RuntimeException("Wrong id delivered: hidden || moved || shown");
}
if (!compListImpl.resized) {
throw new RuntimeException("Expected id, resized, not delivered");
}
// Component moved
compListImpl = new ComponentListenerImpl();
compList = AWTEventMulticaster.add(compListImpl, null);
compList.componentMoved(new ComponentEvent(component,
ComponentEvent.COMPONENT_MOVED));
if (compListImpl.hidden || compListImpl.resized || compListImpl.shown) {
throw new RuntimeException("Wrong id delivered: hidden || resized || shown");
}
if (!compListImpl.moved) {
throw new RuntimeException("Expected id, moved, not delivered");
}
// Component shown
compListImpl = new ComponentListenerImpl();
compList = AWTEventMulticaster.add(compListImpl, null);
compList.componentShown(new ComponentEvent(component,
ComponentEvent.COMPONENT_SHOWN));
if (compListImpl.hidden || compListImpl.resized || compListImpl.moved) {
throw new RuntimeException("Wrong id delivered: hidden || resized || moved");
}
if (!compListImpl.shown) {
throw new RuntimeException("Expected id, shown, not delivered");
}
// Component hidden
compListImpl = new ComponentListenerImpl();
compList = AWTEventMulticaster.add(compListImpl, null);
compList.componentHidden(new ComponentEvent(component,
ComponentEvent.COMPONENT_HIDDEN));
if (compListImpl.shown || compListImpl.resized || compListImpl.moved) {
throw new RuntimeException("Wrong id delivered: shown || resized || moved");
}
if (!compListImpl.hidden) {
throw new RuntimeException("Expected id, hidden, not delivered");
}
// Component added
contListImpl = new ContainerListenerImpl();
contList = AWTEventMulticaster.add(contListImpl, null);
contList.componentAdded(new ContainerEvent(component,
ContainerEvent.COMPONENT_ADDED, component));
if (contListImpl.removed) {
throw new RuntimeException("Wrong id delivered: removed");
}
if (!contListImpl.added) {
throw new RuntimeException("Expected id, added, not delivered");
}
// Component removed
contListImpl = new ContainerListenerImpl();
contList = AWTEventMulticaster.add(contListImpl, null);
contList.componentRemoved(new ContainerEvent(component,
ContainerEvent.COMPONENT_REMOVED, component));
if (contListImpl.added) {
throw new RuntimeException("Wrong id delivered: added");
}
if (!contListImpl.removed) {
throw new RuntimeException("Expected id, removed, not delivered");
}
// Focus gained
focListImpl = new FocusListenerImpl();
focList = AWTEventMulticaster.add(focListImpl, null);
focList.focusGained(new FocusEvent(component, FocusEvent.FOCUS_GAINED));
if (focListImpl.lost) {
throw new RuntimeException("Wrong id delivered: lost");
}
if (!focListImpl.gained) {
throw new RuntimeException("Expected id, gained, not delivered");
}
// Focus lost
focListImpl = new FocusListenerImpl();
focList = AWTEventMulticaster.add(focListImpl, null);
focList.focusLost(new FocusEvent(component, FocusEvent.FOCUS_LOST));
if (focListImpl.gained) {
throw new RuntimeException("Wrong id delivered: gained");
}
if (!focListImpl.lost) {
throw new RuntimeException("Expected id, lost, not delivered");
}
// Key typed
keyListImpl = new KeyListenerImpl();
keyList = AWTEventMulticaster.add(keyListImpl, null);
keyList.keyTyped(new KeyEvent(component,
KeyEvent.KEY_TYPED, 0L, 0, 0));
if (keyListImpl.pressed || keyListImpl.released)
throw new RuntimeException("Wrong id delivered: pressed || released");
if (!keyListImpl.typed)
throw new RuntimeException("Expected id, typed, not delivered");
// Key pressed
keyListImpl = new KeyListenerImpl();
keyList = AWTEventMulticaster.add(keyListImpl, null);
keyList.keyPressed(new KeyEvent(component,
KeyEvent.KEY_PRESSED, 0L, 0, 0));
if (keyListImpl.typed || keyListImpl.released)
throw new RuntimeException("Wrong id delivered: typed || released");
if (!keyListImpl.pressed)
throw new RuntimeException("Expected id, pressed, not delivered");
// Key released
keyListImpl = new KeyListenerImpl();
keyList = AWTEventMulticaster.add(keyListImpl, null);
keyList.keyReleased(new KeyEvent(component,
KeyEvent.KEY_RELEASED, 0L, 0, 0));
if (keyListImpl.pressed || keyListImpl.typed)
throw new RuntimeException("Wrong id delivered: pressed || typed");
if (!keyListImpl.released)
throw new RuntimeException("Expected id, released, not delivered");
}
}