2016-11-04 84 views
0

我有一个5列的JFace TableViewer。一列可能有一个长字符串。通过调用getText(Object element)方法在ColumnLabelProvider中设置此测试。JFace TableViewer截取并展开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有什么想法?

这将是很好,如果我可以覆盖现有的方法,其截断在文本字符串的结尾的文本。

+0

我认为这是通过桌面使用的任何本机控件完成的,并根据操作系统的不同而不同(例如macOS上不会发生这种情况)。这使得很难改变。你可以用OwnerDrawLabelProvider来完成 –

回答

0

最后,我必须创建列标签提供者这需要全文和列宽内的方法 - 测量列的当前宽度,并采取在标签提供者的文本的长度,并根据分割它到列的宽度。随着列扩展substring1和substring 2的增长。将substring1放在首位,substring2放在尾部,省略号放在中间。它远离高效代码,但适用于我们的目的。我向列添加了一个ControlListener,并执行了一个@Override的controlResized(ControlEvent e)方法,该方法将刷新列所在列的查看器。