eclipse XMLMultiPageEditorPart 的扩展 - 手动触发树视图刷新

extension of eclipse XMLMultiPageEditorPart - trigger refresh of tree-view manually

我正在开发一个 eclipse-plugin,它通过扩展 XMLMultiPageEditorPartXMLTableTreeView 通过扩展 XMLTableTreeViewer 使用自定义 XMLMultiPageEditor 第二个实现IResourceChangeListener.

我在 eclipse-mars 和 eclipse-neon 中提供了这个插件,但是有线行为只出现在 eclipse-neon 中。

到目前为止,编辑器工作正常,唯一的问题是,当用它打开相关的 xml-文档时,树视图是完全空白的:

我什至可以在源视图中修改文档并保存它..树视图保持空白。

使树视图栩栩如生的唯一事件是:

在那之后,树视图就可以正常工作了。如果我现在更改源视图中的 xml,树视图会立即更新。

关于如何手动触发树视图刷新的任何想法?

这可能是 eclipse-neon 中的错误吗?

XMLMultiPageEditorPartXMLTableTreeViewer 都在 internal 包中。这意味着它们 不是 Eclipse API 的一部分,Eclipse 开发人员可以在没有警告的情况下更改它们(请参阅 Eclipse API Rules of Engagement)。

Eclipse Mars 和 Neon 之间很可能发生了一些变化。您不能依赖内部 类 在不同版本之间工作相同。这不是 Eclipse 错误,因为您没有使用官方 API。

好的,问题似乎是,eclipse-neon 中 TreeViewer 的 x/y 大小是用 (0,0) 初始化的。这里有一个 hack 来解决这个问题:

...
public class MyXMLTableTreeViewer extends XMLTableTreeViewer implements IResourceChangeListener{
....

public MyXMLTableTreeViewer(Composite parent, IEditorPart parentEditor)
{
   super(parent);
   ....
   Point size = getControl().getSize();
   size.x = 1000;
   getControl().setSize(size);
}

似乎只将 x 设置为某个值就足够了...10 已经给出了图像,但是 "node" 部分看起来有点紧迫,所以我选择了 1000。

即使它只是内部的 API,对我来说也像是一个错误。因此,如果您有进一步的兴趣,请查看 eclipse bugreport