我正在Kotlin / TornadoFX中创建一个简单的UI,其中提供了一些服务器的状态摘要。对于每个服务器,我显示服务器名称,状态和内部版本号。其中一些构建是master分支的夜间构建,而其他构建是CI生成的功能分支的测试构建。目前,这些字段是我的MVC模型中的SimpleStringProperty
值,我在UI中使用的方式如下:
// inside my View class
override val root = vbox {
text(model.nameProperty)
text(model.statusProperty)
text(model.buildNumberProperty)
}
在服务器上安装测试版本时,我希望版本号在CI中具有指向构建摘要的超链接;对于每晚的版本,我只想显示没有链接的版本号。
我确实有两个实用程序函数,isTestBuild(buildNum: String): Boolean
和getTestBuildLink(buildNum: String): String?
可以使用,但是我不知道如何将它们与模型中的Properties组合在一起以动态更新UI作为模型变化。
如果这些是正常的String
值,我将这样编写UI:
// inside my View class
override val root = vbox {
text(model.name)
text(model.status)
if(isTestBuild(model.buildNumber)) {
hyperlink(model.buildNumber)
.action(openLink(getTestBuildLink(model.buildNumber))!!))
} else {
text(model.buildNumber)
}
}
如何构成模型属性和这些函数,以便仅为我的测试构建提供超链接,为夜间构建提供文本?