JFace TableViewer 在列扩展时截断和扩展 ColumnLabelProvider 文本

JFace TableViewer Truncate and Expand ColumnLabelProvider Text as Column Expands

我有一个包含 5 列的 JFace TableViewer。一列中可能有一个长字符串。此测试通过调用 getText(Object element) 方法在 ColumnLabelProvider 中设置。

目前,文本在字符串末尾被截断为列宽,并以“...”结尾,当用户调整列宽大小时,文本会添加字符。

我想要这种行为,但是在文本字符串的中间加上“...”,这样无论大小如何,用户都可以看到文本的第一部分和文本的结尾当前列的设置。

例如我的专栏当前截断了“this is a long piece of text larger than the column width” 至 “this is a long piece of text larger...

我想让它显示

"this is a long piece ... column width" 还可以让这个文本在列宽扩大时从中间展开,在列宽缩小时再次收缩。

关于如何在 RCP E4 应用程序中使用 Jface Tableviewer 实现此目的有什么想法吗?

如果我可以覆盖在文本字符串末尾截断文本的现有方法,那就太好了。

最后,我不得不在列标签提供程序中创建一个方法,该方法采用全文和列宽 - 测量列的当前宽度并采用标签提供程序中文本的长度并将其拆分根据列的宽度。随着列的扩展,substring1 和 substring 2 增长。将 substring1 放在头部,将 substring2 放在尾部,省略号在中间。它远非高效代码,但可以满足我们的目的。我向 Column 添加了一个 ControlListener 并执行了一个 @Override of controlResized(ControlEvent e) 方法,该方法将在调整列大小时刷新列所在的查看器。