Skip to content

Commit 62d4990

Browse files
jperedadnrcarldea
andauthored
Update filter options property whenever an option is changed (#613)
Co-authored-by: Carl Dea <carl.dea@gmail.com>
1 parent 236088c commit 62d4990

3 files changed

Lines changed: 18 additions & 7 deletions

File tree

kview/src/main/java/dev/ikm/komet/kview/controls/skin/DateFilterTitledPaneSkin.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package dev.ikm.komet.kview.controls.skin;
22

3-
import dev.ikm.komet.kview.controls.FilterOptions;
4-
import dev.ikm.komet.kview.controls.RangeCalendarControl;
53
import dev.ikm.komet.kview.controls.DateFilterTitledPane;
64
import dev.ikm.komet.kview.controls.DateRange;
5+
import dev.ikm.komet.kview.controls.FilterOptions;
76
import dev.ikm.komet.kview.controls.IconRegion;
7+
import dev.ikm.komet.kview.controls.RangeCalendarControl;
88
import dev.ikm.komet.kview.controls.TruncatedTextFlow;
99
import javafx.collections.FXCollections;
1010
import javafx.css.PseudoClass;
@@ -194,7 +194,7 @@ private void setupTitledPane() {
194194
.filter(DateRange::exclude)
195195
.forEach(dr -> currentOption.excludedOptions().add(dr.toString()));
196196
}
197-
control.setOption(currentOption);
197+
control.setOption(currentOption.copy());
198198
}
199199
}));
200200

kview/src/main/java/dev/ikm/komet/kview/controls/skin/FilterOptionsPopupSkin.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,19 @@ public class FilterOptionsPopupSkin implements Skin<FilterOptionsPopup> {
5555

5656
private Subscription subscription;
5757
private Subscription filterSubscription;
58+
private boolean updating;
5859

5960
private final FilterOptions defaultFilterOptions = new FilterOptions();
6061
private final ObjectProperty<FilterOptions> currentFilterOptionsProperty = new SimpleObjectProperty<>() {
6162
@Override
6263
protected void invalidated() {
6364
FilterOptions filterOptions = get();
6465
if (filterOptions != null) {
65-
applyButton.setDisable(control.getFilterOptions().equals(filterOptions));
66+
if (!updating) {
67+
control.setFilterOptions(filterOptions);
68+
}
69+
// Keep button always enabled, though it won't do anything, since filterOptions are already passed to the control
70+
// applyButton.setDisable(control.getFilterOptions().equals(filterOptions));
6671
revertButton.setDisable(defaultFilterOptions.equals(filterOptions));
6772
}
6873
}
@@ -157,6 +162,7 @@ private void setupFilter(FilterOptions filterOptions) {
157162
return;
158163
}
159164
// changes from titledPane control:
165+
updating = true;
160166
filterSubscription = Subscription.EMPTY;
161167
accordion.getPanes().stream()
162168
.filter(FilterTitledPane.class::isInstance)
@@ -179,6 +185,7 @@ private void setupFilter(FilterOptions filterOptions) {
179185
});
180186
updateCurrentFilterOptions();
181187
control.getProperties().put(DEFAULT_OPTIONS_KEY, defaultFilterOptions.equals(control.getFilterOptions()));
188+
updating = false;
182189
}
183190

184191
@Override
@@ -203,8 +210,11 @@ public void dispose() {
203210

204211
private void revertFilterOptions() {
205212
accordion.setExpandedPane(null);
206-
control.setFilterOptions(null);
213+
updating = true;
214+
currentFilterOptionsProperty.set(null);
215+
setupFilter(null);
207216
setOptionsFromNavigator(control.getNavigator());
217+
updating = false;
208218
updateCurrentFilterOptions();
209219
}
210220

@@ -316,7 +326,8 @@ private void setOptionsFromNavigator(Navigator navigator) {
316326
}
317327

318328
// initially, set default options
319-
control.setFilterOptions(defaultFilterOptions);
329+
currentFilterOptionsProperty.set(defaultFilterOptions);
330+
setupFilter(defaultFilterOptions);
320331
updateCurrentFilterOptions();
321332
}
322333

kview/src/main/java/dev/ikm/komet/kview/controls/skin/FilterTitledPaneSkin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ private void setupTitledPane() {
241241
subscription = subscription.and(control.optionProperty().subscribe((_, _) -> setupTitledPane()));
242242
subscription = subscription.and(control.expandedProperty().subscribe((_, expanded) -> {
243243
if (!expanded) {
244-
control.setOption(currentOption);
244+
control.setOption(currentOption.copy());
245245
selectedOption.setText(getOptionText(currentOption));
246246
}
247247
}));

0 commit comments

Comments
 (0)