package nova.monadic_sfx.implicits import com.jfoenix.controls.datamodels.treetable.RecursiveTreeObject import com.jfoenix.{controls => jfoenixc} import javafx.scene.{control => jfxsc} import scalafx.collections.ObservableBuffer import scalafx.scene.control.TreeItem import scalafx.scene.control.TreeTableView class RecursiveTreeItem[G <: RecursiveTreeObject[G]]( override val delegate: jfoenixc.RecursiveTreeItem[G] = new jfoenixc.RecursiveTreeItem[G]((item: RecursiveTreeObject[G]) => item.getChildren() ) ) extends TreeItem[G](delegate) { def this(value: G) = this( new jfoenixc.RecursiveTreeItem[G]( value, (item: RecursiveTreeObject[G]) => item.getChildren() ) ) def this(items: ObservableBuffer[G]) = this( new jfoenixc.RecursiveTreeItem[G]( items, (item: RecursiveTreeObject[G]) => item.getChildren() ) ) } object RecursiveTreeItem { implicit def sfxTreeItem2jfxTreeItem[G <: RecursiveTreeObject[G]]( v: RecursiveTreeItem[G] ): jfoenixc.RecursiveTreeItem[G] = v.delegate } // @formatter:off class JFXTreeTableView[S <: RecursiveTreeObject[S]]( override val delegate: jfoenixc.JFXTreeTableView[S] = new jfoenixc.JFXTreeTableView[S] ) extends TreeTableView(delegate) { def this(root: TreeItem[S]) = this(new jfoenixc.JFXTreeTableView[S](root)) // def this(root: TreeItem[S], items: ObservableBuffer[S]) = this(new jfoenixc.JFXTreeTableView[S](root, items)) // @formatter:on def currentItemsCount = delegate.currentItemsCountProperty() def predicate = delegate.predicateProperty() // delegate.set // override def treeColumn_=(v: TreeTableColumn[S, _]): Unit = ??? // delegate.setTreeColumn() } // @formatter:off object JFXTreeTableView { implicit def sfxTreeTableView2jfx[S <: RecursiveTreeObject[S]]( v: JFXTreeTableView[S] ): jfxsc.TreeTableView[S] = if (v != null) v.delegate else null } // @formatter:on