Improve view state initialization

This commit is contained in:
crschnick 2023-10-23 19:40:13 +00:00
parent d1c2cc27af
commit 656be93d44
3 changed files with 20 additions and 28 deletions

View file

@ -43,14 +43,13 @@ public class StoreCategoryWrapper {
this.root = last; this.root = last;
this.category = category; this.category = category;
this.name = new SimpleStringProperty(); this.name = new SimpleStringProperty(category.getName());
this.lastAccess = new SimpleObjectProperty<>(); this.lastAccess = new SimpleObjectProperty<>(category.getLastAccess());
this.sortMode = new SimpleObjectProperty<>(); this.sortMode = new SimpleObjectProperty<>(category.getSortMode());
this.share = new SimpleObjectProperty<>(); this.share = new SimpleObjectProperty<>(category.isShare());
this.children = FXCollections.observableArrayList(); this.children = FXCollections.observableArrayList();
this.containedEntries = FXCollections.observableArrayList(); this.containedEntries = FXCollections.observableArrayList();
setupListeners(); setupListeners();
update();
} }
public StoreCategoryWrapper getRoot() { public StoreCategoryWrapper getRoot() {
@ -117,20 +116,18 @@ public class StoreCategoryWrapper {
sortMode.setValue(category.getSortMode()); sortMode.setValue(category.getSortMode());
share.setValue(category.isShare()); share.setValue(category.isShare());
if (StoreViewState.get() != null) { containedEntries.setAll(StoreViewState.get().getAllEntries().stream()
containedEntries.setAll(StoreViewState.get().getAllEntries().stream() .filter(entry -> contains(entry.getEntry()))
.filter(entry -> contains(entry.getEntry())) .toList());
.toList()); children.setAll(StoreViewState.get().getCategories().stream()
children.setAll(StoreViewState.get().getCategories().stream() .filter(storeCategoryWrapper -> getCategory()
.filter(storeCategoryWrapper -> getCategory() .getUuid()
.getUuid() .equals(storeCategoryWrapper.getCategory().getParentCategory()))
.equals(storeCategoryWrapper.getCategory().getParentCategory())) .toList());
.toList()); Optional.ofNullable(getParent())
Optional.ofNullable(getParent()) .ifPresent(storeCategoryWrapper -> {
.ifPresent(storeCategoryWrapper -> { storeCategoryWrapper.update();
storeCategoryWrapper.update(); });
});
}
} }
public String getName() { public String getName() {

View file

@ -61,7 +61,6 @@ public class StoreEntryWrapper {
}); });
this.defaultActionProvider = new SimpleObjectProperty<>(); this.defaultActionProvider = new SimpleObjectProperty<>();
setupListeners(); setupListeners();
update();
} }
public void moveTo(DataStoreCategory category) { public void moveTo(DataStoreCategory category) {
@ -136,9 +135,7 @@ public class StoreEntryWrapper {
deletable.setValue(entry.getConfiguration().isDeletable() deletable.setValue(entry.getConfiguration().isDeletable()
|| AppPrefs.get().developerDisableGuiRestrictions().getValue()); || AppPrefs.get().developerDisableGuiRestrictions().getValue());
if (StoreViewState.get() != null) { category.setValue(StoreViewState.get().getCategoryWrapper(DataStorage.get().getStoreCategoryIfPresent(entry.getCategoryUuid()).orElseThrow()));
category.setValue(StoreViewState.get().getCategoryWrapper(DataStorage.get().getStoreCategoryIfPresent(entry.getCategoryUuid()).orElseThrow()));
}
actionProviders.keySet().forEach(dataStoreActionProvider -> { actionProviders.keySet().forEach(dataStoreActionProvider -> {
if (!isInStorage()) { if (!isInStorage()) {

View file

@ -131,7 +131,9 @@ public class StoreViewState {
return; return;
} }
new StoreViewState(); INSTANCE = new StoreViewState();
INSTANCE.categories.forEach(storeCategoryWrapper -> storeCategoryWrapper.update());
INSTANCE.allEntries.forEach(storeCategoryWrapper -> storeCategoryWrapper.update());
} }
public static void reset() { public static void reset() {
@ -173,10 +175,6 @@ public class StoreViewState {
storeCategoryWrapper.getCategory().getUuid().equals(DataStorage.DEFAULT_CATEGORY_UUID)) storeCategoryWrapper.getCategory().getUuid().equals(DataStorage.DEFAULT_CATEGORY_UUID))
.findFirst() .findFirst()
.orElseThrow())); .orElseThrow()));
INSTANCE = this;
categories.forEach(storeCategoryWrapper -> storeCategoryWrapper.update());
allEntries.forEach(storeCategoryWrapper -> storeCategoryWrapper.update());
} }
private void addStorageListeners() { private void addStorageListeners() {