Как использовать свойства для создания различных компонентов пользовательского интерфейса в Kotlin & TornadoFX? - PullRequest
0 голосов
/ 02 июля 2019

Я создаю простой пользовательский интерфейс в Kotlin / TornadoFX, который дает сводку состояния некоторых серверов. Для каждого сервера я отображаю имя сервера, статус и номер сборки. Некоторые из этих сборок - это ночные сборки основной ветки, а другие - тестовые сборки ветвей функций, созданных CI. В настоящее время эти поля являются SimpleStringProperty значениями в моей модели MVC, которые я использую в пользовательском интерфейсе следующим образом:

// 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?, которые я могу использовать, но я не знаю, как их объединить со свойствами в моей модели для динамического обновления пользовательского интерфейса при изменении модели.

Если бы это были нормальные 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)
    }
}

Как составить свойства модели и эти функции, чтобы предоставить гиперссылку только для моих тестовых сборок и текст для ночных сборок?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...