使用正则表达式的 NatTable 过滤器
NatTable Filter using Regex
我对在 NatTable 过滤器中使用正则表达式很感兴趣。我已经根据以下有用的链接设置了我的代码:
https://www.eclipse.org/forums/index.php/t/1069806/
据我所知,基本上可以归结为将以下代码添加到您现有的过滤器中:
FilterRowHeaderComposite<T> filterRowHeaderLayer = new
FilterRowHeaderComposite<>(filterStrategy,
sortHeaderLayer, columnHeaderDataLayer.
getDataProvider(), configRegistry);
int rowNum = 2;
configRegistry.registerConfigAttribute(EditConfigAttributes.CELL_EDITOR,
new FilterRowTextCellEditor(), DisplayMode.NORMAL,
FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + rowNum);
configRegistry.registerConfigAttribute(FilterRowConfigAttributes.
TEXT_MATCHING_MODE, TextMatchingMode.REGULAR_EXPRESSION,
DisplayMode.NORMAL,
FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + rowNum);
configRegistry.registerConfigAttribute(CellConfigAttributes.
DISPLAY_CONVERTER, new FilterRowRegularExpressionConverter(),
DisplayMode.NORMAL,
FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + rowNum);
过滤似乎在某些情况下有效,而在其他情况下无效。例如,假设我有一个包含数据 "This is a Test" 的单元格。如果我使用表达式 *t,它将找到该行(这是我所期望的)。如果我使用表达式 *x,它将找不到该行(这是我所期望的)。如果我使用表达式 ^(123) 它将找不到该行(这不是我所期望的)。我做错了什么吗?
谢谢!
我认为问题出在正则表达式中。似乎缺少基数。使用 [^123]* 它会如您所愿地工作。
例如,如果您测试 _6031_GlazedListsFilterExample 并在 Housenumber 列中插入 [^abc],您将看到所有只有一个数字值的条目。添加*显示所有行。
我对在 NatTable 过滤器中使用正则表达式很感兴趣。我已经根据以下有用的链接设置了我的代码:
https://www.eclipse.org/forums/index.php/t/1069806/
据我所知,基本上可以归结为将以下代码添加到您现有的过滤器中:
FilterRowHeaderComposite<T> filterRowHeaderLayer = new
FilterRowHeaderComposite<>(filterStrategy,
sortHeaderLayer, columnHeaderDataLayer.
getDataProvider(), configRegistry);
int rowNum = 2;
configRegistry.registerConfigAttribute(EditConfigAttributes.CELL_EDITOR,
new FilterRowTextCellEditor(), DisplayMode.NORMAL,
FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + rowNum);
configRegistry.registerConfigAttribute(FilterRowConfigAttributes.
TEXT_MATCHING_MODE, TextMatchingMode.REGULAR_EXPRESSION,
DisplayMode.NORMAL,
FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + rowNum);
configRegistry.registerConfigAttribute(CellConfigAttributes.
DISPLAY_CONVERTER, new FilterRowRegularExpressionConverter(),
DisplayMode.NORMAL,
FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + rowNum);
过滤似乎在某些情况下有效,而在其他情况下无效。例如,假设我有一个包含数据 "This is a Test" 的单元格。如果我使用表达式 *t,它将找到该行(这是我所期望的)。如果我使用表达式 *x,它将找不到该行(这是我所期望的)。如果我使用表达式 ^(123) 它将找不到该行(这不是我所期望的)。我做错了什么吗?
谢谢!
我认为问题出在正则表达式中。似乎缺少基数。使用 [^123]* 它会如您所愿地工作。
例如,如果您测试 _6031_GlazedListsFilterExample 并在 Housenumber 列中插入 [^abc],您将看到所有只有一个数字值的条目。添加*显示所有行。