Fix status bar binding

This commit is contained in:
crschnick 2024-03-04 18:42:32 +00:00
parent d54fa908f8
commit a557fcbe73
2 changed files with 22 additions and 29 deletions

View file

@ -44,33 +44,21 @@ public class BrowserStatusBarComp extends SimpleComp {
} }
private Comp<?> createProgressStatus() { private Comp<?> createProgressStatus() {
var transferredCount = PlatformThread.sync(Bindings.createStringBinding( var text = BindingsHelper.map(model.getProgress(), p -> {
() -> { if (p == null || p.done()) {
return HumanReadableFormat.byteCount(
model.getProgress().getValue().getTransferred(), false);
},
model.getProgress()));
var allCount = PlatformThread.sync(Bindings.createStringBinding(
() -> {
return HumanReadableFormat.byteCount(
model.getProgress().getValue().getTotal(), true);
},
model.getProgress()));
var progressComp = new LabelComp(BindingsHelper.persist(Bindings.createStringBinding(
() -> {
if (model.getProgress().getValue() == null
|| model.getProgress().getValue().done()) {
return null; return null;
} else { } else {
var name = (model.getProgress().getValue().getName() != null var transferred = HumanReadableFormat.byteCount(
? " @ " + model.getProgress().getValue().getName() + " " p.getTransferred(), false);
var all = HumanReadableFormat.byteCount(
p.getTotal(), true);
var name = (p.getName() != null
? " @ " + p.getName() + " "
: ""); : "");
return transferredCount.getValue() + " / " + allCount.getValue() + name; return transferred + " / " + all + name;
} }
}, });
transferredCount, var progressComp = new LabelComp(text);
allCount,
model.getProgress())));
return progressComp; return progressComp;
} }

View file

@ -8,6 +8,9 @@ import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue; import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.util.Subscription;
import java.util.concurrent.Flow;
public class LabelComp extends Comp<CompStructure<Label>> { public class LabelComp extends Comp<CompStructure<Label>> {
@ -18,13 +21,15 @@ public class LabelComp extends Comp<CompStructure<Label>> {
} }
public LabelComp(ObservableValue<String> text) { public LabelComp(ObservableValue<String> text) {
this.text = PlatformThread.sync(text); this.text = text;
} }
@Override @Override
public CompStructure<Label> createBase() { public CompStructure<Label> createBase() {
var label = new Label(); var label = new Label();
label.textProperty().bind(text); text.subscribe(t -> {
PlatformThread.runLaterIfNeeded(() -> label.setText(t));
});
label.setAlignment(Pos.CENTER); label.setAlignment(Pos.CENTER);
return new SimpleCompStructure<>(label); return new SimpleCompStructure<>(label);
} }