Refactor sentence listview by showing simplified or traditional and setting correct font family and font size

This commit is contained in:
Marvin Elsen 2024-10-14 21:51:16 +02:00
parent 168d1634a2
commit a4e5b9145f
Signed by: marvinelsen
GPG Key ID: 820672408CC318C2
3 changed files with 27 additions and 9 deletions

View File

@ -1,16 +1,19 @@
package com.marvinelsen.willow.ui.cells
import com.marvinelsen.willow.config.Config
import com.marvinelsen.willow.config.Script
import com.marvinelsen.willow.ui.SentenceFx
import javafx.beans.binding.Bindings
import javafx.scene.control.Label
import javafx.scene.control.ListCell
import javafx.scene.control.ListView
import javafx.scene.layout.VBox
import javafx.util.Callback
class SentenceCellFactory() : Callback<ListView<SentenceFx?>, ListCell<SentenceFx?>> {
class SentenceCellFactory(private val config: Config) : Callback<ListView<SentenceFx?>, ListCell<SentenceFx?>> {
override fun call(listView: ListView<SentenceFx?>): ListCell<SentenceFx?> {
val sentenceCell = SentenceCell()
val sentenceCell = SentenceCell(config)
sentenceCell.prefWidthProperty().bind(listView.widthProperty().subtract(CELL_PADDING))
return sentenceCell
}
@ -20,12 +23,11 @@ class SentenceCellFactory() : Callback<ListView<SentenceFx?>, ListCell<SentenceF
}
}
internal class SentenceCell() : ListCell<SentenceFx?>() {
private val labelTraditional = Label().apply {
styleClass.add("chinese")
styleClass.add("list-view-sentence-cell")
private class SentenceCell(private val config: Config) : ListCell<SentenceFx?>() {
private val labelSentence = Label().apply {
styleClass.add("sentence")
}
private val root = VBox(labelTraditional)
private val root = VBox(labelSentence)
init {
text = null
@ -36,7 +38,18 @@ internal class SentenceCell() : ListCell<SentenceFx?>() {
if (empty || sentence == null) {
graphic = null
} else {
labelTraditional.text = sentence.traditionalProperty.value
labelSentence.textProperty().bind(
Bindings.createStringBinding(
{
when (config.script.value!!) {
Script.SIMPLIFIED -> sentence.simplifiedProperty.value
Script.TRADITIONAL -> sentence.traditionalProperty.value
}
},
config.script
)
)
graphic = root
}

View File

@ -182,7 +182,7 @@ class DetailsController(private val model: Model, private val config: Config) {
private fun initializeListViewSentences() {
listViewSentences.apply {
cellFactory = SentenceCellFactory()
cellFactory = SentenceCellFactory(config)
items = model.sentences
disableProperty().bind(Bindings.or(model.isFindingSentences, Bindings.isEmpty(model.sentences)))

View File

@ -9,3 +9,8 @@
.list-view .headword {
-fx-font-family: "Noto Sans TC";
}
.list-view .sentence {
-fx-font-family: "Noto Sans TC";
-fx-font-size: 14px;
}