ViewController Extensions
All ViewController Extensions are subclasses of the sapphire-core ViewController.
All Controllers are abstract by default. Most of this VievController are used for viewing/editing data mapped in FXBeans. Dealing with Generics is done by defining a class tag.
Example for implementing the definition for a Person class:
type R = Person
def ct: ClassTag[Person] = classTag[R]
Types
- BaseDataTableController (adds easy table implementation with sorting, filtering, …)
- BaseEditorController (updateBean, save, revert, …)
- BaseTabController (Tab Selection, …)
- BaseMasterController, BaseDetailController (simple master detail handling with navigation)
Example
Shows usage of Filters in action.
package com.sfxcode.sapphire.extension.showcase.controller.table
import com.sfxcode.sapphire.core.value.{ BeanConversions, FXBean }
import com.sfxcode.sapphire.extension.controller.DataTableController
import com.sfxcode.sapphire.extension.filter.DataTableFilter
import com.sfxcode.sapphire.extension.showcase.controller.BaseController
import com.sfxcode.sapphire.extension.showcase.model.{ Friend, PersonDatabase }
import javafx.collections.ObservableList
import javafx.event.ActionEvent
import scala.reflect._
class FriendTableController extends DataTableController with BaseController with BeanConversions {
type R = Friend
def ct: ClassTag[Friend] = classTag[R]
def items: ObservableList[FXBean[Friend]] = PersonDatabase.friends
override def willGainVisibility(): Unit = {
super.willGainVisibility()
}
override def initTable(tableFilter: DataTableFilter[R]): Unit = {
super.initTable(tableFilter)
tableFilter.addSearchField("nameFilter", "name").setPromptText("Name")
}
def actionAddItem(event: ActionEvent): Unit = {
tableFilter.itemValues.add(items.head)
}
def actionAddItems(event: ActionEvent): Unit = {
tableFilter.itemValues.addAll(items)
}
def actionRemoveAllItems(event: ActionEvent): Unit = {
tableFilter.itemValues.clear()
}
def actionReplaceItems(event: ActionEvent): Unit = {
tableFilter.itemsProperty.set(items)
}
}
1.0.11*