如何使用属性在Kotlin&TornadoFX中创建不同的UI组件?

时间:2019-07-02 16:10:23

标签: javafx kotlin tornadofx

我正在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): BooleangetTestBuildLink(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)
    }
}

如何构成模型属性和这些函数,以便仅为我的测试构建提供超链接,为夜间构建提供文本?

0 个答案:

没有答案