You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package nova.monadic_sfx
import javafx.event.ActionEvent import monix.execution.Ack import monix.execution.Cancelable import monix.reactive.Observable import monix.reactive.OverflowStrategy import scalafx.scene.control._
package object implicits {
implicit class MyButtonExt(val button: Button) extends AnyVal { def observableAction(): Observable[ActionEvent] = { import monix.execution.cancelables.SingleAssignCancelable Observable.create(OverflowStrategy.Unbounded) { sub => val c = SingleAssignCancelable() val l = new javafx.event.EventHandler[ActionEvent] { override def handle(event: ActionEvent): Unit = { if (sub.onNext(event) == Ack.Stop) c.cancel() } }
button.onAction = l c := Cancelable(() => button.removeEventHandler( ActionEvent.ACTION, l ) ) c } } }
// implicit class NodeExt(val node: Node) {
// def lookup2[T <: SFXDelegate[_]](
// selector: String
// )(implicit c: ClassTag[T]) = {
// val t = c.runtimeClass
// Option(node.delegate.lookup(selector)) match {
// case Some(value) =>
// if (value.getClass == t) Some(value) else None
// case None => None
// }
// }
// val x = node.lookup2("")
// }
}
|