. TableView TableView . . SomeItem:
class SomeItem(name: String) {
val nameProperty = SimpleStringProperty(name)
var name by nameProperty
}
SomeViewFragment item, TableView:
class SomeViewFragment : Fragment() {
val items = FXCollections.observableArrayList<SomeItem>()
override val root = tableview(items) {
column("Name", SomeItem::nameProperty)
}
}
, :
class SomeView : View() {
override val root = stackpane {
this += find<SomeViewFragment>().apply {
items.setAll(SomeItem("Item A"), SomeItem("Item B"))
}
}
}
SomeOtherView, :
class SomeOtherView : View() {
override val root = stackpane {
this += find<SomeViewFragment>().apply {
items.setAll(SomeItem("Item B"), SomeItem("Item C"))
}
}
}
, . , . :
1, . , :
class ItemsModel(val items: ObservableList<SomeItem>) : ViewModel()
ItemsModel :
class SomeViewFragment : Fragment() {
val model: ItemsModel by inject()
override val root = tableview(model.items) {
column("Name", SomeItem::nameProperty)
}
}
, :
class SomeView : View() {
override val root = stackpane {
val model= ItemsModel(listOf(SomeItem("Item A"), SomeItem("Item B")).observable())
val fragmentScope = Scope()
setInScope(model, fragmentScope)
this += find<SomeViewFragment>(fragmentScope)
}
}
, setInScope, , TornadoFX 1.5.9. :
FX.getComponents(fragmentScope).put(ItemsModel::class, model)
- . ItemsScope:
class ItemsScope(val items: ObservableList<SomeItem>) : Scope()
SomeItemScope, :
class SomeViewFragment : Fragment() {
override val scope = super.scope as ItemsScope
override val root = tableview(scope.items) {
column("Name", SomeItem::nameProperty)
}
}
View , :
class SomeView : View() {
override val root = stackpane {
val itemsScope= ItemsScope(listOf(SomeItem("Item A"), SomeItem("Item B")).observable())
this += find<SomeViewFragment>(itemsScope)
}
}
EDIT. find inject. TornadoFX 1.5.9 :
class SomeView : View() {
override val root = stackpane {
val params = "items" to listOf(SomeItem("Item A"), SomeItem("Item B")).observable()
this += find<SomeViewFragment>(params)
}
}
SomeViewFragment :
class SomeViewFragment : Fragment() {
val items: ObservableList<SomeItem> by param()
override val root = tableview(items) {
column("Name", SomeItem::nameProperty)
}
}
, , .
EventBus, TornadoFX 1.5.9. EventBus , .
Scopes, EventBus ViewModel :
Scopes
EventBus
ViewModel Validation