class SearchView : View() { val repository: KeepassRepository by di() val controller: MainController by inject() override val root = hbox { val items = SortedFilteredList(repository.entries.observable()) form { fieldset(labelPosition = Orientation.HORIZONTAL) { label("Search") textfield { promptText = "search" items.filterWhen(textProperty(), { query, item -> item.url.contains(query, ignoreCase = true) || item.title.contains(query, ignoreCase = true) }) lengthProperty().addListener { idx -> if (length > 0) { fire(groupChanged(items)) } else { fire(groupChanged(SortedFilteredList(controller.selectedGroup.entries))) } } } } } } }