Bug 571747: [R-DataEditor] Fix update of UI if filter data changed Change-Id: I34681b37b74aa37d27617e8341efeddf757147b2
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/VariableFilter.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/VariableFilter.java index 0700157..7b9e352 100644 --- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/VariableFilter.java +++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilter/VariableFilter.java
@@ -60,7 +60,7 @@ private final RDataTableColumn column; - private @Nullable FilterListener listener; + private @Nullable Runnable listener; private @Nullable String errorMessage; @@ -126,7 +126,7 @@ } - public void setListener(final FilterListener listener) { + public void setListener(final Runnable listener) { this.listener= listener; } @@ -135,7 +135,7 @@ protected void notifyListeners() { final var listener= this.listener; if (listener != null) { - listener.filterChanged(); + listener.run(); } }
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/FilterClient.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/FilterClient.java index 2cf9b93..05d9122 100644 --- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/FilterClient.java +++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/FilterClient.java
@@ -36,12 +36,11 @@ import org.eclipse.statet.ecommons.databinding.jface.DataBindingSupport; import org.eclipse.statet.ecommons.ui.util.LayoutUtils; -import org.eclipse.statet.internal.r.ui.datafilter.FilterListener; import org.eclipse.statet.internal.r.ui.datafilter.VariableFilter; @NonNullByDefault -public abstract class FilterClient extends Composite implements FilterListener { +public abstract class FilterClient extends Composite { protected static final String SELECT_ALL_COMMAND_ID= IWorkbenchCommandConstants.EDIT_SELECT_ALL; @@ -84,7 +83,7 @@ LayoutUtils.addSmallFiller(this, false); initActions(getParent().getContainer().getServiceLocator()); initBindings(); - updateInput(); + onFilterDataChanged(); } @@ -92,12 +91,12 @@ protected abstract void initActions(IServiceLocator serviceLocator); - @Override - public void filterChanged() { + protected void onFilterDataChanged() { if (isDisposed()) { return; } updateInput(); + this.dataBinding.getContext().updateTargets(); } protected abstract void updateInput(); @@ -105,7 +104,6 @@ protected void initBindings() { this.dataBinding= new DataBindingSupport(this); addBindings(this.dataBinding); - this.dataBinding.getContext().updateTargets(); } protected void addBindings(final DataBindingSupport db) {
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/IntervalClient.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/IntervalClient.java index 554bef7..da9bb46 100644 --- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/IntervalClient.java +++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/IntervalClient.java
@@ -63,7 +63,7 @@ super(parent); this.filter= filter; - filter.setListener(this); + filter.setListener(this::onFilterDataChanged); init(5); }
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/LevelClient.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/LevelClient.java index b359b21..fb3aa2b 100644 --- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/LevelClient.java +++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/LevelClient.java
@@ -62,7 +62,7 @@ super(parent); this.filter= filter; - filter.setListener(this); + filter.setListener(this::onFilterDataChanged); this.availableValues= filter.getAvailableValues(); this.selectedValues= filter.getSelectedValues(); @@ -127,7 +127,6 @@ protected void updateInput() { this.availableValues= this.filter.getAvailableValues(); this.valueListViewer.setInput(this.availableValues); - this.valueListViewer.setCheckedElements(this.selectedValues.toArray()); checkLayout(); }
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/TextClient.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/TextClient.java index 77b8f52..3f0551d 100644 --- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/TextClient.java +++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/datafilterview/TextClient.java
@@ -165,7 +165,7 @@ super(parent); this.filter= filter; - filter.setListener(this); + filter.setListener(this::onFilterDataChanged); this.availableValues= filter.getAvailableValues(); this.selectedValueSet= filter.getSelectedValues();