/* * 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"); } }