Bug 571029: [R-DataEditor] Fix filter application of filter after
refresh
Change-Id: Iedbdec6723cae1a23e7779e0d5c25009599b84c9
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/IntervalVariableFilter.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/IntervalVariableFilter.java
index d9b31c5..42228cb 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/IntervalVariableFilter.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/IntervalVariableFilter.java
@@ -67,13 +67,14 @@
@Override
public void load(final VariableFilter filter) {
if (filter.getType() == FilterType.INTERVAL
- && filter.getColumn().getDataStore().getStoreType() == getColumn().getDataStore().getStoreType()) {
+ && filter.getColumn().getDataStore().getStoreType() == getColumn().getDataStore().getStoreType() ) {
final IntervalVariableFilter intervalFilter= (IntervalVariableFilter)filter;
runInRealm(() -> {
- final var minMaxData= this.minMaxData;
- if (minMaxData != null) {
+ var minMaxData= this.minMaxData;
+ if (minMaxData != null || (minMaxData= intervalFilter.minMaxData) == null) {
return;
}
+ this.minMaxData= minMaxData;
this.selectedLowerValue.setValue(intervalFilter.getSelectedLowerValue().getValue());
this.selectedUpperValue.setValue(intervalFilter.getSelectedUpperValue().getValue());
this.selectedNA.setValue(intervalFilter.getSelectedNA().getValue());
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/LevelVariableFilter.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/LevelVariableFilter.java
index 9534fa4..4687f2c 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/LevelVariableFilter.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/LevelVariableFilter.java
@@ -38,7 +38,7 @@
public class LevelVariableFilter extends VariableFilter {
- private RStore<?> availableValues;
+ private @Nullable RStore<?> availableValues;
private final IObservableSet<Object> selectedValues;
@@ -46,7 +46,6 @@
public LevelVariableFilter(final FilterSet set, final RDataTableColumn column) {
super(set, column);
- this.availableValues= NO_VALUES;
this.selectedValues= new WritableSet<>(set.getRealm());
registerObservable(this.selectedValues);
}
@@ -59,9 +58,13 @@
@Override
public void load(final VariableFilter filter) {
- if (filter.getType() == FilterType.LEVEL) {
+ if (filter.getType() == FilterType.LEVEL
+ && filter.getColumn().getDataStore().getStoreType() == getColumn().getDataStore().getStoreType() ) {
final LevelVariableFilter levelFilter= (LevelVariableFilter)filter;
runInRealm(() -> {
+ if (this.availableValues == null) {
+ this.availableValues= levelFilter.availableValues;
+ }
this.selectedValues.addAll(levelFilter.getSelectedValues());
});
}
@@ -114,7 +117,7 @@
protected void setValues(final RStore<?> values) {
runInRealm(() -> {
- if (!this.availableValues.equals(values) || getError() != null) {
+ if (!values.equals(this.availableValues) || getError() != null) {
this.availableValues= values;
clearError();
notifyListeners();
@@ -185,7 +188,8 @@
public RStore<?> getAvailableValues() {
- return this.availableValues;
+ final var availableValues= this.availableValues;
+ return (availableValues != null) ? availableValues : NO_VALUES;
}
public IObservableSet getSelectedValues() {