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)
  }
}

friends_table.png