|
1 | 1 | /* |
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. |
3 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 | 4 | * |
5 | 5 | * This code is free software; you can redistribute it and/or modify it |
|
41 | 41 | import javafx.collections.ObservableMap; |
42 | 42 | import javafx.collections.ObservableSet; |
43 | 43 | import javafx.collections.SetChangeListener; |
44 | | -import javafx.concurrent.Task; |
45 | 44 | import javafx.event.Event; |
46 | 45 | import javafx.event.EventHandler; |
| 46 | +import javafx.event.EventTarget; |
47 | 47 | import javafx.event.EventType; |
48 | | -import javafx.scene.Node; |
49 | | -import javafx.scene.Scene; |
50 | | -import javafx.scene.control.MenuItem; |
51 | 48 | 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; |
56 | 49 |
|
57 | 50 | /** |
58 | 51 | * This class provides convenience methods for adding various listeners, both |
@@ -393,92 +386,34 @@ public void onChanged(Change<? extends T> ch) { |
393 | 386 |
|
394 | 387 | // event handlers |
395 | 388 |
|
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) { |
397 | 390 | EvHa<T> h = new EvHa<>(handler) { |
398 | 391 | @Override |
399 | 392 | 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); |
417 | 394 | } |
418 | 395 | }; |
419 | 396 |
|
420 | 397 | items.add(h); |
421 | 398 |
|
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); |
442 | 400 |
|
443 | 401 | return h; |
444 | 402 | } |
445 | 403 |
|
446 | 404 | // event filters |
447 | 405 |
|
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) { |
449 | 407 | EvHa<T> h = new EvHa<>(handler) { |
450 | 408 | @Override |
451 | 409 | 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); |
463 | 411 | } |
464 | 412 | }; |
465 | 413 |
|
466 | 414 | items.add(h); |
467 | 415 |
|
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); |
482 | 417 |
|
483 | 418 | return h; |
484 | 419 | } |
|
0 commit comments