package bp.view import bp.app.Styles import javafx.beans.property.SimpleFloatProperty import javafx.beans.property.SimpleIntegerProperty import javafx.beans.property.SimpleObjectProperty import javafx.geometry.Orientation import tornadofx.* import java.time.LocalDate class MainView : View("Hello TornadoFX") { override val root = hbox { label(title) { addClass(Styles.heading) } } } class EntryForm : View("Entry Form") { val entry: MeasurementModel by inject() override val root = form { fieldset(labelPosition = Orientation.VERTICAL) { field("sys") { textfield(entry.sys) { filterInput { it.text.isFloat() } } } field("dia") { textfield(entry.dia) } field("pulse") { textfield(entry.pulse) } field("Time") { datepicker(entry.time) } button("press me").action { entry.rollback() println(entry.sys) } } } } class Measurement : JsonModel { val sysProperty = SimpleFloatProperty() var sys by sysProperty val diaProperty = SimpleIntegerProperty() var dia by diaProperty val pulseProperty = SimpleIntegerProperty() val pulse by pulseProperty val timeProperty = SimpleObjectProperty(LocalDate.now()) var time by timeProperty } class MeasurementModel : ItemViewModel() { val sys = bind(Measurement::sysProperty, defaultValue = 10.5) val dia = bind(Measurement::diaProperty) val pulse = bind(Measurement::pulseProperty) val time = bind(Measurement::timeProperty, defaultValue = LocalDate.now()) }