Skip to content

Commit cd7383a

Browse files
author
Michael Strauß
committed
8318204: Use new EventTarget methods in ListenerHelper
Reviewed-by: jhendrikx, nlisker, angorya
1 parent 1616924 commit cd7383a

2 files changed

Lines changed: 9 additions & 86 deletions

File tree

modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/ListenerHelper.java

Lines changed: 8 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -41,18 +41,11 @@
4141
import javafx.collections.ObservableMap;
4242
import javafx.collections.ObservableSet;
4343
import javafx.collections.SetChangeListener;
44-
import javafx.concurrent.Task;
4544
import javafx.event.Event;
4645
import javafx.event.EventHandler;
46+
import javafx.event.EventTarget;
4747
import javafx.event.EventType;
48-
import javafx.scene.Node;
49-
import javafx.scene.Scene;
50-
import javafx.scene.control.MenuItem;
5148
import javafx.scene.control.SkinBase;
52-
import javafx.scene.control.TableColumnBase;
53-
import javafx.scene.control.TreeItem;
54-
import javafx.scene.transform.Transform;
55-
import javafx.stage.Window;
5649

5750
/**
5851
* This class provides convenience methods for adding various listeners, both
@@ -393,92 +386,34 @@ public void onChanged(Change<? extends T> ch) {
393386

394387
// event handlers
395388

396-
public <T extends Event> IDisconnectable addEventHandler(Object x, EventType<T> t, EventHandler<T> handler) {
389+
public <T extends Event> IDisconnectable addEventHandler(EventTarget x, EventType<T> t, EventHandler<T> handler) {
397390
EvHa<T> h = new EvHa<>(handler) {
398391
@Override
399392
public void disconnect() {
400-
if (x instanceof Node n) {
401-
n.removeEventHandler(t, this);
402-
} else if (x instanceof Window y) {
403-
y.removeEventHandler(t, this);
404-
} else if (x instanceof Scene y) {
405-
y.removeEventHandler(t, this);
406-
} else if (x instanceof MenuItem y) {
407-
y.removeEventHandler(t, this);
408-
} else if (x instanceof TreeItem y) {
409-
y.removeEventHandler(t, this);
410-
} else if (x instanceof TableColumnBase y) {
411-
y.removeEventHandler(t, this);
412-
} else if (x instanceof Transform y) {
413-
y.removeEventHandler(t, this);
414-
} else if (x instanceof Task y) {
415-
y.removeEventHandler(t, this);
416-
}
393+
x.removeEventHandler(t, this);
417394
}
418395
};
419396

420397
items.add(h);
421398

422-
// we really need an interface here ... "HasEventHandlers"
423-
if (x instanceof Node y) {
424-
y.addEventHandler(t, h);
425-
} else if (x instanceof Window y) {
426-
y.addEventHandler(t, h);
427-
} else if (x instanceof Scene y) {
428-
y.addEventHandler(t, h);
429-
} else if (x instanceof MenuItem y) {
430-
y.addEventHandler(t, h);
431-
} else if (x instanceof TreeItem y) {
432-
y.addEventHandler(t, h);
433-
} else if (x instanceof TableColumnBase y) {
434-
y.addEventHandler(t, h);
435-
} else if (x instanceof Transform y) {
436-
y.addEventHandler(t, h);
437-
} else if (x instanceof Task y) {
438-
y.addEventHandler(t, h);
439-
} else {
440-
throw new IllegalArgumentException("Cannot add event handler to " + x);
441-
}
399+
x.addEventHandler(t, h);
442400

443401
return h;
444402
}
445403

446404
// event filters
447405

448-
public <T extends Event> IDisconnectable addEventFilter(Object x, EventType<T> t, EventHandler<T> handler) {
406+
public <T extends Event> IDisconnectable addEventFilter(EventTarget x, EventType<T> t, EventHandler<T> handler) {
449407
EvHa<T> h = new EvHa<>(handler) {
450408
@Override
451409
public void disconnect() {
452-
if (x instanceof Node n) {
453-
n.removeEventFilter(t, this);
454-
} else if (x instanceof Window y) {
455-
y.removeEventFilter(t, this);
456-
} else if (x instanceof Scene y) {
457-
y.removeEventFilter(t, this);
458-
} else if (x instanceof Transform y) {
459-
y.removeEventFilter(t, this);
460-
} else if (x instanceof Task y) {
461-
y.removeEventFilter(t, this);
462-
}
410+
x.removeEventFilter(t, this);
463411
}
464412
};
465413

466414
items.add(h);
467415

468-
// we really need an interface here ... "HasEventFilters"
469-
if (x instanceof Node y) {
470-
y.addEventFilter(t, h);
471-
} else if (x instanceof Window y) {
472-
y.addEventFilter(t, h);
473-
} else if (x instanceof Scene y) {
474-
y.addEventFilter(t, h);
475-
} else if (x instanceof Transform y) {
476-
y.addEventFilter(t, h);
477-
} else if (x instanceof Task y) {
478-
y.addEventFilter(t, h);
479-
} else {
480-
throw new IllegalArgumentException("Cannot add event filter to " + x);
481-
}
416+
x.addEventFilter(t, h);
482417

483418
return h;
484419
}

modules/javafx.controls/src/test/java/test/javafx/scene/control/TestListenerHelper.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -392,12 +392,6 @@ public void testEventHandler() {
392392
}
393393
}
394394

395-
@Test(expected = IllegalArgumentException.class)
396-
public void testEventHandlerCheck() {
397-
ListenerHelper h = new ListenerHelper();
398-
h.addEventHandler(new Object(), MouseEvent.ANY, (ev) -> { throw new Error(); });
399-
}
400-
401395
// event filters
402396

403397
@Test
@@ -422,12 +416,6 @@ public void testEventFilter() {
422416
}
423417
}
424418

425-
@Test(expected = IllegalArgumentException.class)
426-
public void testEventFilterCheck() {
427-
ListenerHelper h = new ListenerHelper();
428-
h.addEventFilter(new Object(), MouseEvent.ANY, (ev) -> { throw new Error(); });
429-
}
430-
431419
//
432420

433421
protected EventTarget[] eventHandlerTargets() {

0 commit comments

Comments
 (0)