public SyntaxHighlightingCodeArea() { // captured in the closure final EventHandler<WindowEvent> autoCloseHandler = e -> syntaxAutoRefresh.ifPresent(Subscription::unsubscribe); // handles auto shutdown of executor services // by attaching a handler to the stage responsible for the control Val.wrap(sceneProperty()) .filter(Objects::nonNull) .flatMap(Scene::windowProperty) .values() .filter(Objects::nonNull) .subscribe(c -> c.addEventHandler(WindowEvent.WINDOW_CLOSE_REQUEST, autoCloseHandler)); }
public static <T extends WindowEvent> Observable<T> fromWindowEvents(final Window source, final EventType<T> eventType) { return Observable.create((ObservableEmitter<T> subscriber) -> { final EventHandler<T> handler = subscriber::onNext; source.addEventHandler(eventType, handler); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeEventHandler(eventType, handler))); }).subscribeOn(JavaFxScheduler.platform()); } }
public static <T extends WindowEvent> Observable<T> fromWindowEvents(final Window source, final EventType<T> eventType) { return Observable.create((ObservableEmitter<T> subscriber) -> { final EventHandler<T> handler = subscriber::onNext; source.addEventHandler(eventType, handler); subscriber.setDisposable(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeEventHandler(eventType, handler))); }).subscribeOn(JavaFxScheduler.platform()); } }
/** * Add an event handler on the given node according to annotation OnXxxxx. * * @param target the graphical node, must be not null (is a subtype of EventTarget) * @param annotation the OnXxxx annotation * * @throws CoreException if an error occurred while linking the event handler */ private void addHandler(final EventTarget target, final Annotation annotation) throws CoreException { // Build the auto event handler for this annotation final AnnotationEventHandler<Event> aeh = new AnnotationEventHandler<>(this.callbackObject, annotation); for (final EnumEventType eet : (EnumEventType[]) ClassUtility.getAnnotationAttribute(annotation, "value")) { if (target instanceof Node) { ((Node) target).addEventHandler(eet.eventType(), aeh); } else if (target instanceof MenuItem) { if (eet.eventType() == ActionEvent.ACTION) { ((MenuItem) target).addEventHandler(ActionEvent.ACTION, new AnnotationEventHandler<>(this.callbackObject, annotation)); } else { ((MenuItem) target).setOnMenuValidation(aeh); } } else if (target instanceof Window) { ((Window) target).addEventHandler(eet.eventType(), aeh); } } }
control.getScene().getWindow().addEventHandler(DockableCloseRequestEvent.DOCKABLE_CLOSE_REQUEST, tabManager.getOnDockableCloseRequestHandler());