From e3b451b600c7209524699ac8c8f73da454855070 Mon Sep 17 00:00:00 2001 From: crschnick Date: Sat, 30 Dec 2023 14:20:23 +0000 Subject: [PATCH] Fix connection summary generation for #146 --- .../app/comp/store/DenseStoreEntryComp.java | 2 +- .../xpipe/app/comp/store/StoreEntryComp.java | 2 +- .../app/comp/store/StoreEntryWrapper.java | 32 +++++++------------ 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/comp/store/DenseStoreEntryComp.java b/app/src/main/java/io/xpipe/app/comp/store/DenseStoreEntryComp.java index 121c4c08..85d00376 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/DenseStoreEntryComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/DenseStoreEntryComp.java @@ -32,7 +32,7 @@ public class DenseStoreEntryComp extends StoreEntryComp { : Comp.empty(); information.setGraphic(state.createRegion()); - var summary = wrapper.summary(); + var summary = wrapper.getSummary(); var info = wrapper.getEntry().getProvider().informationString(wrapper); SimpleChangeListener.apply(grid.hoverProperty(), val -> { if (val && summary.getValue() != null && wrapper.getEntry().getProvider().alwaysShowSummary()) { diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryComp.java index f600d053..e22a931d 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryComp.java @@ -120,7 +120,7 @@ public abstract class StoreEntryComp extends SimpleComp { protected Label createSummary() { var summary = new Label(); - summary.textProperty().bind(wrapper.summary()); + summary.textProperty().bind(wrapper.getSummary()); summary.getStyleClass().add("summary"); AppFont.small(summary); return summary; diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryWrapper.java b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryWrapper.java index 13af04c6..3c70fe3a 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryWrapper.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryWrapper.java @@ -9,9 +9,7 @@ import io.xpipe.app.storage.DataStoreCategory; import io.xpipe.app.storage.DataStoreColor; import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.app.util.ThreadHelper; -import javafx.beans.binding.Bindings; import javafx.beans.property.*; -import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import lombok.Getter; @@ -39,6 +37,7 @@ public class StoreEntryWrapper { private final MapProperty cache = new SimpleMapProperty<>(FXCollections.observableHashMap()); private final Property color = new SimpleObjectProperty<>(); private final Property category = new SimpleObjectProperty<>(); + private final Property summary = new SimpleObjectProperty<>(); public StoreEntryWrapper(DataStoreEntry entry) { this.entry = entry; @@ -84,24 +83,6 @@ public class StoreEntryWrapper { }); } - public ObservableValue summary() { - return PlatformThread.sync(Bindings.createStringBinding( - () -> { - if (!validity.getValue().isUsable()) { - return null; - } - - try { - return entry.getProvider().summaryString(this); - } catch (Exception ex) { - ErrorEvent.fromThrowable(ex).handle(); - return null; - } - }, - validity, - persistentState)); - } - private void setupListeners() { name.addListener((c, o, n) -> { entry.setName(n); @@ -137,6 +118,17 @@ public class StoreEntryWrapper { category.setValue(StoreViewState.get().getCategoryWrapper(DataStorage.get().getStoreCategoryIfPresent(entry.getCategoryUuid()).orElseThrow())); + if (!entry.getValidity().isUsable()) { + summary.setValue(null); + } else { + try { + summary.setValue(entry.getProvider().summaryString(this)); + } catch (Exception ex) { + // Summary creation might fail or have a bug + ErrorEvent.fromThrowable(ex).handle(); + } + } + actionProviders.keySet().forEach(dataStoreActionProvider -> { if (!isInStorage()) { actionProviders.get(dataStoreActionProvider).set(false);