Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tornadofx.App
- import tornadofx.ItemViewModel
- import tornadofx.View
- import tornadofx.action
- import tornadofx.bind
- import tornadofx.button
- import tornadofx.checkbox
- import tornadofx.enableWhen
- import tornadofx.field
- import tornadofx.fieldset
- import tornadofx.form
- import tornadofx.getProperty
- import tornadofx.property
- import tornadofx.select
- import tornadofx.textfield
- class Options(first: Double, second: Boolean) {
- var first by property(first)
- fun firstProperty() = getProperty(Options::first)
- var second by property(second)
- fun secondProperty() = getProperty(Options::second)
- }
- class OptionsModel : ItemViewModel<Options>() {
- val first = bind { item?.firstProperty() }
- val second = bind { item?.secondProperty() }
- }
- class Job(name: String, options: Options) {
- var name by property(name)
- fun nameProperty() = getProperty(Job::name)
- var options by property(options)
- fun optionsProperty() = getProperty(Job::options)
- }
- class JobModel : ItemViewModel<Job>() {
- val name = bind { item?.nameProperty() }
- val options = bind { item?.optionsProperty() }
- }
- class JobView : View() {
- val jobModel: JobModel by inject()
- override val root = form {
- fieldset("Basic") {
- field("Name") {
- textfield(jobModel.name)
- }
- }
- fieldset("Options") {
- field("First") {
- textfield {
- bind(jobModel.options.select { it.firstProperty() })
- }
- }
- field("Second") {
- checkbox(property = jobModel.options.select { it.secondProperty() })
- }
- }
- button("Save") {
- enableWhen(jobModel.valid.and(jobModel.dirty))
- action {
- jobModel.commit {
- println("Created: ${jobModel.item}")
- }
- }
- }
- button("Revert") {
- enableWhen(jobModel.dirty)
- action {
- jobModel.rollback()
- }
- }
- }
- }
- class Main : App(JobView::class)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement