Skip to content
Snippets Groups Projects
Commit 7d6a6121 authored by Simon Barner's avatar Simon Barner
Browse files

Fix bug: Programmatic filter() was ignored for empty filter expression

* Execute filter() also when the provided String-based filter is empty
* Make getFilterPredicate() private: Subclasses should override
  filter() and getFilterExpression() instead
* Note: Keeping explicit filterValue argument of filter()
   - It is initialized using getFilterExpression() in
     getFilterPredicate())
   - This allows to change the filter expression when filter() invokes
     itself recursively (e.g., when filtering trees)

Issue-Ref: 4071
Issue-Url: https://af3-developer.fortiss.org/issues/4071



Signed-off-by: default avatarSimon Barner <barner@fortiss.org>
parent 14293808
No related branches found
No related tags found
1 merge request!1294071: Model Library Elements are not Filtered by the Selection any more
DynamicList.java 786300e2e914826da239329d190abea1710478ea GREEN
DynamicListContentProvider.java 817cba44f246a361207a88ef9a4e1869215803f7 GREEN
DynamicStreamContentProvider.java f46e91400609cba54793dd240be0fe2aa0d5cced GREEN
DynamicTreeContentProviderBase.java 0f6e0a6894752d135847608bc45efa504972bb28 GREEN
DynamicTreeContentProviderBase.java e1c46ba3eb7c74c114c8528608e3e6a2ee5c2041 YELLOW
DynamicTreeItem.java 7486071d20e896d6ca9a9101bf105caccf3656d0 GREEN
DynamicTreeItemBase.java d883066ecc181120302ca32f328538de7a45b093 GREEN
DynamicTreeTableUIProviderBase.java 1078bd28a6bce5a5a2c60500f2aa1d8b1fdd341b GREEN
......
......@@ -47,17 +47,14 @@ public abstract class DynamicTreeContentProviderBase<T> {
}
/**
* Returns the filter predicate for the given filter value. The default checks if the object's
* toString() contains the filter value. Sub-classes may override or implement
* {@link #filter(Object, String)}.
* Creates a filter predicate for the filter expression returned by
* {@link #getFilterExpression()}. To customize the filter, subclasses may override
* {@link #getFilterExpression()} and {@link #filter(Object, String)}.
*/
protected Predicate<T> getFilterPredicate() {
if(getFilterExpression() != null && !"".equals(getFilterExpression().trim())) {
return (o) -> {
return filter(o, getFilterExpression());
};
}
return (o) -> true;
private Predicate<T> getFilterPredicate() {
return (o) -> {
return filter(o, getFilterExpression());
};
}
/** Sub-classes may override to implement simple filter behavior. */
......@@ -65,7 +62,7 @@ public abstract class DynamicTreeContentProviderBase<T> {
if(element == null) {
return false;
}
if(filterValue == null || "".equals(filterValue)) {
if(filterValue == null || "".equals(filterValue.trim())) {
return true;
}
return element.toString().toLowerCase().contains(filterValue.toLowerCase());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment