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.

48 lines
1.2 KiB

  1. package nova.monadic_sfx.implicits
  2. import com.jfoenix.{controls => jfoenixc}
  3. import monix.execution.Scheduler
  4. import monix.reactive.Observable
  5. import scalafx.Includes._
  6. import scalafx.collections.ObservableBuffer
  7. import scalafx.scene.control.ListView
  8. object JFXListView {
  9. implicit def sfxListView2jfx[T](l: JFXListView[T]): jfoenixc.JFXListView[T] =
  10. if (l != null) l.delegate else null
  11. }
  12. // extends Control(delegate)
  13. // with SFXDelegate[jfoenixc.JFXListView[T]]
  14. class JFXListView[T](
  15. override val delegate: jfoenixc.JFXListView[T] = new jfoenixc.JFXListView[T]
  16. ) extends ListView[T] {
  17. // def items_=(
  18. // v: Observable[ObservableBuffer[T]]
  19. // )(implicit s: Scheduler): Unit = {
  20. // v.foreach { items() = _ }
  21. // }
  22. def items_=(
  23. v: Observable[Seq[T]]
  24. )(implicit s: Scheduler): Unit = {
  25. v
  26. .map {
  27. // case buf: ObservableBuffer[T] => buf
  28. case other => ObservableBuffer.from(other)
  29. }
  30. // .map(myDiff(items(), _))
  31. .foreach { items() = _ }
  32. }
  33. def depth = delegate.depthProperty()
  34. def depth_=(depth: Int) = delegate.setDepth(depth)
  35. def expanded = delegate.expandedProperty()
  36. def expanded_=(v: Boolean) = expanded() = v
  37. }