b5a48277ab
Reviewed-by: prr
1249 lines
48 KiB
Java
1249 lines
48 KiB
Java
/*
|
|
* Copyright (c) 1999, 2023, 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.
|
|
*/
|
|
|
|
/*
|
|
@test
|
|
@bug 4222172
|
|
@summary Verifies initial implementation of HierarchyEvent (programmatic)
|
|
@key headful
|
|
@run main SpecTest
|
|
*/
|
|
|
|
import java.awt.AWTEvent;
|
|
import java.awt.BorderLayout;
|
|
import java.awt.Component;
|
|
import java.awt.Container;
|
|
import java.awt.EventQueue;
|
|
import java.awt.Frame;
|
|
import java.awt.Label;
|
|
import java.awt.Panel;
|
|
import java.awt.Window;
|
|
import java.awt.event.HierarchyBoundsListener;
|
|
import java.awt.event.HierarchyEvent;
|
|
import java.awt.event.HierarchyListener;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JPanel;
|
|
|
|
public class SpecTest extends Frame implements HierarchyListener, HierarchyBoundsListener {
|
|
static SpecTest f;
|
|
|
|
public static void main(String args[]) throws InterruptedException,
|
|
InvocationTargetException {
|
|
EventQueue.invokeAndWait(() -> init());
|
|
f.start();
|
|
}
|
|
|
|
class EELabel extends Label {
|
|
private long mask = 0;
|
|
public EELabel(String s) {
|
|
super(s);
|
|
}
|
|
|
|
protected void processHierarchyEvent(HierarchyEvent e) {
|
|
super.processHierarchyEvent(e);
|
|
if ((mask & AWTEvent.HIERARCHY_EVENT_MASK) != 0) {
|
|
switch (e.getID()) {
|
|
case HierarchyEvent.HIERARCHY_CHANGED:
|
|
hierarchyChanged(e);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void processHierarchyBoundsEvent(HierarchyEvent e) {
|
|
super.processHierarchyBoundsEvent(e);
|
|
if ((mask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) != 0) {
|
|
switch (e.getID()) {
|
|
case HierarchyEvent.ANCESTOR_MOVED:
|
|
ancestorMoved(e);
|
|
break;
|
|
case HierarchyEvent.ANCESTOR_RESIZED:
|
|
ancestorResized(e);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void pubEnableEvents(long eventsToEnable) {
|
|
mask |= eventsToEnable;
|
|
enableEvents(eventsToEnable);
|
|
}
|
|
|
|
public void pubDisableEvents(long eventsToDisable) {
|
|
mask &= ~eventsToDisable;
|
|
disableEvents(eventsToDisable);
|
|
}
|
|
}
|
|
|
|
class EEJLabel extends JLabel {
|
|
private long mask = 0;
|
|
public EEJLabel(String s) {
|
|
super(s);
|
|
}
|
|
protected void processHierarchyEvent(HierarchyEvent e) {
|
|
super.processHierarchyEvent(e);
|
|
if ((mask & AWTEvent.HIERARCHY_EVENT_MASK) != 0) {
|
|
switch (e.getID()) {
|
|
case HierarchyEvent.HIERARCHY_CHANGED:
|
|
hierarchyChanged(e);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void processHierarchyBoundsEvent(HierarchyEvent e) {
|
|
super.processHierarchyBoundsEvent(e);
|
|
if ((mask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) != 0) {
|
|
switch (e.getID()) {
|
|
case HierarchyEvent.ANCESTOR_MOVED:
|
|
ancestorMoved(e);
|
|
break;
|
|
case HierarchyEvent.ANCESTOR_RESIZED:
|
|
ancestorResized(e);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void pubEnableEvents(long eventsToEnable) {
|
|
mask |= eventsToEnable;
|
|
enableEvents(eventsToEnable);
|
|
}
|
|
|
|
public void pubDisableEvents(long eventsToDisable) {
|
|
mask &= ~eventsToDisable;
|
|
disableEvents(eventsToDisable);
|
|
}
|
|
}
|
|
|
|
class EEPanel extends Panel {
|
|
private long mask = 0;
|
|
protected void processHierarchyEvent(HierarchyEvent e) {
|
|
super.processHierarchyEvent(e);
|
|
if ((mask & AWTEvent.HIERARCHY_EVENT_MASK) != 0) {
|
|
switch (e.getID()) {
|
|
case HierarchyEvent.HIERARCHY_CHANGED:
|
|
hierarchyChanged(e);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void processHierarchyBoundsEvent(HierarchyEvent e) {
|
|
super.processHierarchyBoundsEvent(e);
|
|
if ((mask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) != 0) {
|
|
switch (e.getID()) {
|
|
case HierarchyEvent.ANCESTOR_MOVED:
|
|
ancestorMoved(e);
|
|
break;
|
|
case HierarchyEvent.ANCESTOR_RESIZED:
|
|
ancestorResized(e);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void pubEnableEvents(long eventsToEnable) {
|
|
mask |= eventsToEnable;
|
|
enableEvents(eventsToEnable);
|
|
}
|
|
|
|
public void pubDisableEvents(long eventsToDisable) {
|
|
mask &= ~eventsToDisable;
|
|
disableEvents(eventsToDisable);
|
|
}
|
|
}
|
|
|
|
class EEJPanel extends JPanel {
|
|
private long mask = 0;
|
|
protected void processHierarchyEvent(HierarchyEvent e) {
|
|
super.processHierarchyEvent(e);
|
|
if ((mask & AWTEvent.HIERARCHY_EVENT_MASK) != 0) {
|
|
switch (e.getID()) {
|
|
case HierarchyEvent.HIERARCHY_CHANGED:
|
|
hierarchyChanged(e);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void processHierarchyBoundsEvent(HierarchyEvent e) {
|
|
super.processHierarchyBoundsEvent(e);
|
|
if ((mask & AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK) != 0) {
|
|
switch (e.getID()) {
|
|
case HierarchyEvent.ANCESTOR_MOVED:
|
|
ancestorMoved(e);
|
|
break;
|
|
case HierarchyEvent.ANCESTOR_RESIZED:
|
|
ancestorResized(e);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void pubEnableEvents(long eventsToEnable) {
|
|
mask |= eventsToEnable;
|
|
enableEvents(eventsToEnable);
|
|
}
|
|
|
|
public void pubDisableEvents(long eventsToDisable) {
|
|
mask &= ~eventsToDisable;
|
|
disableEvents(eventsToDisable);
|
|
}
|
|
}
|
|
|
|
int parentChanged, displayabilityChanged, showingChanged, ancestorMoved,
|
|
ancestorResized;
|
|
private static final int OBJ_ARRAY_SIZE = 2;
|
|
Component[] source = new Component[OBJ_ARRAY_SIZE],
|
|
changed = new Component[OBJ_ARRAY_SIZE];
|
|
Container[] changedParent = new Container[OBJ_ARRAY_SIZE];
|
|
|
|
boolean assertParent = false, assertDisplayability = false,
|
|
assertShowing = false, assertMoved = false, assertResized = false;
|
|
|
|
private void flushEventQueue() throws InterruptedException, InvocationTargetException {
|
|
EventQueue.invokeAndWait(() -> {});
|
|
}
|
|
|
|
private void testAdd(Component child, Container parent, int count)
|
|
throws InterruptedException, InvocationTargetException {
|
|
assertParent = true;
|
|
parentChanged = count;
|
|
parent.add(child);
|
|
flushEventQueue();
|
|
if (parentChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(PARENT_CHANGED) invoked "+
|
|
parentChanged+" too few times");
|
|
}
|
|
assertParent = false;
|
|
}
|
|
|
|
private void testRemove(Component child, Container parent, int count)
|
|
throws InterruptedException, InvocationTargetException {
|
|
assertParent = true;
|
|
parentChanged = count;
|
|
parent.remove(child);
|
|
flushEventQueue();
|
|
if (parentChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(PARENT_CHANGED) invoked "+
|
|
parentChanged+" too few times");
|
|
}
|
|
assertParent = false;
|
|
}
|
|
|
|
private void testSetLocation(Component changed, int x, int y, int count)
|
|
throws InterruptedException, InvocationTargetException {
|
|
assertMoved = true;
|
|
ancestorMoved = count;
|
|
changed.setLocation(x, y);
|
|
flushEventQueue();
|
|
if (ancestorMoved != 0) {
|
|
throw new RuntimeException("ancestorMoved invoked "+ancestorMoved+
|
|
" too few times");
|
|
}
|
|
assertMoved = false;
|
|
}
|
|
|
|
private void testSetSize(Component changed, int w, int h, int count)
|
|
throws InterruptedException, InvocationTargetException {
|
|
assertResized = true;
|
|
ancestorResized = count;
|
|
changed.setSize(w, h);
|
|
flushEventQueue();
|
|
if (ancestorResized != 0) {
|
|
throw new RuntimeException("ancestorResized invoked "+ancestorResized+
|
|
" too few times");
|
|
}
|
|
assertResized = false;
|
|
}
|
|
|
|
private void testPack(Window topLevel, int displayabilityCount)
|
|
throws InterruptedException, InvocationTargetException {
|
|
assertDisplayability = true;
|
|
assertShowing = true;
|
|
displayabilityChanged = displayabilityCount;
|
|
showingChanged = 0;
|
|
topLevel.pack();
|
|
flushEventQueue();
|
|
if (displayabilityChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(DISPLAYABILITY_CHANGED) "+
|
|
"invoked "+displayabilityChanged+
|
|
" too few times");
|
|
}
|
|
if (showingChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(SHOWING_CHANGED) "+
|
|
"invoked, but should not have been");
|
|
}
|
|
assertDisplayability = false;
|
|
assertShowing = false;
|
|
}
|
|
|
|
private void testShow(Window topLevel, int displayabilityCount,
|
|
int showingCount)
|
|
throws InterruptedException, InvocationTargetException {
|
|
assertDisplayability = true;
|
|
assertShowing = true;
|
|
displayabilityChanged = displayabilityCount;
|
|
showingChanged = showingCount;
|
|
topLevel.show();
|
|
flushEventQueue();
|
|
if (displayabilityChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(DISPLAYABILITY_CHANGED) "+
|
|
"invoked "+displayabilityChanged+
|
|
" too few times");
|
|
}
|
|
if (showingChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(SHOWING_CHANGED) "+
|
|
"invoked "+showingChanged+" too few times");
|
|
}
|
|
assertDisplayability = false;
|
|
assertShowing = false;
|
|
}
|
|
|
|
private void testHide(Window topLevel, int showingCount)
|
|
throws InterruptedException, InvocationTargetException {
|
|
assertDisplayability = true;
|
|
assertShowing = true;
|
|
displayabilityChanged = 0;
|
|
showingChanged = showingCount;
|
|
topLevel.hide();
|
|
flushEventQueue();
|
|
if (displayabilityChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(DISPLAYABILITY_CHANGED) "+
|
|
"invoked, but should not have been");
|
|
}
|
|
if (showingChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(SHOWING_CHANGED) "+
|
|
"invoked "+showingChanged+" too few times");
|
|
}
|
|
assertDisplayability = false;
|
|
assertShowing = false;
|
|
}
|
|
|
|
private void testDispose(Window topLevel, int displayabilityCount,
|
|
int showingCount)
|
|
throws InterruptedException, InvocationTargetException {
|
|
assertDisplayability = true;
|
|
assertShowing = true;
|
|
displayabilityChanged = displayabilityCount;
|
|
showingChanged = showingCount;
|
|
topLevel.dispose();
|
|
flushEventQueue();
|
|
if (displayabilityChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(DISPLAYABILITY_CHANGED) "+
|
|
"invoked "+displayabilityChanged+
|
|
" too few times");
|
|
}
|
|
if (showingChanged != 0) {
|
|
throw new RuntimeException("hierarchyChanged(SHOWING_CHANGED) "+
|
|
"invoked "+showingChanged+" too few times");
|
|
}
|
|
assertDisplayability = false;
|
|
assertShowing = false;
|
|
}
|
|
|
|
private void assertObjectsImpl(HierarchyEvent e) {
|
|
int match = -1;
|
|
|
|
for (int i = 0; i < OBJ_ARRAY_SIZE; i++) {
|
|
if (e.getComponent() == source[i]) {
|
|
match = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (match == -1) {
|
|
String str = "\n\nsource incorrect, was "+e.getComponent()+"\n\n";
|
|
for (int i = 0; i < OBJ_ARRAY_SIZE; i++) {
|
|
str += "available source: "+source[i]+"\n\n";
|
|
}
|
|
str += "event: "+e+"\n";
|
|
throw new RuntimeException(str);
|
|
}
|
|
|
|
if (e.getChanged() != changed[match]) {
|
|
if (e.getID() == HierarchyEvent.HIERARCHY_CHANGED &&
|
|
(e.getChangeFlags() & HierarchyEvent.DISPLAYABILITY_CHANGED) != 0) {
|
|
System.err.println("warning (known bug): changed for "+
|
|
"DISPLAYABILITY_CHANGED event incorrect");
|
|
} else {
|
|
throw new RuntimeException("\n\nchanged incorrect, was "+
|
|
e.getChanged()+
|
|
", should be "+changed[match]+"\n\n"+
|
|
"event: "+e+"\n");
|
|
}
|
|
}
|
|
|
|
if (e.getChangedParent() != changedParent[match]) {
|
|
if (e.getID() == HierarchyEvent.HIERARCHY_CHANGED &&
|
|
(e.getChangeFlags() & HierarchyEvent.DISPLAYABILITY_CHANGED) != 0) {
|
|
System.err.println("warning (known bug): changedParent for "+
|
|
"DISPLAYABILITY_CHANGED event incorrect");
|
|
} else {
|
|
throw new RuntimeException("changedParent incorrect, was "+
|
|
e.getChangedParent()+
|
|
", should be "+changedParent[match]+"\n\n"+
|
|
"event: "+e+"\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
private void setObjects(int index, Component source, Component changed,
|
|
Container changedParent) {
|
|
this.source[index] = source;
|
|
this.changed[index] = changed;
|
|
this.changedParent[index] = changedParent;
|
|
}
|
|
|
|
private void resetObjects() {
|
|
for (int i = 0; i < OBJ_ARRAY_SIZE; i++) {
|
|
setObjects(i, null, null, null);
|
|
}
|
|
}
|
|
|
|
public void hierarchyChanged(HierarchyEvent e) {
|
|
if (assertParent &&
|
|
(e.getChangeFlags() & HierarchyEvent.PARENT_CHANGED) != 0) {
|
|
assertObjectsImpl(e);
|
|
parentChanged--;
|
|
}
|
|
if (assertDisplayability &&
|
|
(e.getChangeFlags() & HierarchyEvent.DISPLAYABILITY_CHANGED) != 0){
|
|
assertObjectsImpl(e);
|
|
displayabilityChanged--;
|
|
}
|
|
if (assertShowing &&
|
|
(e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) {
|
|
assertObjectsImpl(e);
|
|
showingChanged--;
|
|
}
|
|
}
|
|
|
|
public void ancestorMoved(HierarchyEvent e) {
|
|
if (!assertMoved)
|
|
return;
|
|
|
|
assertObjectsImpl(e);
|
|
ancestorMoved--;
|
|
}
|
|
|
|
public void ancestorResized(HierarchyEvent e) {
|
|
if (!assertResized)
|
|
return;
|
|
|
|
assertObjectsImpl(e);
|
|
ancestorResized--;
|
|
}
|
|
|
|
public static void init() {
|
|
f = new SpecTest();
|
|
f.setTitle("SpecTest");
|
|
f.setLayout(new BorderLayout());
|
|
}
|
|
|
|
private void test1(Component source, Component changed,
|
|
Container changedParent, Window topLevel,
|
|
int hierarchyCount, int hierarchyBoundsCount)
|
|
throws InterruptedException, InvocationTargetException {
|
|
changed.setBounds(0, 0, 100, 100);
|
|
topLevel.dispose();
|
|
resetObjects();
|
|
|
|
setObjects(0, source, changed, changedParent);
|
|
|
|
testRemove(changed, changedParent, hierarchyCount);
|
|
testAdd(changed, changedParent, hierarchyCount);
|
|
testSetLocation(changed, 200, 250, hierarchyBoundsCount);
|
|
testSetSize(changed, 50, 50, hierarchyBoundsCount);
|
|
|
|
setObjects(0, source, topLevel, null);
|
|
|
|
testPack(topLevel, hierarchyCount);
|
|
testDispose(topLevel, hierarchyCount, 0);
|
|
testPack(topLevel, hierarchyCount);
|
|
testShow(topLevel, 0, hierarchyCount);
|
|
testDispose(topLevel, hierarchyCount, hierarchyCount);
|
|
testShow(topLevel, hierarchyCount, hierarchyCount);
|
|
testHide(topLevel, hierarchyCount);
|
|
testDispose(topLevel, hierarchyCount, 0);
|
|
|
|
resetObjects();
|
|
}
|
|
|
|
private void test2(Component source1, Container parent1,
|
|
Component source2, Container parent2,
|
|
Window topLevel)
|
|
throws InterruptedException, InvocationTargetException {
|
|
topLevel.setBounds(0, 0, 100, 100);
|
|
topLevel.dispose();
|
|
resetObjects();
|
|
|
|
setObjects(0, source1, source1, parent1);
|
|
testRemove(source1, parent1, 1);
|
|
testAdd(source1, parent1, 1);
|
|
|
|
setObjects(0, source2, source2, parent2);
|
|
testRemove(source2, parent2, 1);
|
|
testAdd(source2, parent2, 1);
|
|
|
|
setObjects(0, source1, topLevel, null);
|
|
setObjects(1, source2, topLevel, null);
|
|
|
|
testSetLocation(topLevel, 200, 250, 2);
|
|
testSetSize(topLevel, 50, 50, 2);
|
|
|
|
testPack(topLevel, 2);
|
|
testDispose(topLevel, 2, 0);
|
|
testPack(topLevel, 2);
|
|
testShow(topLevel, 0, 2);
|
|
testDispose(topLevel, 2, 2);
|
|
testShow(topLevel, 2, 2);
|
|
testHide(topLevel, 2);
|
|
testDispose(topLevel, 2, 0);
|
|
|
|
resetObjects();
|
|
}
|
|
|
|
public void start() throws InterruptedException, InvocationTargetException {
|
|
/*
|
|
f
|
|
|
|
|
-----------------------------------------
|
|
| | | | | |
|
|
l1 l2 p1 p2 p5 p6
|
|
| | | |
|
|
----- ----- | |
|
|
| | | | | |
|
|
l3 l4 l5 l6 p3 p4
|
|
| |
|
|
----- -----
|
|
| | | |
|
|
l7 l8 l9 l10
|
|
*/
|
|
|
|
// listener-only tests
|
|
|
|
{
|
|
Label l1 = new Label("Label 1");
|
|
JLabel l2 = new JLabel("Label 2");
|
|
Panel p1 = new Panel();
|
|
JPanel p2 = new JPanel();
|
|
Panel p5 = new Panel();
|
|
JPanel p6 = new JPanel();
|
|
|
|
Label l3 = new Label("Label 3");
|
|
JLabel l4 = new JLabel("Label 4");
|
|
Label l5 = new Label("Label 5");
|
|
JLabel l6 = new JLabel("Label 6");
|
|
JPanel p3 = new JPanel();
|
|
Panel p4 = new Panel();
|
|
|
|
Label l7 = new Label("Label 7");
|
|
JLabel l8 = new JLabel("Label 8");
|
|
JLabel l9 = new JLabel("Label 9");
|
|
Label l10 = new Label("Label 10");
|
|
|
|
f.add(l1);
|
|
f.add(l2);
|
|
f.add(p1);
|
|
f.add(p2);
|
|
f.add(p5);
|
|
f.add(p6);
|
|
|
|
p1.add(l3);
|
|
p1.add(l4);
|
|
|
|
p2.add(l5);
|
|
p2.add(l6);
|
|
|
|
p5.add(p3);
|
|
|
|
p6.add(p4);
|
|
|
|
p3.add(l7);
|
|
p3.add(l8);
|
|
|
|
p4.add(l9);
|
|
p4.add(l10);
|
|
|
|
|
|
|
|
// test1
|
|
|
|
l1.addHierarchyListener(this);
|
|
l1.addHierarchyBoundsListener(this);
|
|
test1(l1, l1, f, f, 1, 0);
|
|
l1.addHierarchyListener(this);
|
|
l1.addHierarchyBoundsListener(this);
|
|
test1(l1, l1, f, f, 2, 0);
|
|
l1.removeHierarchyListener(this);
|
|
l1.removeHierarchyBoundsListener(this);
|
|
l1.removeHierarchyListener(this);
|
|
l1.removeHierarchyBoundsListener(this);
|
|
|
|
l2.addHierarchyListener(this);
|
|
l2.addHierarchyBoundsListener(this);
|
|
test1(l2, l2, f, f, 1, 0);
|
|
l2.addHierarchyListener(this);
|
|
l2.addHierarchyBoundsListener(this);
|
|
test1(l2, l2, f, f, 2, 0);
|
|
l2.removeHierarchyListener(this);
|
|
l2.removeHierarchyBoundsListener(this);
|
|
l2.removeHierarchyListener(this);
|
|
l2.removeHierarchyBoundsListener(this);
|
|
|
|
p1.addHierarchyListener(this);
|
|
p1.addHierarchyBoundsListener(this);
|
|
test1(p1, p1, f, f, 1, 0);
|
|
p1.addHierarchyListener(this);
|
|
p1.addHierarchyBoundsListener(this);
|
|
test1(p1, p1, f, f, 2, 0);
|
|
p1.removeHierarchyListener(this);
|
|
p1.removeHierarchyBoundsListener(this);
|
|
p1.removeHierarchyListener(this);
|
|
p1.removeHierarchyBoundsListener(this);
|
|
|
|
p2.addHierarchyListener(this);
|
|
p2.addHierarchyBoundsListener(this);
|
|
test1(p2, p2, f, f, 1, 0);
|
|
p2.addHierarchyListener(this);
|
|
p2.addHierarchyBoundsListener(this);
|
|
test1(p2, p2, f, f, 2, 0);
|
|
p2.removeHierarchyListener(this);
|
|
p2.removeHierarchyBoundsListener(this);
|
|
p2.removeHierarchyListener(this);
|
|
p2.removeHierarchyBoundsListener(this);
|
|
|
|
p5.addHierarchyListener(this);
|
|
p5.addHierarchyBoundsListener(this);
|
|
test1(p5, p5, f, f, 1, 0);
|
|
p5.addHierarchyListener(this);
|
|
p5.addHierarchyBoundsListener(this);
|
|
test1(p5, p5, f, f, 2, 0);
|
|
p5.removeHierarchyListener(this);
|
|
p5.removeHierarchyBoundsListener(this);
|
|
p5.removeHierarchyListener(this);
|
|
p5.removeHierarchyBoundsListener(this);
|
|
|
|
p6.addHierarchyListener(this);
|
|
p6.addHierarchyBoundsListener(this);
|
|
test1(p6, p6, f, f, 1, 0);
|
|
p6.addHierarchyListener(this);
|
|
p6.addHierarchyBoundsListener(this);
|
|
test1(p6, p6, f, f, 2, 0);
|
|
p6.removeHierarchyListener(this);
|
|
p6.removeHierarchyBoundsListener(this);
|
|
p6.removeHierarchyListener(this);
|
|
p6.removeHierarchyBoundsListener(this);
|
|
|
|
l3.addHierarchyListener(this);
|
|
l3.addHierarchyBoundsListener(this);
|
|
test1(l3, l3, p1, f, 1, 0);
|
|
test1(l3, p1, f, f, 1, 1);
|
|
l3.addHierarchyListener(this);
|
|
l3.addHierarchyBoundsListener(this);
|
|
test1(l3, l3, p1, f, 2, 0);
|
|
test1(l3, p1, f, f, 2, 2);
|
|
l3.removeHierarchyListener(this);
|
|
l3.removeHierarchyBoundsListener(this);
|
|
l3.removeHierarchyListener(this);
|
|
l3.removeHierarchyBoundsListener(this);
|
|
|
|
l4.addHierarchyListener(this);
|
|
l4.addHierarchyBoundsListener(this);
|
|
test1(l4, l4, p1, f, 1, 0);
|
|
test1(l4, p1, f, f, 1, 1);
|
|
l4.addHierarchyListener(this);
|
|
l4.addHierarchyBoundsListener(this);
|
|
test1(l4, l4, p1, f, 2, 0);
|
|
test1(l4, p1, f, f, 2, 2);
|
|
l4.removeHierarchyListener(this);
|
|
l4.removeHierarchyBoundsListener(this);
|
|
l4.removeHierarchyListener(this);
|
|
l4.removeHierarchyBoundsListener(this);
|
|
|
|
l5.addHierarchyListener(this);
|
|
l5.addHierarchyBoundsListener(this);
|
|
test1(l5, l5, p2, f, 1, 0);
|
|
test1(l5, p2, f, f, 1, 1);
|
|
l5.addHierarchyListener(this);
|
|
l5.addHierarchyBoundsListener(this);
|
|
test1(l5, l5, p2, f, 2, 0);
|
|
test1(l5, p2, f, f, 2, 2);
|
|
l5.removeHierarchyListener(this);
|
|
l5.removeHierarchyBoundsListener(this);
|
|
l5.removeHierarchyListener(this);
|
|
l5.removeHierarchyBoundsListener(this);
|
|
|
|
l6.addHierarchyListener(this);
|
|
l6.addHierarchyBoundsListener(this);
|
|
test1(l6, l6, p2, f, 1, 0);
|
|
test1(l6, p2, f, f, 1, 1);
|
|
l6.addHierarchyListener(this);
|
|
l6.addHierarchyBoundsListener(this);
|
|
test1(l6, l6, p2, f, 2, 0);
|
|
test1(l6, p2, f, f, 2, 2);
|
|
l6.removeHierarchyListener(this);
|
|
l6.removeHierarchyBoundsListener(this);
|
|
l6.removeHierarchyListener(this);
|
|
l6.removeHierarchyBoundsListener(this);
|
|
|
|
p3.addHierarchyListener(this);
|
|
p3.addHierarchyBoundsListener(this);
|
|
test1(p3, p3, p5, f, 1, 0);
|
|
test1(p3, p5, f, f, 1, 1);
|
|
p3.addHierarchyListener(this);
|
|
p3.addHierarchyBoundsListener(this);
|
|
test1(p3, p3, p5, f, 2, 0);
|
|
test1(p3, p5, f, f, 2, 2);
|
|
p3.removeHierarchyListener(this);
|
|
p3.removeHierarchyBoundsListener(this);
|
|
p3.removeHierarchyListener(this);
|
|
p3.removeHierarchyBoundsListener(this);
|
|
|
|
p4.addHierarchyListener(this);
|
|
p4.addHierarchyBoundsListener(this);
|
|
test1(p4, p4, p6, f, 1, 0);
|
|
test1(p4, p6, f, f, 1, 1);
|
|
p4.addHierarchyListener(this);
|
|
p4.addHierarchyBoundsListener(this);
|
|
test1(p4, p4, p6, f, 2, 0);
|
|
test1(p4, p6, f, f, 2, 2);
|
|
p4.removeHierarchyListener(this);
|
|
p4.removeHierarchyBoundsListener(this);
|
|
p4.removeHierarchyListener(this);
|
|
p4.removeHierarchyBoundsListener(this);
|
|
|
|
l7.addHierarchyListener(this);
|
|
l7.addHierarchyBoundsListener(this);
|
|
test1(l7, l7, p3, f, 1, 0);
|
|
test1(l7, p3, p5, f, 1, 1);
|
|
test1(l7, p5, f, f, 1, 1);
|
|
l7.addHierarchyListener(this);
|
|
l7.addHierarchyBoundsListener(this);
|
|
test1(l7, l7, p3, f, 2, 0);
|
|
test1(l7, p3, p5, f, 2, 2);
|
|
test1(l7, p5, f, f, 2, 2);
|
|
l7.removeHierarchyListener(this);
|
|
l7.removeHierarchyBoundsListener(this);
|
|
l7.removeHierarchyListener(this);
|
|
l7.removeHierarchyBoundsListener(this);
|
|
|
|
l8.addHierarchyListener(this);
|
|
l8.addHierarchyBoundsListener(this);
|
|
test1(l8, l8, p3, f, 1, 0);
|
|
test1(l8, p3, p5, f, 1, 1);
|
|
test1(l8, p5, f, f, 1, 1);
|
|
l8.addHierarchyListener(this);
|
|
l8.addHierarchyBoundsListener(this);
|
|
test1(l8, l8, p3, f, 2, 0);
|
|
test1(l8, p3, p5, f, 2, 2);
|
|
test1(l8, p5, f, f, 2, 2);
|
|
l8.removeHierarchyListener(this);
|
|
l8.removeHierarchyBoundsListener(this);
|
|
l8.removeHierarchyListener(this);
|
|
l8.removeHierarchyBoundsListener(this);
|
|
|
|
l9.addHierarchyListener(this);
|
|
l9.addHierarchyBoundsListener(this);
|
|
test1(l9, l9, p4, f, 1, 0);
|
|
test1(l9, p4, p6, f, 1, 1);
|
|
test1(l9, p6, f, f, 1, 1);
|
|
l9.addHierarchyListener(this);
|
|
l9.addHierarchyBoundsListener(this);
|
|
test1(l9, l9, p4, f, 2, 0);
|
|
test1(l9, p4, p6, f, 2, 2);
|
|
test1(l9, p6, f, f, 2, 2);
|
|
l9.removeHierarchyListener(this);
|
|
l9.removeHierarchyBoundsListener(this);
|
|
l9.removeHierarchyListener(this);
|
|
l9.removeHierarchyBoundsListener(this);
|
|
|
|
l10.addHierarchyListener(this);
|
|
l10.addHierarchyBoundsListener(this);
|
|
test1(l10, l10, p4, f, 1, 0);
|
|
test1(l10, p4, p6, f, 1, 1);
|
|
test1(l10, p6, f, f, 1, 1);
|
|
l10.addHierarchyListener(this);
|
|
l10.addHierarchyBoundsListener(this);
|
|
test1(l10, l10, p4, f, 2, 0);
|
|
test1(l10, p4, p6, f, 2, 2);
|
|
test1(l10, p6, f, f, 2, 2);
|
|
l10.removeHierarchyListener(this);
|
|
l10.removeHierarchyBoundsListener(this);
|
|
l10.removeHierarchyListener(this);
|
|
l10.removeHierarchyBoundsListener(this);
|
|
|
|
|
|
|
|
// test2
|
|
|
|
l1.addHierarchyListener(this);
|
|
l10.addHierarchyListener(this);
|
|
l1.addHierarchyBoundsListener(this);
|
|
l10.addHierarchyBoundsListener(this);
|
|
test2(l1, f, l10, p4, f);
|
|
l1.removeHierarchyListener(this);
|
|
l10.removeHierarchyListener(this);
|
|
l1.removeHierarchyBoundsListener(this);
|
|
l10.removeHierarchyBoundsListener(this);
|
|
|
|
l2.addHierarchyListener(this);
|
|
l9.addHierarchyListener(this);
|
|
l2.addHierarchyBoundsListener(this);
|
|
l9.addHierarchyBoundsListener(this);
|
|
test2(l2, f, l9, p4, f);
|
|
l2.removeHierarchyListener(this);
|
|
l9.removeHierarchyListener(this);
|
|
l2.removeHierarchyBoundsListener(this);
|
|
l9.removeHierarchyBoundsListener(this);
|
|
|
|
l3.addHierarchyListener(this);
|
|
l8.addHierarchyListener(this);
|
|
l3.addHierarchyBoundsListener(this);
|
|
l8.addHierarchyBoundsListener(this);
|
|
test2(l3, p1, l8, p3, f);
|
|
l3.removeHierarchyListener(this);
|
|
l8.removeHierarchyListener(this);
|
|
l3.removeHierarchyBoundsListener(this);
|
|
l8.removeHierarchyBoundsListener(this);
|
|
|
|
l4.addHierarchyListener(this);
|
|
l7.addHierarchyListener(this);
|
|
l4.addHierarchyBoundsListener(this);
|
|
l7.addHierarchyBoundsListener(this);
|
|
test2(l4, p1, l7, p3, f);
|
|
l4.removeHierarchyListener(this);
|
|
l7.removeHierarchyListener(this);
|
|
l4.removeHierarchyBoundsListener(this);
|
|
l7.removeHierarchyBoundsListener(this);
|
|
|
|
l5.addHierarchyListener(this);
|
|
l6.addHierarchyListener(this);
|
|
l5.addHierarchyBoundsListener(this);
|
|
l6.addHierarchyBoundsListener(this);
|
|
test2(l5, p2, l6, p2, f);
|
|
l5.removeHierarchyListener(this);
|
|
l6.removeHierarchyListener(this);
|
|
l5.removeHierarchyBoundsListener(this);
|
|
l6.removeHierarchyBoundsListener(this);
|
|
|
|
p1.addHierarchyListener(this);
|
|
p4.addHierarchyListener(this);
|
|
p1.addHierarchyBoundsListener(this);
|
|
p4.addHierarchyBoundsListener(this);
|
|
test2(p1, f, p4, p6, f);
|
|
p1.removeHierarchyListener(this);
|
|
p4.removeHierarchyListener(this);
|
|
p1.removeHierarchyBoundsListener(this);
|
|
p4.removeHierarchyBoundsListener(this);
|
|
|
|
p2.addHierarchyListener(this);
|
|
p3.addHierarchyListener(this);
|
|
p2.addHierarchyBoundsListener(this);
|
|
p3.addHierarchyBoundsListener(this);
|
|
test2(p2, f, p3, p5, f);
|
|
p2.removeHierarchyListener(this);
|
|
p3.removeHierarchyListener(this);
|
|
p2.removeHierarchyBoundsListener(this);
|
|
p3.removeHierarchyBoundsListener(this);
|
|
|
|
p5.addHierarchyListener(this);
|
|
p6.addHierarchyListener(this);
|
|
p5.addHierarchyBoundsListener(this);
|
|
p6.addHierarchyBoundsListener(this);
|
|
test2(p5, f, p6, f, f);
|
|
p5.removeHierarchyListener(this);
|
|
p6.removeHierarchyListener(this);
|
|
p5.removeHierarchyBoundsListener(this);
|
|
p6.removeHierarchyBoundsListener(this);
|
|
}
|
|
|
|
EventQueue.invokeAndWait(() -> {
|
|
if (f != null) {
|
|
f.dispose();
|
|
f.removeAll();
|
|
}
|
|
});
|
|
|
|
// mixed listener/eventEnabled and eventEnabled-only tests
|
|
|
|
{
|
|
EELabel l1 = new EELabel("Label 1");
|
|
EEJLabel l2 = new EEJLabel("Label 2");
|
|
EEPanel p1 = new EEPanel();
|
|
EEJPanel p2 = new EEJPanel();
|
|
EEPanel p5 = new EEPanel();
|
|
EEJPanel p6 = new EEJPanel();
|
|
|
|
EELabel l3 = new EELabel("Label 3");
|
|
EEJLabel l4 = new EEJLabel("Label 4");
|
|
EELabel l5 = new EELabel("Label 5");
|
|
EEJLabel l6 = new EEJLabel("Label 6");
|
|
EEJPanel p3 = new EEJPanel();
|
|
EEPanel p4 = new EEPanel();
|
|
|
|
EELabel l7 = new EELabel("Label 7");
|
|
EEJLabel l8 = new EEJLabel("Label 8");
|
|
EEJLabel l9 = new EEJLabel("Label 9");
|
|
EELabel l10 = new EELabel("Label 10");
|
|
|
|
f.add(l1);
|
|
f.add(l2);
|
|
f.add(p1);
|
|
f.add(p2);
|
|
f.add(p5);
|
|
f.add(p6);
|
|
|
|
p1.add(l3);
|
|
p1.add(l4);
|
|
|
|
p2.add(l5);
|
|
p2.add(l6);
|
|
|
|
p5.add(p3);
|
|
|
|
p6.add(p4);
|
|
|
|
p3.add(l7);
|
|
p3.add(l8);
|
|
|
|
p4.add(l9);
|
|
p4.add(l10);
|
|
|
|
|
|
|
|
// test3
|
|
|
|
l1.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l1.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l1, l1, f, f, 1, 0);
|
|
l1.addHierarchyListener(this);
|
|
l1.addHierarchyBoundsListener(this);
|
|
test1(l1, l1, f, f, 2, 0);
|
|
l1.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l1.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l1.removeHierarchyListener(this);
|
|
l1.removeHierarchyBoundsListener(this);
|
|
|
|
l2.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l2.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l2, l2, f, f, 1, 0);
|
|
l2.addHierarchyListener(this);
|
|
l2.addHierarchyBoundsListener(this);
|
|
test1(l2, l2, f, f, 2, 0);
|
|
l2.removeHierarchyListener(this);
|
|
l2.removeHierarchyBoundsListener(this);
|
|
l2.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l2.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
p1.addHierarchyListener(this);
|
|
p1.addHierarchyBoundsListener(this);
|
|
test1(p1, p1, f, f, 1, 0);
|
|
p1.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p1.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(p1, p1, f, f, 2, 0);
|
|
p1.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p1.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
p1.removeHierarchyListener(this);
|
|
p1.removeHierarchyBoundsListener(this);
|
|
|
|
p2.addHierarchyListener(this);
|
|
p2.addHierarchyBoundsListener(this);
|
|
test1(p2, p2, f, f, 1, 0);
|
|
p2.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p2.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(p2, p2, f, f, 2, 0);
|
|
p2.removeHierarchyListener(this);
|
|
p2.removeHierarchyBoundsListener(this);
|
|
p2.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p2.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
p5.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p5.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(p5, p5, f, f, 1, 0);
|
|
p5.addHierarchyListener(this);
|
|
p5.addHierarchyBoundsListener(this);
|
|
test1(p5, p5, f, f, 2, 0);
|
|
p5.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p5.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
p5.removeHierarchyListener(this);
|
|
p5.removeHierarchyBoundsListener(this);
|
|
|
|
p6.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p6.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(p6, p6, f, f, 1, 0);
|
|
p6.addHierarchyListener(this);
|
|
p6.addHierarchyBoundsListener(this);
|
|
test1(p6, p6, f, f, 2, 0);
|
|
p6.removeHierarchyListener(this);
|
|
p6.removeHierarchyBoundsListener(this);
|
|
p6.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p6.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
l3.addHierarchyListener(this);
|
|
l3.addHierarchyBoundsListener(this);
|
|
test1(l3, l3, p1, f, 1, 0);
|
|
test1(l3, p1, f, f, 1, 1);
|
|
l3.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l3.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l3, l3, p1, f, 2, 0);
|
|
test1(l3, p1, f, f, 2, 2);
|
|
l3.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l3.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l3.removeHierarchyListener(this);
|
|
l3.removeHierarchyBoundsListener(this);
|
|
|
|
l4.addHierarchyListener(this);
|
|
l4.addHierarchyBoundsListener(this);
|
|
test1(l4, l4, p1, f, 1, 0);
|
|
test1(l4, p1, f, f, 1, 1);
|
|
l4.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l4.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l4, l4, p1, f, 2, 0);
|
|
test1(l4, p1, f, f, 2, 2);
|
|
l4.removeHierarchyListener(this);
|
|
l4.removeHierarchyBoundsListener(this);
|
|
l4.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l4.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
l5.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l5.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l5, l5, p2, f, 1, 0);
|
|
test1(l5, p2, f, f, 1, 1);
|
|
l5.addHierarchyListener(this);
|
|
l5.addHierarchyBoundsListener(this);
|
|
test1(l5, l5, p2, f, 2, 0);
|
|
test1(l5, p2, f, f, 2, 2);
|
|
l5.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l5.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l5.removeHierarchyListener(this);
|
|
l5.removeHierarchyBoundsListener(this);
|
|
|
|
l6.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l6.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l6, l6, p2, f, 1, 0);
|
|
test1(l6, p2, f, f, 1, 1);
|
|
l6.addHierarchyListener(this);
|
|
l6.addHierarchyBoundsListener(this);
|
|
test1(l6, l6, p2, f, 2, 0);
|
|
test1(l6, p2, f, f, 2, 2);
|
|
l6.removeHierarchyListener(this);
|
|
l6.removeHierarchyBoundsListener(this);
|
|
l6.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l6.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
p3.addHierarchyListener(this);
|
|
p3.addHierarchyBoundsListener(this);
|
|
test1(p3, p3, p5, f, 1, 0);
|
|
test1(p3, p5, f, f, 1, 1);
|
|
p3.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p3.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(p3, p3, p5, f, 2, 0);
|
|
test1(p3, p5, f, f, 2, 2);
|
|
p3.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p3.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
p3.removeHierarchyListener(this);
|
|
p3.removeHierarchyBoundsListener(this);
|
|
|
|
p4.addHierarchyListener(this);
|
|
p4.addHierarchyBoundsListener(this);
|
|
test1(p4, p4, p6, f, 1, 0);
|
|
test1(p4, p6, f, f, 1, 1);
|
|
p4.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p4.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(p4, p4, p6, f, 2, 0);
|
|
test1(p4, p6, f, f, 2, 2);
|
|
p4.removeHierarchyListener(this);
|
|
p4.removeHierarchyBoundsListener(this);
|
|
p4.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p4.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
l7.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l7.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l7, l7, p3, f, 1, 0);
|
|
test1(l7, p3, p5, f, 1, 1);
|
|
test1(l7, p5, f, f, 1, 1);
|
|
l7.addHierarchyListener(this);
|
|
l7.addHierarchyBoundsListener(this);
|
|
test1(l7, l7, p3, f, 2, 0);
|
|
test1(l7, p3, p5, f, 2, 2);
|
|
test1(l7, p5, f, f, 2, 2);
|
|
l7.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l7.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l7.removeHierarchyListener(this);
|
|
l7.removeHierarchyBoundsListener(this);
|
|
|
|
l8.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l8.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l8, l8, p3, f, 1, 0);
|
|
test1(l8, p3, p5, f, 1, 1);
|
|
test1(l8, p5, f, f, 1, 1);
|
|
l8.addHierarchyListener(this);
|
|
l8.addHierarchyBoundsListener(this);
|
|
test1(l8, l8, p3, f, 2, 0);
|
|
test1(l8, p3, p5, f, 2, 2);
|
|
test1(l8, p5, f, f, 2, 2);
|
|
l8.removeHierarchyListener(this);
|
|
l8.removeHierarchyBoundsListener(this);
|
|
l8.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l8.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
l9.addHierarchyListener(this);
|
|
l9.addHierarchyBoundsListener(this);
|
|
test1(l9, l9, p4, f, 1, 0);
|
|
test1(l9, p4, p6, f, 1, 1);
|
|
test1(l9, p6, f, f, 1, 1);
|
|
l9.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l9.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l9, l9, p4, f, 2, 0);
|
|
test1(l9, p4, p6, f, 2, 2);
|
|
test1(l9, p6, f, f, 2, 2);
|
|
l9.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l9.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l9.removeHierarchyListener(this);
|
|
l9.removeHierarchyBoundsListener(this);
|
|
|
|
l10.addHierarchyListener(this);
|
|
l10.addHierarchyBoundsListener(this);
|
|
test1(l10, l10, p4, f, 1, 0);
|
|
test1(l10, p4, p6, f, 1, 1);
|
|
test1(l10, p6, f, f, 1, 1);
|
|
l10.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l10.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test1(l10, l10, p4, f, 2, 0);
|
|
test1(l10, p4, p6, f, 2, 2);
|
|
test1(l10, p6, f, f, 2, 2);
|
|
l10.removeHierarchyListener(this);
|
|
l10.removeHierarchyBoundsListener(this);
|
|
l10.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l10.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
|
|
|
|
// test4
|
|
|
|
l1.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l10.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l1.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l10.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test2(l1, f, l10, p4, f);
|
|
l1.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l10.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l1.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l10.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
l2.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l9.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l2.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l9.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test2(l2, f, l9, p4, f);
|
|
l2.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l9.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l2.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l9.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
l3.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l8.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l3.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l8.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test2(l3, p1, l8, p3, f);
|
|
l3.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l8.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l3.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l8.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
l4.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l7.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l4.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l7.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test2(l4, p1, l7, p3, f);
|
|
l4.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l7.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l4.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l7.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
l5.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l6.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l5.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l6.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test2(l5, p2, l6, p2, f);
|
|
l5.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l6.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
l5.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
l6.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
p1.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p4.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p1.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
p4.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test2(p1, f, p4, p6, f);
|
|
p1.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p4.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p1.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
p4.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
p2.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p3.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p2.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
p3.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test2(p2, f, p3, p5, f);
|
|
p2.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p3.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p2.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
p3.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
|
|
p5.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p6.pubEnableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p5.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
p6.pubEnableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
test2(p5, f, p6, f, f);
|
|
p5.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p6.pubDisableEvents(AWTEvent.HIERARCHY_EVENT_MASK);
|
|
p5.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
p6.pubDisableEvents(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
|
|
}
|
|
|
|
System.out.println("passed");
|
|
}
|
|
}
|