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();